Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
cqt /
node_modules /
recharts /
umd /
[ HOME SHELL ]
Name
Size
Permission
Action
Recharts.js
491.16
KB
-rw-r--r--
Recharts.js.LICENSE.txt
324
B
-rw-r--r--
Recharts.js.map
1.64
MB
-rw-r--r--
report.html
340.38
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : Recharts.js.map
{"version":3,"file":"Recharts.js","mappings":"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,gBACA,iBACA,YACA,QACA,SACA,KACA,OACA,MACA,QACA,SACA,MACA,OACA,QAQA,SACA,QACA,OACA,WACA,eACA,aACA,WACA,oBACA,eACA,aACA,YACA,aACA,SACA,gBACA,gBACA,cACA,UACA,gBACA,gBACA,cACA,OACA,QACA,OACA,KACA,WACA,YACA,OACA,WACA,gBACA,WACA,qBACA,4BACA,eACA,iBACA,oBACA,mBACA,SACA,KACA,KACA,IACA,aACA,UACA,kBACA,YACA,UACA,UACA,mBACA,MACA,KACA,KACA,WACA,YACA,mBACA,MACA,WACA,4BACA,OACA,cACA,WACA,SACA,YACA,cACA,aACA,eACA,YACA,aACA,WACA,iBACA,cACA,YACA,cACA,aACA,SACA,OACA,KACA,KACA,KACA,KACA,YACA,6BACA,2BACA,WACA,oBACA,gBACA,UACA,YACA,eACA,OACA,cACA,iBACA,MACA,KACA,YACA,KACA,KACA,KACA,KACA,IACA,eACA,mBACA,UACA,YACA,aACA,WACA,eACA,gBACA,gBACA,oBACA,QACA,YACA,eACA,YACA,cACA,cACA,cACA,OACA,mBACA,YACA,eACA,OACA,aACA,SACA,UACA,WACA,QACA,SACA,cACA,SACA,WACA,mBACA,oBACA,aACA,UACA,aACA,sBACA,mBACA,eACA,gBACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,IACA,SACA,OACA,OACA,kBACA,cACA,YACA,qBACA,mBACA,UACA,SACA,SACA,KACA,KACA,OACA,iBACA,QACA,UACA,mBACA,mBACA,QACA,eACA,cACA,eACA,QACA,QACA,cACA,YACA,cACA,wBACA,yBACA,SACA,SACA,kBACA,mBACA,gBACA,iBACA,mBACA,gBACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,iBACA,aACA,gBACA,KACA,YACA,KACA,KACA,oBACA,qBACA,UACA,cACA,eACA,aACA,cACA,SACA,eACA,UACA,WACA,cACA,cACA,WACA,eACA,aACA,aACA,gBACA,SACA,cACA,cACA,KACA,KACA,IACA,mBACA,UACA,eACA,eACA,YACA,YACA,YACA,aACA,YACA,UACA,UACA,QACA,aACA,WACA,KACA,KACA,IACA,mBACA,IACA,aACA,MACA,MACA,SAGIC,EAAkB,CAAC,SAAU,cAMtBC,EAAkE,CAC7EC,IA/T2B,CAAC,UAAW,YAgUvCC,QAASH,EACTI,SAAUJ,GAGCK,EAAY,CACvB,0BACA,SACA,gBACA,QACA,eACA,UACA,iBACA,mBACA,0BACA,qBACA,4BACA,sBACA,6BACA,UACA,iBACA,SACA,gBACA,WACA,kBACA,gBACA,uBACA,UACA,iBACA,UACA,iBACA,WACA,kBACA,YACA,mBACA,SACA,gBACA,UACA,iBACA,YACA,mBACA,aACA,oBACA,UACA,iBACA,UACA,iBACA,YACA,mBACA,mBACA,0BACA,mBACA,0BACA,YACA,mBACA,cACA,qBACA,UACA,iBACA,eACA,sBACA,mBACA,0BACA,cACA,qBACA,UACA,iBACA,SACA,gBACA,YACA,mBACA,aACA,oBACA,eACA,sBACA,WACA,kBACA,YACA,mBACA,YACA,mBACA,YACA,mBACA,eACA,sBACA,iBACA,wBACA,YACA,mBACA,aACA,oBACA,UACA,iBACA,gBACA,uBACA,gBACA,uBACA,SACA,gBACA,YACA,mBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,SACA,gBACA,cACA,qBACA,eACA,eACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,YACA,mBACA,WACA,kBACA,gBACA,uBACA,aACA,oBACA,cACA,qBACA,eACA,sBACA,gBACA,uBACA,gBACA,uBACA,cACA,qBACA,kBACA,yBACA,iBACA,wBACA,iBACA,wBACA,gBACA,uBACA,eACA,sBACA,sBACA,6BACA,uBACA,8BACA,WACA,kBACA,UACA,iBACA,mBACA,0BACA,iBACA,wBACA,uBACA,8BACA,kBACA,0BAwLWC,EAAqB,SAChC3a,EACA4a,GAEA,IAAK5a,GAA0B,mBAAVA,GAAy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","sources":["webpack://Recharts/webpack/universalModuleDefinition","webpack://Recharts/./node_modules/decimal.js-light/decimal.js","webpack://Recharts/./node_modules/eventemitter3/index.js","webpack://Recharts/./node_modules/lodash/_DataView.js","webpack://Recharts/./node_modules/lodash/_Hash.js","webpack://Recharts/./node_modules/lodash/_ListCache.js","webpack://Recharts/./node_modules/lodash/_Map.js","webpack://Recharts/./node_modules/lodash/_MapCache.js","webpack://Recharts/./node_modules/lodash/_Promise.js","webpack://Recharts/./node_modules/lodash/_Set.js","webpack://Recharts/./node_modules/lodash/_SetCache.js","webpack://Recharts/./node_modules/lodash/_Stack.js","webpack://Recharts/./node_modules/lodash/_Symbol.js","webpack://Recharts/./node_modules/lodash/_Uint8Array.js","webpack://Recharts/./node_modules/lodash/_WeakMap.js","webpack://Recharts/./node_modules/lodash/_apply.js","webpack://Recharts/./node_modules/lodash/_arrayEach.js","webpack://Recharts/./node_modules/lodash/_arrayEvery.js","webpack://Recharts/./node_modules/lodash/_arrayFilter.js","webpack://Recharts/./node_modules/lodash/_arrayIncludes.js","webpack://Recharts/./node_modules/lodash/_arrayIncludesWith.js","webpack://Recharts/./node_modules/lodash/_arrayLikeKeys.js","webpack://Recharts/./node_modules/lodash/_arrayMap.js","webpack://Recharts/./node_modules/lodash/_arrayPush.js","webpack://Recharts/./node_modules/lodash/_arraySome.js","webpack://Recharts/./node_modules/lodash/_asciiToArray.js","webpack://Recharts/./node_modules/lodash/_assignValue.js","webpack://Recharts/./node_modules/lodash/_assocIndexOf.js","webpack://Recharts/./node_modules/lodash/_baseAssign.js","webpack://Recharts/./node_modules/lodash/_baseAssignIn.js","webpack://Recharts/./node_modules/lodash/_baseAssignValue.js","webpack://Recharts/./node_modules/lodash/_baseClone.js","webpack://Recharts/./node_modules/lodash/_baseCreate.js","webpack://Recharts/./node_modules/lodash/_baseEach.js","webpack://Recharts/./node_modules/lodash/_baseEvery.js","webpack://Recharts/./node_modules/lodash/_baseExtremum.js","webpack://Recharts/./node_modules/lodash/_baseFindIndex.js","webpack://Recharts/./node_modules/lodash/_baseFlatten.js","webpack://Recharts/./node_modules/lodash/_baseFor.js","webpack://Recharts/./node_modules/lodash/_baseForOwn.js","webpack://Recharts/./node_modules/lodash/_baseGet.js","webpack://Recharts/./node_modules/lodash/_baseGetAllKeys.js","webpack://Recharts/./node_modules/lodash/_baseGetTag.js","webpack://Recharts/./node_modules/lodash/_baseGt.js","webpack://Recharts/./node_modules/lodash/_baseHasIn.js","webpack://Recharts/./node_modules/lodash/_baseIndexOf.js","webpack://Recharts/./node_modules/lodash/_baseIsArguments.js","webpack://Recharts/./node_modules/lodash/_baseIsEqual.js","webpack://Recharts/./node_modules/lodash/_baseIsEqualDeep.js","webpack://Recharts/./node_modules/lodash/_baseIsMap.js","webpack://Recharts/./node_modules/lodash/_baseIsMatch.js","webpack://Recharts/./node_modules/lodash/_baseIsNaN.js","webpack://Recharts/./node_modules/lodash/_baseIsNative.js","webpack://Recharts/./node_modules/lodash/_baseIsSet.js","webpack://Recharts/./node_modules/lodash/_baseIsTypedArray.js","webpack://Recharts/./node_modules/lodash/_baseIteratee.js","webpack://Recharts/./node_modules/lodash/_baseKeys.js","webpack://Recharts/./node_modules/lodash/_baseKeysIn.js","webpack://Recharts/./node_modules/lodash/_baseLt.js","webpack://Recharts/./node_modules/lodash/_baseMap.js","webpack://Recharts/./node_modules/lodash/_baseMatches.js","webpack://Recharts/./node_modules/lodash/_baseMatchesProperty.js","webpack://Recharts/./node_modules/lodash/_baseOrderBy.js","webpack://Recharts/./node_modules/lodash/_baseProperty.js","webpack://Recharts/./node_modules/lodash/_basePropertyDeep.js","webpack://Recharts/./node_modules/lodash/_baseRange.js","webpack://Recharts/./node_modules/lodash/_baseRest.js","webpack://Recharts/./node_modules/lodash/_baseSetToString.js","webpack://Recharts/./node_modules/lodash/_baseSlice.js","webpack://Recharts/./node_modules/lodash/_baseSome.js","webpack://Recharts/./node_modules/lodash/_baseSortBy.js","webpack://Recharts/./node_modules/lodash/_baseSum.js","webpack://Recharts/./node_modules/lodash/_baseTimes.js","webpack://Recharts/./node_modules/lodash/_baseToString.js","webpack://Recharts/./node_modules/lodash/_baseTrim.js","webpack://Recharts/./node_modules/lodash/_baseUnary.js","webpack://Recharts/./node_modules/lodash/_baseUniq.js","webpack://Recharts/./node_modules/lodash/_baseUnset.js","webpack://Recharts/./node_modules/lodash/_cacheHas.js","webpack://Recharts/./node_modules/lodash/_castPath.js","webpack://Recharts/./node_modules/lodash/_castSlice.js","webpack://Recharts/./node_modules/lodash/_cloneArrayBuffer.js","webpack://Recharts/./node_modules/lodash/_cloneBuffer.js","webpack://Recharts/./node_modules/lodash/_cloneDataView.js","webpack://Recharts/./node_modules/lodash/_cloneRegExp.js","webpack://Recharts/./node_modules/lodash/_cloneSymbol.js","webpack://Recharts/./node_modules/lodash/_cloneTypedArray.js","webpack://Recharts/./node_modules/lodash/_compareAscending.js","webpack://Recharts/./node_modules/lodash/_compareMultiple.js","webpack://Recharts/./node_modules/lodash/_copyArray.js","webpack://Recharts/./node_modules/lodash/_copyObject.js","webpack://Recharts/./node_modules/lodash/_copySymbols.js","webpack://Recharts/./node_modules/lodash/_copySymbolsIn.js","webpack://Recharts/./node_modules/lodash/_coreJsData.js","webpack://Recharts/./node_modules/lodash/_createBaseEach.js","webpack://Recharts/./node_modules/lodash/_createBaseFor.js","webpack://Recharts/./node_modules/lodash/_createCaseFirst.js","webpack://Recharts/./node_modules/lodash/_createFind.js","webpack://Recharts/./node_modules/lodash/_createRange.js","webpack://Recharts/./node_modules/lodash/_createSet.js","webpack://Recharts/./node_modules/lodash/_customOmitClone.js","webpack://Recharts/./node_modules/lodash/_defineProperty.js","webpack://Recharts/./node_modules/lodash/_equalArrays.js","webpack://Recharts/./node_modules/lodash/_equalByTag.js","webpack://Recharts/./node_modules/lodash/_equalObjects.js","webpack://Recharts/./node_modules/lodash/_flatRest.js","webpack://Recharts/./node_modules/lodash/_freeGlobal.js","webpack://Recharts/./node_modules/lodash/_getAllKeys.js","webpack://Recharts/./node_modules/lodash/_getAllKeysIn.js","webpack://Recharts/./node_modules/lodash/_getMapData.js","webpack://Recharts/./node_modules/lodash/_getMatchData.js","webpack://Recharts/./node_modules/lodash/_getNative.js","webpack://Recharts/./node_modules/lodash/_getPrototype.js","webpack://Recharts/./node_modules/lodash/_getRawTag.js","webpack://Recharts/./node_modules/lodash/_getSymbols.js","webpack://Recharts/./node_modules/lodash/_getSymbolsIn.js","webpack://Recharts/./node_modules/lodash/_getTag.js","webpack://Recharts/./node_modules/lodash/_getValue.js","webpack://Recharts/./node_modules/lodash/_hasPath.js","webpack://Recharts/./node_modules/lodash/_hasUnicode.js","webpack://Recharts/./node_modules/lodash/_hashClear.js","webpack://Recharts/./node_modules/lodash/_hashDelete.js","webpack://Recharts/./node_modules/lodash/_hashGet.js","webpack://Recharts/./node_modules/lodash/_hashHas.js","webpack://Recharts/./node_modules/lodash/_hashSet.js","webpack://Recharts/./node_modules/lodash/_initCloneArray.js","webpack://Recharts/./node_modules/lodash/_initCloneByTag.js","webpack://Recharts/./node_modules/lodash/_initCloneObject.js","webpack://Recharts/./node_modules/lodash/_isFlattenable.js","webpack://Recharts/./node_modules/lodash/_isIndex.js","webpack://Recharts/./node_modules/lodash/_isIterateeCall.js","webpack://Recharts/./node_modules/lodash/_isKey.js","webpack://Recharts/./node_modules/lodash/_isKeyable.js","webpack://Recharts/./node_modules/lodash/_isMasked.js","webpack://Recharts/./node_modules/lodash/_isPrototype.js","webpack://Recharts/./node_modules/lodash/_isStrictComparable.js","webpack://Recharts/./node_modules/lodash/_listCacheClear.js","webpack://Recharts/./node_modules/lodash/_listCacheDelete.js","webpack://Recharts/./node_modules/lodash/_listCacheGet.js","webpack://Recharts/./node_modules/lodash/_listCacheHas.js","webpack://Recharts/./node_modules/lodash/_listCacheSet.js","webpack://Recharts/./node_modules/lodash/_mapCacheClear.js","webpack://Recharts/./node_modules/lodash/_mapCacheDelete.js","webpack://Recharts/./node_modules/lodash/_mapCacheGet.js","webpack://Recharts/./node_modules/lodash/_mapCacheHas.js","webpack://Recharts/./node_modules/lodash/_mapCacheSet.js","webpack://Recharts/./node_modules/lodash/_mapToArray.js","webpack://Recharts/./node_modules/lodash/_matchesStrictComparable.js","webpack://Recharts/./node_modules/lodash/_memoizeCapped.js","webpack://Recharts/./node_modules/lodash/_nativeCreate.js","webpack://Recharts/./node_modules/lodash/_nativeKeys.js","webpack://Recharts/./node_modules/lodash/_nativeKeysIn.js","webpack://Recharts/./node_modules/lodash/_nodeUtil.js","webpack://Recharts/./node_modules/lodash/_objectToString.js","webpack://Recharts/./node_modules/lodash/_overArg.js","webpack://Recharts/./node_modules/lodash/_overRest.js","webpack://Recharts/./node_modules/lodash/_parent.js","webpack://Recharts/./node_modules/lodash/_root.js","webpack://Recharts/./node_modules/lodash/_setCacheAdd.js","webpack://Recharts/./node_modules/lodash/_setCacheHas.js","webpack://Recharts/./node_modules/lodash/_setToArray.js","webpack://Recharts/./node_modules/lodash/_setToString.js","webpack://Recharts/./node_modules/lodash/_shortOut.js","webpack://Recharts/./node_modules/lodash/_stackClear.js","webpack://Recharts/./node_modules/lodash/_stackDelete.js","webpack://Recharts/./node_modules/lodash/_stackGet.js","webpack://Recharts/./node_modules/lodash/_stackHas.js","webpack://Recharts/./node_modules/lodash/_stackSet.js","webpack://Recharts/./node_modules/lodash/_strictIndexOf.js","webpack://Recharts/./node_modules/lodash/_stringToArray.js","webpack://Recharts/./node_modules/lodash/_stringToPath.js","webpack://Recharts/./node_modules/lodash/_toKey.js","webpack://Recharts/./node_modules/lodash/_toSource.js","webpack://Recharts/./node_modules/lodash/_trimmedEndIndex.js","webpack://Recharts/./node_modules/lodash/_unicodeToArray.js","webpack://Recharts/./node_modules/lodash/constant.js","webpack://Recharts/./node_modules/lodash/debounce.js","webpack://Recharts/./node_modules/lodash/eq.js","webpack://Recharts/./node_modules/lodash/every.js","webpack://Recharts/./node_modules/lodash/find.js","webpack://Recharts/./node_modules/lodash/findIndex.js","webpack://Recharts/./node_modules/lodash/first.js","webpack://Recharts/./node_modules/lodash/flatMap.js","webpack://Recharts/./node_modules/lodash/flatten.js","webpack://Recharts/./node_modules/lodash/get.js","webpack://Recharts/./node_modules/lodash/hasIn.js","webpack://Recharts/./node_modules/lodash/head.js","webpack://Recharts/./node_modules/lodash/identity.js","webpack://Recharts/./node_modules/lodash/isArguments.js","webpack://Recharts/./node_modules/lodash/isArray.js","webpack://Recharts/./node_modules/lodash/isArrayLike.js","webpack://Recharts/./node_modules/lodash/isBoolean.js","webpack://Recharts/./node_modules/lodash/isBuffer.js","webpack://Recharts/./node_modules/lodash/isEqual.js","webpack://Recharts/./node_modules/lodash/isFunction.js","webpack://Recharts/./node_modules/lodash/isLength.js","webpack://Recharts/./node_modules/lodash/isMap.js","webpack://Recharts/./node_modules/lodash/isNaN.js","webpack://Recharts/./node_modules/lodash/isNil.js","webpack://Recharts/./node_modules/lodash/isNumber.js","webpack://Recharts/./node_modules/lodash/isObject.js","webpack://Recharts/./node_modules/lodash/isObjectLike.js","webpack://Recharts/./node_modules/lodash/isPlainObject.js","webpack://Recharts/./node_modules/lodash/isSet.js","webpack://Recharts/./node_modules/lodash/isString.js","webpack://Recharts/./node_modules/lodash/isSymbol.js","webpack://Recharts/./node_modules/lodash/isTypedArray.js","webpack://Recharts/./node_modules/lodash/keys.js","webpack://Recharts/./node_modules/lodash/keysIn.js","webpack://Recharts/./node_modules/lodash/last.js","webpack://Recharts/./node_modules/lodash/map.js","webpack://Recharts/./node_modules/lodash/mapValues.js","webpack://Recharts/./node_modules/lodash/max.js","webpack://Recharts/./node_modules/lodash/maxBy.js","webpack://Recharts/./node_modules/lodash/memoize.js","webpack://Recharts/./node_modules/lodash/min.js","webpack://Recharts/./node_modules/lodash/minBy.js","webpack://Recharts/./node_modules/lodash/noop.js","webpack://Recharts/./node_modules/lodash/now.js","webpack://Recharts/./node_modules/lodash/omit.js","webpack://Recharts/./node_modules/lodash/property.js","webpack://Recharts/./node_modules/lodash/range.js","webpack://Recharts/./node_modules/lodash/some.js","webpack://Recharts/./node_modules/lodash/sortBy.js","webpack://Recharts/./node_modules/lodash/stubArray.js","webpack://Recharts/./node_modules/lodash/stubFalse.js","webpack://Recharts/./node_modules/lodash/sumBy.js","webpack://Recharts/./node_modules/lodash/throttle.js","webpack://Recharts/./node_modules/lodash/toFinite.js","webpack://Recharts/./node_modules/lodash/toInteger.js","webpack://Recharts/./node_modules/lodash/toNumber.js","webpack://Recharts/./node_modules/lodash/toString.js","webpack://Recharts/./node_modules/lodash/uniqBy.js","webpack://Recharts/./node_modules/lodash/upperFirst.js","webpack://Recharts/./node_modules/react-is/cjs/react-is.production.min.js","webpack://Recharts/./node_modules/react-is/index.js","webpack://Recharts/external umd {\"root\":\"PropTypes\",\"commonjs2\":\"prop-types\",\"commonjs\":\"prop-types\",\"amd\":\"prop-types\"}","webpack://Recharts/external umd {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack://Recharts/webpack/bootstrap","webpack://Recharts/webpack/runtime/compat get default export","webpack://Recharts/webpack/runtime/define property getters","webpack://Recharts/webpack/runtime/global","webpack://Recharts/webpack/runtime/hasOwnProperty shorthand","webpack://Recharts/webpack/runtime/make namespace object","webpack://Recharts/webpack/runtime/node module decorator","webpack://Recharts/./node_modules/clsx/dist/clsx.mjs","webpack://Recharts/./src/util/DataUtils.ts","webpack://Recharts/./src/util/ShallowEqual.ts","webpack://Recharts/./src/util/types.ts","webpack://Recharts/./src/util/ReactUtils.ts","webpack://Recharts/./src/container/Surface.tsx","webpack://Recharts/./src/container/Layer.tsx","webpack://Recharts/./src/util/LogUtils.ts","webpack://Recharts/./node_modules/d3-shape/src/math.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/circle.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/cross.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/diamond.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/square.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/star.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/triangle.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/wye.js","webpack://Recharts/./node_modules/d3-shape/src/constant.js","webpack://Recharts/./node_modules/d3-path/src/path.js","webpack://Recharts/./node_modules/d3-shape/src/path.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/asterisk.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/triangle2.js","webpack://Recharts/./src/shape/Symbols.tsx","webpack://Recharts/./node_modules/d3-shape/src/symbol.js","webpack://Recharts/./src/component/DefaultLegendContent.tsx","webpack://Recharts/./src/util/payload/getUniqPayload.ts","webpack://Recharts/./src/component/Legend.tsx","webpack://Recharts/./src/component/DefaultTooltipContent.tsx","webpack://Recharts/./src/util/tooltip/translate.ts","webpack://Recharts/./src/component/TooltipBoundingBox.tsx","webpack://Recharts/./src/util/Global.ts","webpack://Recharts/./src/component/Tooltip.tsx","webpack://Recharts/./src/component/ResponsiveContainer.tsx","webpack://Recharts/./src/component/Cell.tsx","webpack://Recharts/./src/util/DOMUtils.ts","webpack://Recharts/./src/util/ReduceCSSCalc.ts","webpack://Recharts/./src/component/Text.tsx","webpack://Recharts/./node_modules/d3-scale/src/init.js","webpack://Recharts/./node_modules/internmap/src/index.js","webpack://Recharts/./node_modules/d3-scale/src/ordinal.js","webpack://Recharts/./node_modules/d3-scale/src/band.js","webpack://Recharts/./node_modules/d3-array/src/range.js","webpack://Recharts/./node_modules/d3-array/src/ticks.js","webpack://Recharts/./node_modules/d3-array/src/ascending.js","webpack://Recharts/./node_modules/d3-array/src/descending.js","webpack://Recharts/./node_modules/d3-array/src/bisector.js","webpack://Recharts/./node_modules/d3-array/src/number.js","webpack://Recharts/./node_modules/d3-array/src/bisect.js","webpack://Recharts/./node_modules/d3-color/src/define.js","webpack://Recharts/./node_modules/d3-color/src/color.js","webpack://Recharts/./node_modules/d3-interpolate/src/basis.js","webpack://Recharts/./node_modules/d3-interpolate/src/constant.js","webpack://Recharts/./node_modules/d3-interpolate/src/color.js","webpack://Recharts/./node_modules/d3-interpolate/src/rgb.js","webpack://Recharts/./node_modules/d3-interpolate/src/basisClosed.js","webpack://Recharts/./node_modules/d3-interpolate/src/array.js","webpack://Recharts/./node_modules/d3-interpolate/src/date.js","webpack://Recharts/./node_modules/d3-interpolate/src/number.js","webpack://Recharts/./node_modules/d3-interpolate/src/object.js","webpack://Recharts/./node_modules/d3-interpolate/src/string.js","webpack://Recharts/./node_modules/d3-interpolate/src/numberArray.js","webpack://Recharts/./node_modules/d3-interpolate/src/value.js","webpack://Recharts/./node_modules/d3-interpolate/src/round.js","webpack://Recharts/./node_modules/d3-scale/src/number.js","webpack://Recharts/./node_modules/d3-scale/src/continuous.js","webpack://Recharts/./node_modules/d3-scale/src/constant.js","webpack://Recharts/./node_modules/d3-format/src/formatSpecifier.js","webpack://Recharts/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://Recharts/./node_modules/d3-format/src/formatDecimal.js","webpack://Recharts/./node_modules/d3-format/src/exponent.js","webpack://Recharts/./node_modules/d3-format/src/formatRounded.js","webpack://Recharts/./node_modules/d3-format/src/formatTypes.js","webpack://Recharts/./node_modules/d3-format/src/identity.js","webpack://Recharts/./node_modules/d3-format/src/locale.js","webpack://Recharts/./node_modules/d3-format/src/defaultLocale.js","webpack://Recharts/./node_modules/d3-format/src/formatGroup.js","webpack://Recharts/./node_modules/d3-format/src/formatNumerals.js","webpack://Recharts/./node_modules/d3-format/src/formatTrim.js","webpack://Recharts/./node_modules/d3-scale/src/tickFormat.js","webpack://Recharts/./node_modules/d3-format/src/precisionPrefix.js","webpack://Recharts/./node_modules/d3-format/src/precisionRound.js","webpack://Recharts/./node_modules/d3-format/src/precisionFixed.js","webpack://Recharts/./node_modules/d3-scale/src/linear.js","webpack://Recharts/./node_modules/d3-scale/src/identity.js","webpack://Recharts/./node_modules/d3-scale/src/nice.js","webpack://Recharts/./node_modules/d3-scale/src/log.js","webpack://Recharts/./node_modules/d3-scale/src/symlog.js","webpack://Recharts/./node_modules/d3-scale/src/pow.js","webpack://Recharts/./node_modules/d3-scale/src/radial.js","webpack://Recharts/./node_modules/d3-array/src/max.js","webpack://Recharts/./node_modules/d3-array/src/min.js","webpack://Recharts/./node_modules/d3-array/src/sort.js","webpack://Recharts/./node_modules/d3-array/src/quickselect.js","webpack://Recharts/./node_modules/d3-array/src/quantile.js","webpack://Recharts/./node_modules/d3-scale/src/quantile.js","webpack://Recharts/./node_modules/d3-scale/src/quantize.js","webpack://Recharts/./node_modules/d3-scale/src/threshold.js","webpack://Recharts/./node_modules/d3-time/src/duration.js","webpack://Recharts/./node_modules/d3-time/src/interval.js","webpack://Recharts/./node_modules/d3-time/src/millisecond.js","webpack://Recharts/./node_modules/d3-time/src/second.js","webpack://Recharts/./node_modules/d3-time/src/minute.js","webpack://Recharts/./node_modules/d3-time/src/hour.js","webpack://Recharts/./node_modules/d3-time/src/day.js","webpack://Recharts/./node_modules/d3-time/src/week.js","webpack://Recharts/./node_modules/d3-time/src/month.js","webpack://Recharts/./node_modules/d3-time/src/year.js","webpack://Recharts/./node_modules/d3-time/src/ticks.js","webpack://Recharts/./node_modules/d3-time-format/src/locale.js","webpack://Recharts/./node_modules/d3-time-format/src/defaultLocale.js","webpack://Recharts/./node_modules/d3-scale/src/time.js","webpack://Recharts/./node_modules/d3-scale/src/utcTime.js","webpack://Recharts/./node_modules/d3-scale/src/sequential.js","webpack://Recharts/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://Recharts/./node_modules/d3-scale/src/diverging.js","webpack://Recharts/./node_modules/d3-interpolate/src/piecewise.js","webpack://Recharts/./node_modules/d3-shape/src/offset/none.js","webpack://Recharts/./node_modules/d3-shape/src/array.js","webpack://Recharts/./node_modules/d3-shape/src/order/none.js","webpack://Recharts/./node_modules/d3-shape/src/stack.js","webpack://Recharts/./node_modules/recharts-scale/es6/util/utils.js","webpack://Recharts/./node_modules/recharts-scale/es6/util/arithmetic.js","webpack://Recharts/./node_modules/recharts-scale/es6/getNiceTickValues.js","webpack://Recharts/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js","webpack://Recharts/./src/cartesian/ErrorBar.tsx","webpack://Recharts/./src/util/getLegendProps.ts","webpack://Recharts/./src/util/ChartUtils.ts","webpack://Recharts/./node_modules/d3-shape/src/offset/expand.js","webpack://Recharts/./node_modules/d3-shape/src/offset/silhouette.js","webpack://Recharts/./node_modules/d3-shape/src/offset/wiggle.js","webpack://Recharts/./src/util/PolarUtils.ts","webpack://Recharts/./src/component/Label.tsx","webpack://Recharts/./src/component/LabelList.tsx","webpack://Recharts/./src/component/Customized.tsx","webpack://Recharts/./src/shape/Sector.tsx","webpack://Recharts/./node_modules/d3-shape/src/noop.js","webpack://Recharts/./node_modules/d3-shape/src/curve/basis.js","webpack://Recharts/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://Recharts/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://Recharts/./node_modules/d3-shape/src/curve/bump.js","webpack://Recharts/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://Recharts/./node_modules/d3-shape/src/curve/linear.js","webpack://Recharts/./node_modules/d3-shape/src/curve/monotone.js","webpack://Recharts/./node_modules/d3-shape/src/curve/natural.js","webpack://Recharts/./node_modules/d3-shape/src/curve/step.js","webpack://Recharts/./node_modules/d3-shape/src/point.js","webpack://Recharts/./node_modules/d3-shape/src/line.js","webpack://Recharts/./node_modules/d3-shape/src/area.js","webpack://Recharts/./src/shape/Curve.tsx","webpack://Recharts/./node_modules/fast-equals/dist/esm/index.mjs","webpack://Recharts/./node_modules/react-smooth/es6/setRafTimeout.js","webpack://Recharts/./node_modules/react-smooth/es6/AnimateManager.js","webpack://Recharts/./node_modules/react-smooth/es6/util.js","webpack://Recharts/./node_modules/react-smooth/es6/easing.js","webpack://Recharts/./node_modules/react-smooth/es6/configUpdate.js","webpack://Recharts/./node_modules/react-smooth/es6/Animate.js","webpack://Recharts/./node_modules/react-smooth/es6/index.js","webpack://Recharts/./src/shape/Rectangle.tsx","webpack://Recharts/./src/shape/Polygon.tsx","webpack://Recharts/./src/shape/Dot.tsx","webpack://Recharts/./src/shape/Cross.tsx","webpack://Recharts/./src/polar/PolarGrid.tsx","webpack://Recharts/./src/polar/PolarRadiusAxis.tsx","webpack://Recharts/./src/polar/PolarAngleAxis.tsx","webpack://Recharts/./src/shape/Trapezoid.tsx","webpack://Recharts/./src/util/ActiveShapeUtils.tsx","webpack://Recharts/./src/polar/Pie.tsx","webpack://Recharts/./src/polar/Radar.tsx","webpack://Recharts/./src/util/RadialBarUtils.tsx","webpack://Recharts/./src/polar/RadialBar.tsx","webpack://Recharts/./src/util/CssPrefixUtils.ts","webpack://Recharts/./src/cartesian/Brush.tsx","webpack://Recharts/./src/util/IfOverflowMatches.ts","webpack://Recharts/./src/util/BarUtils.tsx","webpack://Recharts/./src/cartesian/Bar.tsx","webpack://Recharts/./src/util/CartesianUtils.ts","webpack://Recharts/./src/util/calculateViewBox.ts","webpack://Recharts/./src/context/chartLayoutContext.tsx","webpack://Recharts/./src/cartesian/ReferenceLine.tsx","webpack://Recharts/./src/cartesian/ReferenceDot.tsx","webpack://Recharts/./src/cartesian/ReferenceArea.tsx","webpack://Recharts/./src/util/getEveryNthWithCondition.ts","webpack://Recharts/./src/util/TickUtils.ts","webpack://Recharts/./src/cartesian/getTicks.ts","webpack://Recharts/./src/cartesian/getEquidistantTicks.ts","webpack://Recharts/./src/cartesian/CartesianAxis.tsx","webpack://Recharts/./src/cartesian/CartesianGrid.tsx","webpack://Recharts/./src/cartesian/Line.tsx","webpack://Recharts/./src/cartesian/Area.tsx","webpack://Recharts/./src/cartesian/ZAxis.tsx","webpack://Recharts/./src/util/ScatterUtils.tsx","webpack://Recharts/./src/cartesian/Scatter.tsx","webpack://Recharts/./src/cartesian/XAxis.tsx","webpack://Recharts/./src/cartesian/YAxis.tsx","webpack://Recharts/./src/util/DetectReferenceElementsDomain.ts","webpack://Recharts/./src/util/Events.ts","webpack://Recharts/./src/chart/AccessibilityManager.ts","webpack://Recharts/./src/util/cursor/getRadialCursorPoints.ts","webpack://Recharts/./src/util/cursor/getCursorPoints.ts","webpack://Recharts/./src/component/Cursor.tsx","webpack://Recharts/./src/util/cursor/getCursorRectangle.ts","webpack://Recharts/./src/chart/generateCategoricalChart.tsx","webpack://Recharts/./src/util/isDomainSpecifiedByUser.ts","webpack://Recharts/./src/chart/LineChart.tsx","webpack://Recharts/./src/chart/BarChart.tsx","webpack://Recharts/./src/chart/PieChart.tsx","webpack://Recharts/./src/util/Constants.ts","webpack://Recharts/./src/chart/Treemap.tsx","webpack://Recharts/./src/chart/Sankey.tsx","webpack://Recharts/./src/chart/RadarChart.tsx","webpack://Recharts/./src/chart/ScatterChart.tsx","webpack://Recharts/./src/chart/AreaChart.tsx","webpack://Recharts/./src/chart/RadialBarChart.tsx","webpack://Recharts/./src/chart/ComposedChart.tsx","webpack://Recharts/./src/chart/SunburstChart.tsx","webpack://Recharts/./src/util/FunnelUtils.tsx","webpack://Recharts/./src/numberAxis/Funnel.tsx","webpack://Recharts/./src/chart/FunnelChart.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"prop-types\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"prop-types\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Recharts\"] = factory(require(\"react\"), require(\"prop-types\"));\n\telse\n\t\troot[\"Recharts\"] = factory(root[\"React\"], root[\"PropTypes\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__741__, __WEBPACK_EXTERNAL_MODULE__9660__) => {\nreturn ","/*! 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 `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\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 baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var 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 copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\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 Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\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 genTag = '[object GeneratorFunction]',\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 symbolTag = '[object Symbol]',\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 supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\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 getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\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 getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\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","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\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 `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\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","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\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 Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\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 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\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 * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\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","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\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 isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\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","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** 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 baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var 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 arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var 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","/** 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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\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 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/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\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","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var 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 baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\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","module.exports = require('./head');\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 baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","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 * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\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 baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\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 map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\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 baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\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 set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\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","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","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 baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\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","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\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 arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\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 baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\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 * @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","module.exports = __WEBPACK_EXTERNAL_MODULE__9660__;","module.exports = __WEBPACK_EXTERNAL_MODULE__741__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","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)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import isString from 'lodash/isString';\nimport isNan from 'lodash/isNaN';\nimport get from 'lodash/get';\nimport lodashIsNumber from 'lodash/isNumber';\nimport isNil from 'lodash/isNil';\n\nexport const mathSign = (value: number) => {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\n\nexport const isPercent = (value: string | number): value is `${number}%` =>\n isString(value) && value.indexOf('%') === value.length - 1;\n\nexport const isNumber = (value: unknown): value is number => lodashIsNumber(value) && !isNan(value);\n\nexport const isNullish = (value: unknown): value is null | undefined => isNil(value);\n\nexport const isNumOrStr = (value: unknown): value is number | string => isNumber(value as number) || isString(value);\n\nlet idCounter = 0;\nexport const uniqueId = (prefix?: string) => {\n const id = ++idCounter;\n\n return `${prefix || ''}${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 const getPercentValue = (percent: number | string, totalValue: number, defaultValue = 0, validate = false) => {\n if (!isNumber(percent as number) && !isString(percent)) {\n return defaultValue;\n }\n\n let value: number;\n\n if (isPercent(percent)) {\n const index = percent.indexOf('%');\n value = (totalValue * parseFloat((percent as string).slice(0, index))) / 100;\n } else {\n value = +percent;\n }\n\n if (isNan(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\n\nexport const getAnyElementOfObject = (obj: any) => {\n if (!obj) {\n return null;\n }\n\n const keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\n\nexport const hasDuplicate = (ary: Array<any>) => {\n if (!Array.isArray(ary)) {\n return false;\n }\n\n const len = ary.length;\n const cache: Record<string, boolean> = {};\n\n for (let i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport const interpolateNumber = (numberA: number, numberB: number) => {\n if (isNumber(numberA) && isNumber(numberB)) {\n return (t: number) => numberA + t * (numberB - numberA);\n }\n\n return () => numberB;\n};\n\nexport function findEntryInArray<T>(\n ary: Array<T>,\n specifiedKey: number | string | ((entry: T) => unknown),\n specifiedValue: unknown,\n) {\n if (!ary || !ary.length) {\n return null;\n }\n\n return ary.find(\n entry =>\n 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 const getLinearRegression = (data: Array<{ cx?: number; cy?: number }>) => {\n if (!data || !data.length) {\n return null;\n }\n\n const len = data.length;\n let xsum = 0;\n let ysum = 0;\n let xysum = 0;\n let xxsum = 0;\n let xmin = Infinity;\n let xmax = -Infinity;\n let xcurrent = 0;\n let ycurrent = 0;\n\n for (let i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n\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\n const a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n\n return {\n xmin,\n xmax,\n a,\n b: (ysum - a * xsum) / len,\n };\n};\n\n/**\n * Compare values.\n *\n * This function is intended to be passed to `Array.prototype.sort()`. It properly compares generic homogeneous arrays that are either `string[]`,\n * `number[]`, or `Date[]`. When comparing heterogeneous arrays or homogeneous arrays of other types, it will attempt to compare items properly but\n * will fall back to string comparison for mismatched or unsupported types.\n *\n * For some background, `Array.prototype.sort()`'s default comparator coerces each of the array's items into a string and compares the strings. This\n * often leads to undesirable behavior, especially with numerical items.\n *\n * @param {unknown} a The first item to compare\n * @param {unknown} b The second item to compare\n * @return {number} A negative number if a < b, a positive number if a > b, 0 if equal\n */\nexport const compareValues = (a: unknown, b: unknown): number => {\n if (isNumber(a) && isNumber(b)) {\n return a - b;\n }\n if (isString(a) && isString(b)) {\n return a.localeCompare(b);\n }\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() - b.getTime();\n }\n return String(a).localeCompare(String(b));\n};\n","export function shallowEqual(a: any, b: any) {\n /* eslint-disable no-restricted-syntax */\n for (const key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for (const key in b) {\n if ({}.hasOwnProperty.call(b, key) && !{}.hasOwnProperty.call(a, key)) {\n return false;\n }\n }\n return true;\n}\n","import {\n AnimationEvent,\n AriaAttributes,\n ClipboardEvent,\n Component,\n CompositionEvent,\n DragEvent,\n FocusEvent,\n FormEvent,\n FunctionComponent,\n isValidElement,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactElement,\n ReactNode,\n SVGProps,\n SyntheticEvent,\n TouchEvent,\n TransitionEvent,\n UIEvent,\n WheelEvent,\n JSX,\n} from 'react';\nimport isObject from 'lodash/isObject';\nimport { ScaleContinuousNumeric as D3ScaleContinuousNumeric } from 'victory-vendor/d3-scale';\nimport type { Props as XAxisProps } from '../cartesian/XAxis';\nimport type { Props as YAxisProps } from '../cartesian/YAxis';\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 */\nexport type StackOffsetType = 'sign' | 'expand' | 'none' | 'wiggle' | 'silhouette' | 'positive';\nexport type LayoutType = 'horizontal' | 'vertical' | 'centric' | 'radial';\nexport type PolarLayoutType = 'radial' | 'centric';\nexport type AxisType = 'xAxis' | 'yAxis' | 'zAxis' | 'angleAxis' | 'radiusAxis';\nexport type DataKey<T> = string | number | ((obj: T) => any);\nexport type PresentationAttributesWithProps<P, T> = AriaAttributes &\n DOMAttributesWithProps<P, T> &\n Omit<SVGProps<T>, keyof DOMAttributesWithProps<P, T>>;\nexport type PresentationAttributesAdaptChildEvent<P, T> = AriaAttributes &\n DOMAttributesAdaptChildEvent<P, T> &\n Omit<SVGProps<T>, keyof DOMAttributesAdaptChildEvent<P, T>>;\n\nexport type SymbolType = 'circle' | 'cross' | 'diamond' | 'square' | 'star' | 'triangle' | 'wye';\nexport type LegendType =\n | 'plainline'\n | 'line'\n | 'square'\n | 'rect'\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'star'\n | 'triangle'\n | 'wye'\n | 'none';\nexport type TooltipType = 'none';\n\nexport type AllowInDimension = {\n x?: boolean;\n y?: boolean;\n};\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface ChartCoordinate extends Coordinate {\n xAxis?: any;\n yAxis?: any;\n width?: any;\n height?: any;\n offset?: ChartOffset;\n angle?: number;\n radius?: number;\n cx?: number;\n cy?: number;\n startAngle?: number;\n endAngle?: number;\n innerRadius?: number;\n outerRadius?: number;\n}\n\nexport type ScaleType =\n | 'auto'\n | 'linear'\n | 'pow'\n | 'sqrt'\n | 'log'\n | 'identity'\n | 'time'\n | 'band'\n | 'point'\n | 'ordinal'\n | 'quantile'\n | 'quantize'\n | 'utc'\n | 'sequential'\n | 'threshold';\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\ntype EventHandler<P, E extends SyntheticEvent<any>> = {\n bivarianceHack(props: P, event: E): void;\n}['bivarianceHack'];\n\ntype ReactEventHandler<P, T = Element> = EventHandler<P, SyntheticEvent<T>>;\ntype ClipboardEventHandler<P, T = Element> = EventHandler<P, ClipboardEvent<T>>;\ntype CompositionEventHandler<P, T = Element> = EventHandler<P, CompositionEvent<T>>;\ntype DragEventHandler<P, T = Element> = EventHandler<P, DragEvent<T>>;\ntype FocusEventHandler<P, T = Element> = EventHandler<P, FocusEvent<T>>;\ntype FormEventHandler<P, T = Element> = EventHandler<P, FormEvent<T>>;\ntype KeyboardEventHandler<P, T = Element> = EventHandler<P, KeyboardEvent<T>>;\ntype MouseEventHandler<P, T = Element> = EventHandler<P, MouseEvent<T>>;\ntype TouchEventHandler<P, T = Element> = EventHandler<P, TouchEvent<T>>;\ntype PointerEventHandler<P, T = Element> = EventHandler<P, PointerEvent<T>>;\ntype UIEventHandler<P, T = Element> = EventHandler<P, UIEvent<T>>;\ntype WheelEventHandler<P, T = Element> = EventHandler<P, WheelEvent<T>>;\ntype AnimationEventHandler<P, T = Element> = EventHandler<P, AnimationEvent<T>>;\ntype TransitionEventHandler<P, T = Element> = EventHandler<P, TransitionEvent<T>>;\n\nexport interface DOMAttributesWithProps<P, T> {\n children?: ReactNode;\n dangerouslySetInnerHTML?: {\n __html: string;\n };\n\n // Clipboard Events\n onCopy?: ClipboardEventHandler<P, T>;\n onCopyCapture?: ClipboardEventHandler<P, T>;\n onCut?: ClipboardEventHandler<P, T>;\n onCutCapture?: ClipboardEventHandler<P, T>;\n onPaste?: ClipboardEventHandler<P, T>;\n onPasteCapture?: ClipboardEventHandler<P, T>;\n\n // Composition Events\n onCompositionEnd?: CompositionEventHandler<P, T>;\n onCompositionEndCapture?: CompositionEventHandler<P, T>;\n onCompositionStart?: CompositionEventHandler<P, T>;\n onCompositionStartCapture?: CompositionEventHandler<P, T>;\n onCompositionUpdate?: CompositionEventHandler<P, T>;\n onCompositionUpdateCapture?: CompositionEventHandler<P, T>;\n\n // Focus Events\n onFocus?: FocusEventHandler<P, T>;\n onFocusCapture?: FocusEventHandler<P, T>;\n onBlur?: FocusEventHandler<P, T>;\n onBlurCapture?: FocusEventHandler<P, T>;\n\n // Form Events\n onChange?: FormEventHandler<P, T>;\n onChangeCapture?: FormEventHandler<P, T>;\n onBeforeInput?: FormEventHandler<P, T>;\n onBeforeInputCapture?: FormEventHandler<P, T>;\n onInput?: FormEventHandler<P, T>;\n onInputCapture?: FormEventHandler<P, T>;\n onReset?: FormEventHandler<P, T>;\n onResetCapture?: FormEventHandler<P, T>;\n onSubmit?: FormEventHandler<P, T>;\n onSubmitCapture?: FormEventHandler<P, T>;\n onInvalid?: FormEventHandler<P, T>;\n onInvalidCapture?: FormEventHandler<P, T>;\n\n // Image Events\n onLoad?: ReactEventHandler<P, T>;\n onLoadCapture?: ReactEventHandler<P, T>;\n onError?: ReactEventHandler<P, T>; // also a Media Event\n onErrorCapture?: ReactEventHandler<P, T>; // also a Media Event\n\n // Keyboard Events\n onKeyDown?: KeyboardEventHandler<P, T>;\n onKeyDownCapture?: KeyboardEventHandler<P, T>;\n onKeyPress?: KeyboardEventHandler<P, T>;\n onKeyPressCapture?: KeyboardEventHandler<P, T>;\n onKeyUp?: KeyboardEventHandler<P, T>;\n onKeyUpCapture?: KeyboardEventHandler<P, T>;\n\n // Media Events\n onAbort?: ReactEventHandler<P, T>;\n onAbortCapture?: ReactEventHandler<P, T>;\n onCanPlay?: ReactEventHandler<P, T>;\n onCanPlayCapture?: ReactEventHandler<P, T>;\n onCanPlayThrough?: ReactEventHandler<P, T>;\n onCanPlayThroughCapture?: ReactEventHandler<P, T>;\n onDurationChange?: ReactEventHandler<P, T>;\n onDurationChangeCapture?: ReactEventHandler<P, T>;\n onEmptied?: ReactEventHandler<P, T>;\n onEmptiedCapture?: ReactEventHandler<P, T>;\n onEncrypted?: ReactEventHandler<P, T>;\n onEncryptedCapture?: ReactEventHandler<P, T>;\n onEnded?: ReactEventHandler<P, T>;\n onEndedCapture?: ReactEventHandler<P, T>;\n onLoadedData?: ReactEventHandler<P, T>;\n onLoadedDataCapture?: ReactEventHandler<P, T>;\n onLoadedMetadata?: ReactEventHandler<P, T>;\n onLoadedMetadataCapture?: ReactEventHandler<P, T>;\n onLoadStart?: ReactEventHandler<P, T>;\n onLoadStartCapture?: ReactEventHandler<P, T>;\n onPause?: ReactEventHandler<P, T>;\n onPauseCapture?: ReactEventHandler<P, T>;\n onPlay?: ReactEventHandler<P, T>;\n onPlayCapture?: ReactEventHandler<P, T>;\n onPlaying?: ReactEventHandler<P, T>;\n onPlayingCapture?: ReactEventHandler<P, T>;\n onProgress?: ReactEventHandler<P, T>;\n onProgressCapture?: ReactEventHandler<P, T>;\n onRateChange?: ReactEventHandler<P, T>;\n onRateChangeCapture?: ReactEventHandler<P, T>;\n onSeeked?: ReactEventHandler<P, T>;\n onSeekedCapture?: ReactEventHandler<P, T>;\n onSeeking?: ReactEventHandler<P, T>;\n onSeekingCapture?: ReactEventHandler<P, T>;\n onStalled?: ReactEventHandler<P, T>;\n onStalledCapture?: ReactEventHandler<P, T>;\n onSuspend?: ReactEventHandler<P, T>;\n onSuspendCapture?: ReactEventHandler<P, T>;\n onTimeUpdate?: ReactEventHandler<P, T>;\n onTimeUpdateCapture?: ReactEventHandler<P, T>;\n onVolumeChange?: ReactEventHandler<P, T>;\n onVolumeChangeCapture?: ReactEventHandler<P, T>;\n onWaiting?: ReactEventHandler<P, T>;\n onWaitingCapture?: ReactEventHandler<P, T>;\n\n // MouseEvents\n onAuxClick?: MouseEventHandler<P, T>;\n onAuxClickCapture?: MouseEventHandler<P, T>;\n onClick?: MouseEventHandler<P, T>;\n onClickCapture?: MouseEventHandler<P, T>;\n onContextMenu?: MouseEventHandler<P, T>;\n onContextMenuCapture?: MouseEventHandler<P, T>;\n onDoubleClick?: MouseEventHandler<P, T>;\n onDoubleClickCapture?: MouseEventHandler<P, T>;\n onDrag?: DragEventHandler<P, T>;\n onDragCapture?: DragEventHandler<P, T>;\n onDragEnd?: DragEventHandler<P, T>;\n onDragEndCapture?: DragEventHandler<P, T>;\n onDragEnter?: DragEventHandler<P, T>;\n onDragEnterCapture?: DragEventHandler<P, T>;\n onDragExit?: DragEventHandler<P, T>;\n onDragExitCapture?: DragEventHandler<P, T>;\n onDragLeave?: DragEventHandler<P, T>;\n onDragLeaveCapture?: DragEventHandler<P, T>;\n onDragOver?: DragEventHandler<P, T>;\n onDragOverCapture?: DragEventHandler<P, T>;\n onDragStart?: DragEventHandler<P, T>;\n onDragStartCapture?: DragEventHandler<P, T>;\n onDrop?: DragEventHandler<P, T>;\n onDropCapture?: DragEventHandler<P, T>;\n onMouseDown?: MouseEventHandler<P, T>;\n onMouseDownCapture?: MouseEventHandler<P, T>;\n onMouseEnter?: MouseEventHandler<P, T>;\n onMouseLeave?: MouseEventHandler<P, T>;\n onMouseMove?: MouseEventHandler<P, T>;\n onMouseMoveCapture?: MouseEventHandler<P, T>;\n onMouseOut?: MouseEventHandler<P, T>;\n onMouseOutCapture?: MouseEventHandler<P, T>;\n onMouseOver?: MouseEventHandler<P, T>;\n onMouseOverCapture?: MouseEventHandler<P, T>;\n onMouseUp?: MouseEventHandler<P, T>;\n onMouseUpCapture?: MouseEventHandler<P, T>;\n\n // Selection Events\n onSelect?: ReactEventHandler<P, T>;\n onSelectCapture?: ReactEventHandler<P, T>;\n\n // Touch Events\n onTouchCancel?: TouchEventHandler<P, T>;\n onTouchCancelCapture?: TouchEventHandler<P, T>;\n onTouchEnd?: TouchEventHandler<P, T>;\n onTouchEndCapture?: TouchEventHandler<P, T>;\n onTouchMove?: TouchEventHandler<P, T>;\n onTouchMoveCapture?: TouchEventHandler<P, T>;\n onTouchStart?: TouchEventHandler<P, T>;\n onTouchStartCapture?: TouchEventHandler<P, T>;\n\n // Pointer Events\n onPointerDown?: PointerEventHandler<P, T>;\n onPointerDownCapture?: PointerEventHandler<P, T>;\n onPointerMove?: PointerEventHandler<P, T>;\n onPointerMoveCapture?: PointerEventHandler<P, T>;\n onPointerUp?: PointerEventHandler<P, T>;\n onPointerUpCapture?: PointerEventHandler<P, T>;\n onPointerCancel?: PointerEventHandler<P, T>;\n onPointerCancelCapture?: PointerEventHandler<P, T>;\n onPointerEnter?: PointerEventHandler<P, T>;\n onPointerEnterCapture?: PointerEventHandler<P, T>;\n onPointerLeave?: PointerEventHandler<P, T>;\n onPointerLeaveCapture?: PointerEventHandler<P, T>;\n onPointerOver?: PointerEventHandler<P, T>;\n onPointerOverCapture?: PointerEventHandler<P, T>;\n onPointerOut?: PointerEventHandler<P, T>;\n onPointerOutCapture?: PointerEventHandler<P, T>;\n onGotPointerCapture?: PointerEventHandler<P, T>;\n onGotPointerCaptureCapture?: PointerEventHandler<P, T>;\n onLostPointerCapture?: PointerEventHandler<P, T>;\n onLostPointerCaptureCapture?: PointerEventHandler<P, T>;\n\n // UI Events\n onScroll?: UIEventHandler<P, T>;\n onScrollCapture?: UIEventHandler<P, T>;\n\n // Wheel Events\n onWheel?: WheelEventHandler<P, T>;\n onWheelCapture?: WheelEventHandler<P, T>;\n\n // Animation Events\n onAnimationStart?: AnimationEventHandler<P, T>;\n onAnimationStartCapture?: AnimationEventHandler<P, T>;\n onAnimationEnd?: AnimationEventHandler<P, T>;\n onAnimationEndCapture?: AnimationEventHandler<P, T>;\n onAnimationIteration?: AnimationEventHandler<P, T>;\n onAnimationIterationCapture?: AnimationEventHandler<P, T>;\n\n // Transition Events\n onTransitionEnd?: TransitionEventHandler<P, T>;\n onTransitionEndCapture?: TransitionEventHandler<P, T>;\n}\n\ntype AdaptChildEventHandler<P, E extends SyntheticEvent<any>> = {\n bivarianceHack(data: P, index: number, event: E): void;\n}['bivarianceHack'];\n\ntype AdaptChildReactEventHandler<P, T = Element> = AdaptChildEventHandler<P, SyntheticEvent<T>>;\ntype AdaptChildClipboardEventHandler<P, T = Element> = AdaptChildEventHandler<P, ClipboardEvent<T>>;\ntype AdaptChildCompositionEventHandler<P, T = Element> = AdaptChildEventHandler<P, CompositionEvent<T>>;\ntype AdaptChildDragEventHandler<P, T = Element> = AdaptChildEventHandler<P, DragEvent<T>>;\ntype AdaptChildFocusEventHandler<P, T = Element> = AdaptChildEventHandler<P, FocusEvent<T>>;\ntype AdaptChildFormEventHandler<P, T = Element> = AdaptChildEventHandler<P, FormEvent<T>>;\ntype AdaptChildKeyboardEventHandler<P, T = Element> = AdaptChildEventHandler<P, KeyboardEvent<T>>;\ntype AdaptChildMouseEventHandler<P, T = Element> = AdaptChildEventHandler<P, MouseEvent<T>>;\ntype AdaptChildTouchEventHandler<P, T = Element> = AdaptChildEventHandler<P, TouchEvent<T>>;\ntype AdaptChildPointerEventHandler<P, T = Element> = AdaptChildEventHandler<P, PointerEvent<T>>;\ntype AdaptChildUIEventHandler<P, T = Element> = AdaptChildEventHandler<P, UIEvent<T>>;\ntype AdaptChildWheelEventHandler<P, T = Element> = AdaptChildEventHandler<P, WheelEvent<T>>;\ntype AdaptChildAnimationEventHandler<P, T = Element> = AdaptChildEventHandler<P, AnimationEvent<T>>;\ntype AdaptChildTransitionEventHandler<P, T = Element> = AdaptChildEventHandler<P, TransitionEvent<T>>;\n\nexport type DOMAttributesAdaptChildEvent<P, T> = {\n children?: ReactNode;\n dangerouslySetInnerHTML?: {\n __html: string;\n };\n\n // Clipboard Events\n onCopy?: AdaptChildClipboardEventHandler<P, T>;\n onCopyCapture?: AdaptChildClipboardEventHandler<P, T>;\n onCut?: AdaptChildClipboardEventHandler<P, T>;\n onCutCapture?: AdaptChildClipboardEventHandler<P, T>;\n onPaste?: AdaptChildClipboardEventHandler<P, T>;\n onPasteCapture?: AdaptChildClipboardEventHandler<P, T>;\n\n // Composition Events\n onCompositionEnd?: AdaptChildCompositionEventHandler<P, T>;\n onCompositionEndCapture?: AdaptChildCompositionEventHandler<P, T>;\n onCompositionStart?: AdaptChildCompositionEventHandler<P, T>;\n onCompositionStartCapture?: AdaptChildCompositionEventHandler<P, T>;\n onCompositionUpdate?: AdaptChildCompositionEventHandler<P, T>;\n onCompositionUpdateCapture?: AdaptChildCompositionEventHandler<P, T>;\n\n // Focus Events\n onFocus?: AdaptChildFocusEventHandler<P, T>;\n onFocusCapture?: AdaptChildFocusEventHandler<P, T>;\n onBlur?: AdaptChildFocusEventHandler<P, T>;\n onBlurCapture?: AdaptChildFocusEventHandler<P, T>;\n\n // Form Events\n onChange?: AdaptChildFormEventHandler<P, T>;\n onChangeCapture?: AdaptChildFormEventHandler<P, T>;\n onBeforeInput?: AdaptChildFormEventHandler<P, T>;\n onBeforeInputCapture?: AdaptChildFormEventHandler<P, T>;\n onInput?: AdaptChildFormEventHandler<P, T>;\n onInputCapture?: AdaptChildFormEventHandler<P, T>;\n onReset?: AdaptChildFormEventHandler<P, T>;\n onResetCapture?: AdaptChildFormEventHandler<P, T>;\n onSubmit?: AdaptChildFormEventHandler<P, T>;\n onSubmitCapture?: AdaptChildFormEventHandler<P, T>;\n onInvalid?: AdaptChildFormEventHandler<P, T>;\n onInvalidCapture?: AdaptChildFormEventHandler<P, T>;\n\n // Image Events\n onLoad?: AdaptChildReactEventHandler<P, T>;\n onLoadCapture?: AdaptChildReactEventHandler<P, T>;\n onError?: AdaptChildReactEventHandler<P, T>; // also a Media Event\n onErrorCapture?: AdaptChildReactEventHandler<P, T>; // also a Media Event\n\n // Keyboard Events\n onKeyDown?: AdaptChildKeyboardEventHandler<P, T>;\n onKeyDownCapture?: AdaptChildKeyboardEventHandler<P, T>;\n onKeyPress?: AdaptChildKeyboardEventHandler<P, T>;\n onKeyPressCapture?: AdaptChildKeyboardEventHandler<P, T>;\n onKeyUp?: AdaptChildKeyboardEventHandler<P, T>;\n onKeyUpCapture?: AdaptChildKeyboardEventHandler<P, T>;\n\n // Media Events\n onAbort?: AdaptChildReactEventHandler<P, T>;\n onAbortCapture?: AdaptChildReactEventHandler<P, T>;\n onCanPlay?: AdaptChildReactEventHandler<P, T>;\n onCanPlayCapture?: AdaptChildReactEventHandler<P, T>;\n onCanPlayThrough?: AdaptChildReactEventHandler<P, T>;\n onCanPlayThroughCapture?: AdaptChildReactEventHandler<P, T>;\n onDurationChange?: AdaptChildReactEventHandler<P, T>;\n onDurationChangeCapture?: AdaptChildReactEventHandler<P, T>;\n onEmptied?: AdaptChildReactEventHandler<P, T>;\n onEmptiedCapture?: AdaptChildReactEventHandler<P, T>;\n onEncrypted?: AdaptChildReactEventHandler<P, T>;\n onEncryptedCapture?: AdaptChildReactEventHandler<P, T>;\n onEnded?: AdaptChildReactEventHandler<P, T>;\n onEndedCapture?: AdaptChildReactEventHandler<P, T>;\n onLoadedData?: AdaptChildReactEventHandler<P, T>;\n onLoadedDataCapture?: AdaptChildReactEventHandler<P, T>;\n onLoadedMetadata?: AdaptChildReactEventHandler<P, T>;\n onLoadedMetadataCapture?: AdaptChildReactEventHandler<P, T>;\n onLoadStart?: AdaptChildReactEventHandler<P, T>;\n onLoadStartCapture?: AdaptChildReactEventHandler<P, T>;\n onPause?: AdaptChildReactEventHandler<P, T>;\n onPauseCapture?: AdaptChildReactEventHandler<P, T>;\n onPlay?: AdaptChildReactEventHandler<P, T>;\n onPlayCapture?: AdaptChildReactEventHandler<P, T>;\n onPlaying?: AdaptChildReactEventHandler<P, T>;\n onPlayingCapture?: AdaptChildReactEventHandler<P, T>;\n onProgress?: AdaptChildReactEventHandler<P, T>;\n onProgressCapture?: AdaptChildReactEventHandler<P, T>;\n onRateChange?: AdaptChildReactEventHandler<P, T>;\n onRateChangeCapture?: AdaptChildReactEventHandler<P, T>;\n onSeeked?: AdaptChildReactEventHandler<P, T>;\n onSeekedCapture?: AdaptChildReactEventHandler<P, T>;\n onSeeking?: AdaptChildReactEventHandler<P, T>;\n onSeekingCapture?: AdaptChildReactEventHandler<P, T>;\n onStalled?: AdaptChildReactEventHandler<P, T>;\n onStalledCapture?: AdaptChildReactEventHandler<P, T>;\n onSuspend?: AdaptChildReactEventHandler<P, T>;\n onSuspendCapture?: AdaptChildReactEventHandler<P, T>;\n onTimeUpdate?: AdaptChildReactEventHandler<P, T>;\n onTimeUpdateCapture?: AdaptChildReactEventHandler<P, T>;\n onVolumeChange?: AdaptChildReactEventHandler<P, T>;\n onVolumeChangeCapture?: AdaptChildReactEventHandler<P, T>;\n onWaiting?: AdaptChildReactEventHandler<P, T>;\n onWaitingCapture?: AdaptChildReactEventHandler<P, T>;\n\n // MouseEvents\n onAuxClick?: AdaptChildMouseEventHandler<P, T>;\n onAuxClickCapture?: AdaptChildMouseEventHandler<P, T>;\n onClick?: AdaptChildMouseEventHandler<P, T>;\n onClickCapture?: AdaptChildMouseEventHandler<P, T>;\n onContextMenu?: AdaptChildMouseEventHandler<P, T>;\n onContextMenuCapture?: AdaptChildMouseEventHandler<P, T>;\n onDoubleClick?: AdaptChildMouseEventHandler<P, T>;\n onDoubleClickCapture?: AdaptChildMouseEventHandler<P, T>;\n onDrag?: AdaptChildDragEventHandler<P, T>;\n onDragCapture?: AdaptChildDragEventHandler<P, T>;\n onDragEnd?: AdaptChildDragEventHandler<P, T>;\n onDragEndCapture?: AdaptChildDragEventHandler<P, T>;\n onDragEnter?: AdaptChildDragEventHandler<P, T>;\n onDragEnterCapture?: AdaptChildDragEventHandler<P, T>;\n onDragExit?: AdaptChildDragEventHandler<P, T>;\n onDragExitCapture?: AdaptChildDragEventHandler<P, T>;\n onDragLeave?: AdaptChildDragEventHandler<P, T>;\n onDragLeaveCapture?: AdaptChildDragEventHandler<P, T>;\n onDragOver?: AdaptChildDragEventHandler<P, T>;\n onDragOverCapture?: AdaptChildDragEventHandler<P, T>;\n onDragStart?: AdaptChildDragEventHandler<P, T>;\n onDragStartCapture?: AdaptChildDragEventHandler<P, T>;\n onDrop?: AdaptChildDragEventHandler<P, T>;\n onDropCapture?: AdaptChildDragEventHandler<P, T>;\n onMouseDown?: AdaptChildMouseEventHandler<P, T>;\n onMouseDownCapture?: AdaptChildMouseEventHandler<P, T>;\n onMouseEnter?: AdaptChildMouseEventHandler<P, T>;\n onMouseLeave?: AdaptChildMouseEventHandler<P, T>;\n onMouseMove?: AdaptChildMouseEventHandler<P, T>;\n onMouseMoveCapture?: AdaptChildMouseEventHandler<P, T>;\n onMouseOut?: AdaptChildMouseEventHandler<P, T>;\n onMouseOutCapture?: AdaptChildMouseEventHandler<P, T>;\n onMouseOver?: AdaptChildMouseEventHandler<P, T>;\n onMouseOverCapture?: AdaptChildMouseEventHandler<P, T>;\n onMouseUp?: AdaptChildMouseEventHandler<P, T>;\n onMouseUpCapture?: AdaptChildMouseEventHandler<P, T>;\n\n // Selection Events\n onSelect?: AdaptChildReactEventHandler<P, T>;\n onSelectCapture?: AdaptChildReactEventHandler<P, T>;\n\n // Touch Events\n onTouchCancel?: AdaptChildTouchEventHandler<P, T>;\n onTouchCancelCapture?: AdaptChildTouchEventHandler<P, T>;\n onTouchEnd?: AdaptChildTouchEventHandler<P, T>;\n onTouchEndCapture?: AdaptChildTouchEventHandler<P, T>;\n onTouchMove?: AdaptChildTouchEventHandler<P, T>;\n onTouchMoveCapture?: AdaptChildTouchEventHandler<P, T>;\n onTouchStart?: AdaptChildTouchEventHandler<P, T>;\n onTouchStartCapture?: AdaptChildTouchEventHandler<P, T>;\n\n // Pointer Events\n onPointerDown?: AdaptChildPointerEventHandler<P, T>;\n onPointerDownCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerMove?: AdaptChildPointerEventHandler<P, T>;\n onPointerMoveCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerUp?: AdaptChildPointerEventHandler<P, T>;\n onPointerUpCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerCancel?: AdaptChildPointerEventHandler<P, T>;\n onPointerCancelCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerEnter?: AdaptChildPointerEventHandler<P, T>;\n onPointerEnterCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerLeave?: AdaptChildPointerEventHandler<P, T>;\n onPointerLeaveCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerOver?: AdaptChildPointerEventHandler<P, T>;\n onPointerOverCapture?: AdaptChildPointerEventHandler<P, T>;\n onPointerOut?: AdaptChildPointerEventHandler<P, T>;\n onPointerOutCapture?: AdaptChildPointerEventHandler<P, T>;\n onGotPointerCapture?: AdaptChildPointerEventHandler<P, T>;\n onGotPointerCaptureCapture?: AdaptChildPointerEventHandler<P, T>;\n onLostPointerCapture?: AdaptChildPointerEventHandler<P, T>;\n onLostPointerCaptureCapture?: AdaptChildPointerEventHandler<P, T>;\n\n // UI Events\n onScroll?: AdaptChildUIEventHandler<P, T>;\n onScrollCapture?: AdaptChildUIEventHandler<P, T>;\n\n // Wheel Events\n onWheel?: AdaptChildWheelEventHandler<P, T>;\n onWheelCapture?: AdaptChildWheelEventHandler<P, T>;\n\n // Animation Events\n onAnimationStart?: AdaptChildAnimationEventHandler<P, T>;\n onAnimationStartCapture?: AdaptChildAnimationEventHandler<P, T>;\n onAnimationEnd?: AdaptChildAnimationEventHandler<P, T>;\n onAnimationEndCapture?: AdaptChildAnimationEventHandler<P, T>;\n onAnimationIteration?: AdaptChildAnimationEventHandler<P, T>;\n onAnimationIterationCapture?: AdaptChildAnimationEventHandler<P, T>;\n\n // Transition Events\n onTransitionEnd?: AdaptChildTransitionEventHandler<P, T>;\n onTransitionEndCapture?: AdaptChildTransitionEventHandler<P, T>;\n};\n\nconst SVGContainerPropKeys = ['viewBox', 'children'];\nexport const SVGElementPropKeys = [\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-modal',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n 'className',\n 'color',\n 'height',\n 'id',\n 'lang',\n 'max',\n 'media',\n 'method',\n 'min',\n 'name',\n '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',\n 'width',\n 'role',\n 'tabIndex',\n 'accentHeight',\n 'accumulate',\n 'additive',\n 'alignmentBaseline',\n 'allowReorder',\n 'alphabetic',\n 'amplitude',\n 'arabicForm',\n 'ascent',\n 'attributeName',\n 'attributeType',\n 'autoReverse',\n 'azimuth',\n 'baseFrequency',\n 'baselineShift',\n 'baseProfile',\n 'bbox',\n 'begin',\n 'bias',\n 'by',\n 'calcMode',\n 'capHeight',\n 'clip',\n 'clipPath',\n 'clipPathUnits',\n 'clipRule',\n 'colorInterpolation',\n 'colorInterpolationFilters',\n 'colorProfile',\n 'colorRendering',\n 'contentScriptType',\n 'contentStyleType',\n 'cursor',\n 'cx',\n 'cy',\n 'd',\n 'decelerate',\n 'descent',\n 'diffuseConstant',\n 'direction',\n 'display',\n 'divisor',\n 'dominantBaseline',\n 'dur',\n 'dx',\n 'dy',\n 'edgeMode',\n 'elevation',\n 'enableBackground',\n 'end',\n 'exponent',\n 'externalResourcesRequired',\n 'fill',\n 'fillOpacity',\n 'fillRule',\n 'filter',\n 'filterRes',\n 'filterUnits',\n 'floodColor',\n 'floodOpacity',\n 'focusable',\n 'fontFamily',\n 'fontSize',\n 'fontSizeAdjust',\n 'fontStretch',\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'format',\n 'from',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyphName',\n 'glyphOrientationHorizontal',\n 'glyphOrientationVertical',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'hanging',\n 'horizAdvX',\n 'horizOriginX',\n 'href',\n 'ideographic',\n 'imageRendering',\n 'in2',\n 'in',\n 'intercept',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'k',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'kerning',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'letterSpacing',\n 'lightingColor',\n 'limitingConeAngle',\n 'local',\n 'markerEnd',\n 'markerHeight',\n 'markerMid',\n 'markerStart',\n 'markerUnits',\n 'markerWidth',\n 'mask',\n 'maskContentUnits',\n 'maskUnits',\n 'mathematical',\n 'mode',\n 'numOctaves',\n 'offset',\n 'opacity',\n 'operator',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'overlinePosition',\n 'overlineThickness',\n 'paintOrder',\n 'panose1',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointerEvents',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'r',\n 'radius',\n 'refX',\n 'refY',\n 'renderingIntent',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'restart',\n 'result',\n 'rotate',\n 'rx',\n 'ry',\n 'seed',\n 'shapeRendering',\n 'slope',\n 'spacing',\n 'specularConstant',\n 'specularExponent',\n 'speed',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stemh',\n 'stemv',\n 'stitchTiles',\n 'stopColor',\n 'stopOpacity',\n 'strikethroughPosition',\n 'strikethroughThickness',\n 'string',\n 'stroke',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeMiterlimit',\n 'strokeOpacity',\n 'strokeWidth',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textAnchor',\n 'textDecoration',\n 'textLength',\n 'textRendering',\n 'to',\n 'transform',\n 'u1',\n 'u2',\n 'underlinePosition',\n 'underlineThickness',\n 'unicode',\n 'unicodeBidi',\n 'unicodeRange',\n 'unitsPerEm',\n 'vAlphabetic',\n 'values',\n 'vectorEffect',\n 'version',\n 'vertAdvY',\n 'vertOriginX',\n 'vertOriginY',\n 'vHanging',\n 'vIdeographic',\n 'viewTarget',\n 'visibility',\n 'vMathematical',\n 'widths',\n 'wordSpacing',\n 'writingMode',\n 'x1',\n 'x2',\n 'x',\n 'xChannelSelector',\n 'xHeight',\n 'xlinkActuate',\n 'xlinkArcrole',\n 'xlinkHref',\n 'xlinkRole',\n 'xlinkShow',\n 'xlinkTitle',\n 'xlinkType',\n 'xmlBase',\n 'xmlLang',\n 'xmlns',\n 'xmlnsXlink',\n 'xmlSpace',\n 'y1',\n 'y2',\n 'y',\n 'yChannelSelector',\n 'z',\n 'zoomAndPan',\n 'ref',\n 'key',\n 'angle',\n];\n\nconst PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\nexport type FilteredSvgElementType = 'svg' | 'polyline' | 'polygon';\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport const FilteredElementKeyMap: Record<FilteredSvgElementType, string[]> = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys,\n};\n\nexport const EventKeys = [\n 'dangerouslySetInnerHTML',\n 'onCopy',\n 'onCopyCapture',\n 'onCut',\n 'onCutCapture',\n 'onPaste',\n 'onPasteCapture',\n 'onCompositionEnd',\n 'onCompositionEndCapture',\n 'onCompositionStart',\n 'onCompositionStartCapture',\n 'onCompositionUpdate',\n 'onCompositionUpdateCapture',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onChangeCapture',\n 'onBeforeInput',\n 'onBeforeInputCapture',\n 'onInput',\n 'onInputCapture',\n 'onReset',\n 'onResetCapture',\n 'onSubmit',\n 'onSubmitCapture',\n 'onInvalid',\n 'onInvalidCapture',\n 'onLoad',\n 'onLoadCapture',\n 'onError',\n 'onErrorCapture',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n 'onAbort',\n 'onAbortCapture',\n 'onCanPlay',\n 'onCanPlayCapture',\n 'onCanPlayThrough',\n 'onCanPlayThroughCapture',\n 'onDurationChange',\n 'onDurationChangeCapture',\n 'onEmptied',\n 'onEmptiedCapture',\n 'onEncrypted',\n 'onEncryptedCapture',\n 'onEnded',\n 'onEndedCapture',\n 'onLoadedData',\n 'onLoadedDataCapture',\n 'onLoadedMetadata',\n 'onLoadedMetadataCapture',\n 'onLoadStart',\n 'onLoadStartCapture',\n 'onPause',\n 'onPauseCapture',\n 'onPlay',\n 'onPlayCapture',\n 'onPlaying',\n 'onPlayingCapture',\n 'onProgress',\n 'onProgressCapture',\n 'onRateChange',\n 'onRateChangeCapture',\n 'onSeeked',\n 'onSeekedCapture',\n 'onSeeking',\n 'onSeekingCapture',\n 'onStalled',\n 'onStalledCapture',\n 'onSuspend',\n 'onSuspendCapture',\n 'onTimeUpdate',\n 'onTimeUpdateCapture',\n 'onVolumeChange',\n 'onVolumeChangeCapture',\n 'onWaiting',\n 'onWaitingCapture',\n 'onAuxClick',\n 'onAuxClickCapture',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onContextMenuCapture',\n 'onDoubleClick',\n 'onDoubleClickCapture',\n 'onDrag',\n 'onDragCapture',\n 'onDragEnd',\n 'onDragEndCapture',\n 'onDragEnter',\n 'onDragEnterCapture',\n 'onDragExit',\n 'onDragExitCapture',\n 'onDragLeave',\n 'onDragLeaveCapture',\n 'onDragOver',\n 'onDragOverCapture',\n 'onDragStart',\n 'onDragStartCapture',\n 'onDrop',\n 'onDropCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseMoveCapture',\n 'onMouseOut',\n 'onMouseOutCapture',\n 'onMouseOver',\n 'onMouseOverCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onSelectCapture',\n 'onTouchCancel',\n 'onTouchCancelCapture',\n 'onTouchEnd',\n 'onTouchEndCapture',\n 'onTouchMove',\n 'onTouchMoveCapture',\n 'onTouchStart',\n 'onTouchStartCapture',\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerMove',\n 'onPointerMoveCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onPointerCancel',\n 'onPointerCancelCapture',\n 'onPointerEnter',\n 'onPointerEnterCapture',\n 'onPointerLeave',\n 'onPointerLeaveCapture',\n 'onPointerOver',\n 'onPointerOverCapture',\n 'onPointerOut',\n 'onPointerOutCapture',\n 'onGotPointerCapture',\n 'onGotPointerCaptureCapture',\n 'onLostPointerCapture',\n 'onLostPointerCaptureCapture',\n 'onScroll',\n 'onScrollCapture',\n 'onWheel',\n 'onWheelCapture',\n 'onAnimationStart',\n 'onAnimationStartCapture',\n 'onAnimationEnd',\n 'onAnimationEndCapture',\n 'onAnimationIteration',\n 'onAnimationIterationCapture',\n 'onTransitionEnd',\n 'onTransitionEndCapture',\n];\n\n/** The type of easing function to use for animations */\nexport type AnimationTiming = 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear';\n/** Specifies the duration of animation, the unit of this option is ms. */\nexport type AnimationDuration = number;\n\n/** the offset of a chart, which define the blank space all around */\nexport interface ChartOffset {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n width?: number;\n height?: number;\n brushBottom?: number;\n}\n\nexport interface Padding {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n}\n\nexport interface GeometrySector {\n cx?: number;\n cy?: number;\n innerRadius?: number;\n outerRadius?: number;\n startAngle?: number;\n endAngle?: number;\n cornerRadius?: number;\n forceCornerRadius?: boolean;\n cornerIsExternal?: boolean;\n}\n\nexport type D3Scale<T> = D3ScaleContinuousNumeric<T, number>;\n\nexport type AxisDomainItem = string | number | Function | 'auto' | 'dataMin' | 'dataMax';\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 */\nexport type AxisDomain =\n | string[]\n | number[]\n | [AxisDomainItem, AxisDomainItem]\n | (([dataMin, dataMax]: [number, number], allowDataOverflow: boolean) => [number, number]);\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 */\nexport type NumberDomain = [min: number, max: number];\n\nexport type CategoricalDomain = (number | string | Date)[];\n\n/** The props definition of base axis */\nexport interface BaseAxisProps {\n /** The type of axis */\n type?: 'number' | 'category';\n /** The key of data displayed in the axis */\n dataKey?: DataKey<any>;\n /** Whether or not display the axis */\n hide?: boolean;\n /** The scale type or functor of scale */\n scale?: ScaleType | Function;\n /** The option for tick */\n tick?: SVGProps<SVGTextElement> | ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | boolean;\n /** The count of ticks */\n tickCount?: number;\n /** The option for axisLine */\n axisLine?: boolean | SVGProps<SVGLineElement>;\n /** The option for tickLine */\n tickLine?: boolean | SVGProps<SVGTextElement>;\n /** The size of tick line */\n tickSize?: number;\n /** The formatter function of tick */\n tickFormatter?: (value: any, index: number) => string;\n /**\n * When domain of the axis is specified and the type of the axis is 'number',\n * if allowDataOverflow is set to be false,\n * the domain will be adjusted when the minimum value of data is smaller than domain[0] or\n * the maximum value of data is greater than domain[1] so that the axis displays all data values.\n * If set to true, graphic elements (line, area, bars) will be clipped to conform to the specified domain.\n */\n allowDataOverflow?: boolean;\n /**\n * Allow the axis has duplicated categories or not when the type of axis is \"category\".\n */\n allowDuplicatedCategory?: boolean;\n /**\n * Allow the ticks of axis to be decimals or not.\n */\n allowDecimals?: boolean;\n /** The domain of scale in this axis */\n domain?: AxisDomain;\n /** Consider hidden elements when computing the domain (defaults to false) */\n includeHidden?: boolean;\n /** The name of data displayed in the axis */\n name?: string;\n /** The unit of data displayed in the axis */\n unit?: string | number;\n /** The type of axis */\n axisType?: AxisType;\n range?: Array<number>;\n /** axis react component */\n AxisComp?: any;\n /** Needed to allow usage of the label prop on the X and Y axis */\n label?: string | number | ReactElement | object;\n /** The HTML element's class name */\n className?: string;\n}\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 */\nexport type AxisInterval = number | 'preserveStart' | 'preserveEnd' | 'preserveStartEnd' | 'equidistantPreserveStart';\n\nexport interface TickItem {\n value?: any;\n coordinate: number;\n index?: number;\n}\n\nexport interface CartesianTickItem extends TickItem {\n tickCoord?: number;\n tickSize?: number;\n isShow?: boolean;\n}\n\nexport interface Margin {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\nexport interface CartesianViewBox {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n}\n\nexport interface PolarViewBox {\n cx?: number;\n cy?: number;\n innerRadius?: number;\n outerRadius?: number;\n startAngle?: number;\n endAngle?: number;\n clockWise?: boolean;\n}\n\nexport type ViewBox = CartesianViewBox | PolarViewBox;\n\ntype RecordString<T> = Record<string, T>;\n\ntype AdaptEventHandlersReturn = RecordString<(e?: Event) => any> | RecordString<(e: Event) => void> | null;\n\nexport const adaptEventHandlers = (\n props: RecordString<any> | Component | FunctionComponent | boolean,\n newHandler?: (e?: Event) => any,\n): AdaptEventHandlersReturn => {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n let inputProps = props as RecordString<any>;\n\n if (isValidElement(props)) {\n inputProps = props.props as RecordString<any>;\n }\n\n if (!isObject(inputProps)) {\n return null;\n }\n\n const out: RecordString<(e: Event) => void> = {};\n\n Object.keys(inputProps).forEach(key => {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || ((e: Event) => inputProps[key](inputProps, e));\n }\n });\n\n return out;\n};\n\nconst getEventHandlerOfChild =\n (originalHandler: Function, data: any, index: number) =>\n (e: Event): null => {\n originalHandler(data, index, e);\n\n return null;\n };\n\nexport const adaptEventsOfChild = (\n props: RecordString<any>,\n data: any,\n index: number,\n): RecordString<(e?: Event) => any> | null => {\n if (!isObject(props) || typeof props !== 'object') {\n return null;\n }\n\n let out: RecordString<(e: Event) => void> | null = null;\n\n Object.keys(props).forEach((key: string) => {\n const item = (props as any)[key];\n\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n\n return out;\n};\n\nexport type TooltipEventType = 'axis' | 'item';\n\nexport interface CategoricalChartOptions {\n chartName?: string;\n GraphicalChild?: any;\n defaultTooltipEventType?: TooltipEventType;\n validateTooltipEventTypes?: ReadonlyArray<TooltipEventType>;\n axisComponents?: BaseAxisProps[];\n legendContent?: 'children';\n formatAxisMap?: any;\n defaultProps?: any;\n}\n\nexport interface TreemapNode {\n x: number;\n y: number;\n width: number;\n height: number;\n depth: number;\n index: number;\n children?: any;\n name: string;\n value: number;\n [k: string]: any;\n}\n\nexport interface SankeyNode {\n x: number;\n y: number;\n dx: number;\n dy: number;\n depth: number;\n value: number;\n}\nexport interface SankeyLink {\n target: number;\n source: number;\n value: number;\n sy: number;\n dy: number;\n ty: number;\n}\n\nexport type Size = { width: number; height: number };\n\nexport type ActiveShape<PropsType = Record<string, any>, ElementType = SVGElement> =\n | ReactElement<SVGProps<ElementType>>\n | ((props: PropsType) => ReactElement<SVGProps<ElementType>>)\n | ((props: unknown) => JSX.Element)\n | SVGProps<ElementType>\n | boolean;\n\nexport type XAxisMap = {\n [axisId: string]: XAxisProps;\n};\n\nexport type YAxisMap = {\n [axisId: string]: YAxisProps;\n};\n","import get from 'lodash/get';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\n\nimport React, { Children, Component, FunctionComponent, isValidElement, ReactNode } from 'react';\nimport { isFragment } from 'react-is';\nimport { DotProps } from '..';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredSvgElementType, FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nimport { AreaDot } from '../cartesian/Area';\nimport { LineDot } from '../cartesian/Line';\n\nconst REACT_BROWSER_EVENT_MAP: Record<string, string> = {\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 contextmenu: 'onContextMenu',\n dblclick: 'onDoubleClick',\n};\n\nexport const SCALE_TYPES = [\n 'auto',\n 'linear',\n 'pow',\n 'sqrt',\n 'log',\n 'identity',\n 'time',\n 'band',\n 'point',\n 'ordinal',\n 'quantile',\n 'quantize',\n 'utc',\n 'sequential',\n 'threshold',\n];\n\nexport const LEGEND_TYPES = [\n 'plainline',\n 'line',\n 'square',\n 'rect',\n 'circle',\n 'cross',\n 'diamond',\n 'star',\n 'triangle',\n 'wye',\n 'none',\n];\n\nexport const 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 const getDisplayName = (Comp: React.ComponentType | string) => {\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)\nlet lastChildren: ReactNode | null = null;\nlet lastResult: ReactNode[] | null = null;\n\nexport const toArray = <T extends ReactNode>(children: T | T[]): T[] => {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult as T[];\n }\n let result: T[] = [];\n Children.forEach(children, 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<\n ComponentType extends React.ComponentType,\n DetailedElement = React.DetailedReactHTMLElement<React.ComponentProps<ComponentType>, HTMLElement>,\n>(children: ReactNode, type: ComponentType | ComponentType[]): DetailedElement[] {\n const result: DetailedElement[] = [];\n let types: string[] = [];\n\n if (Array.isArray(type)) {\n types = type.map(t => getDisplayName(t));\n } else {\n types = [getDisplayName(type)];\n }\n\n toArray(children).forEach(child => {\n const childType = get(child, 'type.displayName') || get(child, 'type.name');\n if (types.indexOf(childType) !== -1) {\n result.push(child as DetailedElement);\n }\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<ComponentType extends React.ComponentType>(\n children: ReactNode[],\n type: ComponentType | ComponentType[],\n) {\n const result = findAllByType(children, type);\n\n return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport const withoutType = (children: ReactNode, type: string | string[]) => {\n const newChildren: ReactNode[] = [];\n let types: string[];\n\n if (Array.isArray(type)) {\n types = type.map(t => getDisplayName(t));\n } else {\n types = [getDisplayName(type)];\n }\n\n toArray(children).forEach(child => {\n const displayName = get(child, 'type.displayName');\n\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\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 const validateWidthHeight = (el: any): boolean => {\n if (!el || !el.props) {\n return false;\n }\n const { width, height } = el.props;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n\n return true;\n};\n\nconst SVG_TAGS: string[] = [\n 'a',\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animate',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'circle',\n 'clipPath',\n 'color-profile',\n 'cursor',\n 'defs',\n 'desc',\n 'ellipse',\n 'feBlend',\n 'feColormatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'filter',\n 'font',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-url',\n 'foreignObject',\n 'g',\n 'glyph',\n 'glyphRef',\n 'hkern',\n 'image',\n 'line',\n 'lineGradient',\n 'marker',\n 'mask',\n 'metadata',\n 'missing-glyph',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'script',\n 'set',\n 'stop',\n 'style',\n 'svg',\n 'switch',\n 'symbol',\n 'text',\n 'textPath',\n 'title',\n 'tref',\n 'tspan',\n 'use',\n 'view',\n 'vkern',\n];\n\nconst isSvgElement = (child: any) => child && child.type && isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n\nexport const hasClipDot = (dot: LineDot | AreaDot): dot is DotProps =>\n dot && typeof dot === 'object' && 'clipDot' in dot;\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 const isValidSpreadableProp = (\n property: unknown,\n key: string,\n includeEvents?: boolean,\n svgElementType?: FilteredSvgElementType,\n) => {\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 const matchingElementTypeKeys = FilteredElementKeyMap?.[svgElementType] ?? [];\n\n return (\n key.startsWith('data-') ||\n (!isFunction(property) &&\n ((svgElementType && matchingElementTypeKeys.includes(key)) || SVGElementPropKeys.includes(key))) ||\n (includeEvents && EventKeys.includes(key))\n );\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 const filterSvgElements = (children: React.ReactElement[]): React.ReactElement[] => {\n const svgElements = [] as React.ReactElement[];\n\n toArray(children).forEach((entry: React.ReactElement) => {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n\n return svgElements;\n};\n\nexport const filterProps = (\n props: Record<string, any> | Component | FunctionComponent | boolean | unknown,\n includeEvents: boolean,\n svgElementType?: FilteredSvgElementType,\n) => {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n let inputProps = props as Record<string, any>;\n\n if (isValidElement(props)) {\n inputProps = props.props as Record<string, any>;\n }\n\n if (!isObject(inputProps)) {\n return null;\n }\n\n const out: Record<string, any> = {};\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(key => {\n if (isValidSpreadableProp(inputProps?.[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\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 const isChildrenEqual = (nextChildren: React.ReactElement[], prevChildren: React.ReactElement[]): boolean => {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n const count = Children.count(nextChildren);\n if (count !== Children.count(prevChildren)) {\n return false;\n }\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(\n Array.isArray(nextChildren) ? nextChildren[0] : nextChildren,\n Array.isArray(prevChildren) ? prevChildren[0] : prevChildren,\n );\n }\n\n for (let i = 0; i < count; i++) {\n const nextChild: any = nextChildren[i];\n const prevChild: any = prevChildren[i];\n\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\n return true;\n};\n\nexport const isSingleChildEqual = (nextChild: React.ReactElement, prevChild: React.ReactElement): boolean => {\n if (isNil(nextChild) && isNil(prevChild)) {\n return true;\n }\n if (!isNil(nextChild) && !isNil(prevChild)) {\n const { children: nextChildren, ...nextProps } = nextChild.props || {};\n const { children: prevChildren, ...prevProps } = prevChild.props || {};\n\n if (nextChildren && prevChildren) {\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n\n return false;\n }\n\n return false;\n};\n\nexport const renderByOrder = (children: React.ReactElement[], renderMap: any) => {\n const elements: React.ReactElement[] = [];\n const record: Record<string, boolean> = {};\n\n toArray(children).forEach((child, index) => {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n const displayName = getDisplayName(child.type);\n const { handler, once } = renderMap[displayName] || {};\n\n if (handler && (!once || !record[displayName])) {\n const results = handler(child, displayName, index);\n\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n\n return elements;\n};\n\nexport const getReactEventByType = (e: { type?: string }): string => {\n const type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\n\nexport const parseChildIndex = (child: any, children: any[]) => {\n return toArray(children).indexOf(child);\n};\n","/**\n * @fileOverview Surface\n */\nimport React, { ReactNode, CSSProperties, SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface SurfaceProps {\n width: number;\n height: number;\n viewBox?: {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n };\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n title?: string;\n desc?: string;\n}\n\nexport type Props = Omit<SVGProps<SVGSVGElement>, 'viewBox'> & SurfaceProps;\n\nexport function Surface(props: Props) {\n const { children, width, height, viewBox, className, style, title, desc, ...others } = props;\n const svgView = viewBox || { width, height, x: 0, y: 0 };\n const layerClass = clsx('recharts-surface', className);\n\n return (\n <svg\n {...filterProps(others, true, 'svg')}\n className={layerClass}\n width={width}\n height={height}\n style={style}\n viewBox={`${svgView.x} ${svgView.y} ${svgView.width} ${svgView.height}`}\n >\n <title>{title}</title>\n <desc>{desc}</desc>\n {children}\n </svg>\n );\n}\n","import React, { ReactNode, SVGAttributes } from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface LayerProps {\n className?: string;\n children?: ReactNode;\n}\n\nexport type Props = SVGAttributes<SVGGElement> & LayerProps;\n\nexport const Layer = React.forwardRef<SVGGElement, Props>((props: Props, ref) => {\n const { children, className, ...others } = props;\n const layerClass = clsx('recharts-layer', className);\n\n return (\n <g className={layerClass} {...filterProps(others, true)} ref={ref}>\n {children}\n </g>\n );\n});\n","/* eslint no-console: 0 */\nconst isDev = process.env.NODE_ENV !== 'production';\n\nexport const warn = (condition: boolean, format: string, ...args: any[]) => {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.',\n );\n } else {\n let argIndex = 0;\n\n console.warn(format.replace(/%s/g, () => args[argIndex++]));\n }\n }\n }\n};\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {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","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\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","/**\n * @fileOverview Curve\n */\nimport React, { SVGProps } from 'react';\nimport upperFirst from 'lodash/upperFirst';\n\nimport {\n symbol as shapeSymbol,\n symbolCircle,\n symbolCross,\n symbolDiamond,\n symbolSquare,\n symbolStar,\n symbolTriangle,\n symbolWye,\n SymbolType as D3SymbolType,\n} from 'victory-vendor/d3-shape';\nimport clsx from 'clsx';\nimport { SymbolType } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\ntype SizeType = 'area' | 'diameter';\n\ninterface SymbolFactory {\n [type: string]: D3SymbolType;\n}\n\nconst symbolFactories: SymbolFactory = {\n symbolCircle,\n symbolCross,\n symbolDiamond,\n symbolSquare,\n symbolStar,\n symbolTriangle,\n symbolWye,\n};\nconst RADIAN = Math.PI / 180;\n\nconst getSymbolFactory = (type: SymbolType) => {\n const name = `symbol${upperFirst(type)}`;\n\n return symbolFactories[name] || symbolCircle;\n};\n\nconst calculateAreaSize = (size: number, sizeType: SizeType, type: SymbolType) => {\n if (sizeType === 'area') {\n return size;\n }\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 const angle = 18 * RADIAN;\n\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * 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};\n\nexport interface InnerSymbolsProp {\n className?: string;\n type: SymbolType;\n cx?: number;\n cy?: number;\n size?: number;\n sizeType?: SizeType;\n}\n\nexport type SymbolsProps = SVGProps<SVGPathElement> & InnerSymbolsProp;\n\nconst registerSymbol = (key: string, factory: D3SymbolType) => {\n symbolFactories[`symbol${upperFirst(key)}`] = factory;\n};\n\nexport const Symbols = ({ type = 'circle', size = 64, sizeType = 'area', ...rest }: SymbolsProps) => {\n const props = { ...rest, type, size, sizeType };\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n const getPath = () => {\n const symbolFactory = getSymbolFactory(type);\n const symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n\n return symbol();\n };\n\n const { className, cx, cy } = props;\n const filteredProps = filterProps(props, true);\n\n if (cx === +cx && cy === +cy && size === +size) {\n return (\n <path\n {...filteredProps}\n className={clsx('recharts-symbols', className)}\n transform={`translate(${cx}, ${cy})`}\n d={getPath()}\n />\n );\n }\n\n return null;\n};\n\nSymbols.registerSymbol = registerSymbol;\n","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","/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent, ReactNode, MouseEvent, ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { warn } from '../util/LogUtils';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport {\n DataKey,\n LegendType,\n LayoutType,\n SymbolType,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n} from '../util/types';\n\nconst SIZE = 32;\nexport type ContentType = ReactElement | ((props: Props) => ReactNode);\nexport type IconType = Exclude<LegendType, 'none'>;\nexport type HorizontalAlignmentType = 'center' | 'left' | 'right';\nexport type VerticalAlignmentType = 'top' | 'bottom' | 'middle';\nexport type Formatter = (\n value: any,\n entry: {\n value: any;\n id?: string;\n type?: LegendType;\n color?: string;\n payload?: {\n strokeDasharray: string | number;\n value?: any;\n };\n dataKey?: DataKey<any>;\n },\n index: number,\n) => ReactNode;\n\nexport interface Payload {\n value: any;\n id?: string;\n type?: LegendType;\n color?: string;\n payload?: {\n strokeDasharray: string | number;\n value?: any;\n };\n formatter?: Formatter;\n inactive?: boolean;\n legendIcon?: ReactElement<SVGElement>;\n dataKey?: DataKey<any>;\n}\ninterface InternalProps {\n content?: ContentType;\n iconSize?: number;\n iconType?: IconType;\n layout?: LayoutType;\n align?: HorizontalAlignmentType;\n verticalAlign?: VerticalAlignmentType;\n payload?: Array<Payload>;\n inactiveColor?: string;\n formatter?: Formatter;\n onMouseEnter?: (data: Payload, index: number, event: MouseEvent) => void;\n onMouseLeave?: (data: Payload, index: number, event: MouseEvent) => void;\n onClick?: (data: Payload, index: number, event: MouseEvent) => void;\n}\n\nexport type Props = InternalProps & Omit<PresentationAttributesAdaptChildEvent<any, ReactElement>, keyof InternalProps>;\n\nexport class DefaultLegendContent extends PureComponent<Props> {\n static displayName = 'Legend';\n\n static defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc',\n };\n\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n renderIcon(data: Payload) {\n const { inactiveColor } = this.props;\n const halfSize = SIZE / 2;\n const sixthSize = SIZE / 6;\n const thirdSize = SIZE / 3;\n const color = data.inactive ? inactiveColor : data.color;\n\n if (data.type === 'plainline') {\n return (\n <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 }\n if (data.type === 'line') {\n return (\n <path\n strokeWidth={4}\n fill=\"none\"\n stroke={color}\n d={`M0,${halfSize}h${thirdSize}\n A${sixthSize},${sixthSize},0,1,1,${2 * thirdSize},${halfSize}\n H${SIZE}M${2 * thirdSize},${halfSize}\n A${sixthSize},${sixthSize},0,1,1,${thirdSize},${halfSize}`}\n className=\"recharts-legend-icon\"\n />\n );\n }\n if (data.type === 'rect') {\n return (\n <path\n stroke=\"none\"\n fill={color}\n d={`M0,${SIZE / 8}h${SIZE}v${(SIZE * 3) / 4}h${-SIZE}z`}\n className=\"recharts-legend-icon\"\n />\n );\n }\n if (React.isValidElement(data.legendIcon)) {\n const iconProps: any = { ...data };\n delete iconProps.legendIcon;\n return React.cloneElement(data.legendIcon, iconProps);\n }\n\n return (\n <Symbols\n fill={color}\n cx={halfSize}\n cy={halfSize}\n size={SIZE}\n sizeType=\"diameter\"\n type={data.type as SymbolType}\n />\n );\n }\n\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n renderItems() {\n const { payload, iconSize, layout, formatter, inactiveColor } = this.props;\n const viewBox = { x: 0, y: 0, width: SIZE, height: SIZE };\n const itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10,\n };\n const svgStyle = { display: 'inline-block', verticalAlign: 'middle', marginRight: 4 };\n\n return payload.map((entry, i) => {\n const finalFormatter = entry.formatter || formatter;\n const className = clsx({\n 'recharts-legend-item': true,\n [`legend-item-${i}`]: true,\n inactive: entry.inactive,\n });\n\n if (entry.type === 'none') {\n return null;\n }\n\n // Do not render entry.value as functions. Always require static string properties.\n const entryValue = !isFunction(entry.value) ? entry.value : null;\n warn(\n !isFunction(entry.value),\n `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\n const color = entry.inactive ? inactiveColor : entry.color;\n\n return (\n <li\n className={className}\n style={itemStyle}\n // eslint-disable-next-line react/no-array-index-key\n key={`legend-item-${i}`}\n {...adaptEventsOfChild(this.props, entry, i)}\n >\n <Surface width={iconSize} height={iconSize} viewBox={viewBox} style={svgStyle}>\n {this.renderIcon(entry)}\n </Surface>\n <span className=\"recharts-legend-item-text\" style={{ color }}>\n {finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue}\n </span>\n </li>\n );\n });\n }\n\n render() {\n const { payload, layout, align } = this.props;\n\n if (!payload || !payload.length) {\n return null;\n }\n\n const finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left',\n };\n\n return (\n <ul className=\"recharts-default-legend\" style={finalStyle}>\n {this.renderItems()}\n </ul>\n );\n }\n}\n","import uniqBy from 'lodash/uniqBy';\nimport isFunction from 'lodash/isFunction';\n\ntype UniqueFunc<T> = (entry: T) => unknown;\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 */\nexport type UniqueOption<T> = boolean | UniqueFunc<T>;\n\nexport function getUniqPayload<T>(payload: Array<T>, option: UniqueOption<T>, defaultUniqBy: UniqueFunc<T>): Array<T> {\n if (option === true) {\n return uniqBy(payload, defaultUniqBy);\n }\n\n if (isFunction(option)) {\n return uniqBy(payload, option);\n }\n\n return payload;\n}\n","/**\n * @fileOverview Legend\n */\nimport React, { PureComponent, CSSProperties } from 'react';\nimport { DefaultLegendContent, Payload, Props as DefaultProps, ContentType } from './DefaultLegendContent';\n\nimport { isNumber } from '../util/DataUtils';\nimport { LayoutType } from '../util/types';\nimport { UniqueOption, getUniqPayload } from '../util/payload/getUniqPayload';\n\nfunction defaultUniqBy(entry: Payload) {\n return entry.value;\n}\n\nfunction renderContent(content: ContentType, props: Props) {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return React.createElement(content as any, props);\n }\n\n const { ref, ...otherProps } = props;\n\n return <DefaultLegendContent {...otherProps} />;\n}\n\nconst EPS = 1;\n\nexport type Props = DefaultProps & {\n wrapperStyle?: CSSProperties;\n chartWidth?: number;\n chartHeight?: number;\n width?: number;\n height?: number;\n margin?: {\n top?: number;\n left?: number;\n bottom?: number;\n right?: number;\n };\n payloadUniqBy?: UniqueOption<Payload>;\n onBBoxUpdate?: (box: DOMRect | null) => void;\n};\n\ninterface State {\n boxWidth: number;\n boxHeight: number;\n}\n\nexport class Legend extends PureComponent<Props, State> {\n static displayName = 'Legend';\n\n static defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom',\n };\n\n private wrapperNode: HTMLDivElement;\n\n static getWithHeight(\n item: { props: { layout?: LayoutType; height?: number; width?: number } },\n chartWidth: number,\n ): null | { height: number } | { width: number } {\n const { layout } = { ...this.defaultProps, ...item.props };\n\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\n return null;\n }\n\n lastBoundingBox = {\n width: -1,\n height: -1,\n };\n\n public componentDidMount() {\n this.updateBBox();\n }\n\n public componentDidUpdate() {\n this.updateBBox();\n }\n\n public getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n const 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 private updateBBox() {\n const { onBBoxUpdate } = this.props;\n const box = this.getBBox();\n if (box) {\n if (\n Math.abs(box.width - this.lastBoundingBox.width) > EPS ||\n Math.abs(box.height - this.lastBoundingBox.height) > EPS\n ) {\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 private getBBoxSnapshot() {\n if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n return { ...this.lastBoundingBox };\n }\n\n return { width: 0, height: 0 };\n }\n\n private getDefaultPosition(style: CSSProperties) {\n const { layout, align, verticalAlign, margin, chartWidth, chartHeight } = this.props;\n let hPos, vPos;\n\n if (\n !style ||\n ((style.left === undefined || style.left === null) && (style.right === undefined || style.right === null))\n ) {\n if (align === 'center' && layout === 'vertical') {\n const box = this.getBBoxSnapshot();\n hPos = { left: ((chartWidth || 0) - box.width) / 2 };\n } else {\n hPos = align === 'right' ? { right: (margin && margin.right) || 0 } : { left: (margin && margin.left) || 0 };\n }\n }\n\n if (\n !style ||\n ((style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null))\n ) {\n if (verticalAlign === 'middle') {\n const box = this.getBBoxSnapshot();\n vPos = { top: ((chartHeight || 0) - box.height) / 2 };\n } else {\n vPos =\n verticalAlign === 'bottom'\n ? { bottom: (margin && margin.bottom) || 0 }\n : { top: (margin && margin.top) || 0 };\n }\n }\n\n return { ...hPos, ...vPos };\n }\n\n public render() {\n const { content, width, height, wrapperStyle, payloadUniqBy, payload } = this.props;\n const outerStyle: CSSProperties = {\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto',\n ...this.getDefaultPosition(wrapperStyle),\n ...wrapperStyle,\n };\n\n return (\n <div\n className=\"recharts-legend-wrapper\"\n style={outerStyle}\n ref={node => {\n this.wrapperNode = node;\n }}\n >\n {renderContent(content, { ...this.props, payload: getUniqPayload(payload, payloadUniqBy, defaultUniqBy) })}\n </div>\n );\n }\n}\n","/**\n * @fileOverview Default Tooltip Content\n */\n\nimport React, { CSSProperties, HTMLAttributes, ReactNode, SVGProps } from 'react';\nimport sortBy from 'lodash/sortBy';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumOrStr } from '../util/DataUtils';\n\nfunction defaultFormatter<TValue extends ValueType>(value: TValue) {\n return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? (value.join(' ~ ') as TValue) : value;\n}\n\nexport type TooltipType = 'none';\nexport type ValueType = number | string | Array<number | string>;\nexport type NameType = number | string;\nexport type Formatter<TValue extends ValueType, TName extends NameType> = (\n value: TValue,\n name: TName,\n item: Payload<TValue, TName>,\n index: number,\n payload: Array<Payload<TValue, TName>>,\n) => [React.ReactNode, TName] | React.ReactNode;\n\nexport interface Payload<TValue extends ValueType, TName extends NameType> extends Omit<SVGProps<SVGElement>, 'name'> {\n type?: TooltipType;\n color?: string;\n formatter?: Formatter<TValue, TName>;\n name?: TName;\n value?: TValue;\n unit?: ReactNode;\n dataKey?: string | number;\n payload?: any;\n chartType?: string;\n stroke?: string;\n strokeDasharray?: string | number;\n strokeWidth?: number | string;\n className?: string;\n hide?: boolean;\n}\n\nexport interface Props<TValue extends ValueType, TName extends NameType> {\n separator?: string;\n wrapperClassName?: string;\n labelClassName?: string;\n formatter?: Formatter<TValue, TName>;\n contentStyle?: CSSProperties;\n itemStyle?: CSSProperties;\n labelStyle?: CSSProperties;\n labelFormatter?: (label: any, payload: Array<Payload<TValue, TName>>) => ReactNode;\n label?: any;\n payload?: Array<Payload<TValue, TName>>;\n itemSorter?: (item: Payload<TValue, TName>) => number | string;\n accessibilityLayer?: boolean;\n}\n\nexport const DefaultTooltipContent = <TValue extends ValueType, TName extends NameType>(\n props: Props<TValue, TName>,\n) => {\n const {\n separator = ' : ',\n contentStyle = {},\n itemStyle = {},\n labelStyle = {},\n payload,\n formatter,\n itemSorter,\n wrapperClassName,\n labelClassName,\n label,\n labelFormatter,\n accessibilityLayer = false,\n } = props;\n\n const renderContent = () => {\n if (payload && payload.length) {\n const listStyle = { padding: 0, margin: 0 };\n\n const items = (itemSorter ? sortBy(payload, itemSorter) : payload).map((entry, i) => {\n if (entry.type === 'none') {\n return null;\n }\n\n const finalItemStyle = {\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000',\n ...itemStyle,\n };\n const finalFormatter = entry.formatter || formatter || defaultFormatter;\n const { value, name } = entry;\n let finalValue: React.ReactNode = value;\n let finalName: React.ReactNode = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n const formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n [finalValue, finalName] = formatted;\n } else {\n finalValue = formatted;\n }\n }\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <li className=\"recharts-tooltip-item\" key={`tooltip-item-${i}`} style={finalItemStyle}>\n {isNumOrStr(finalName) ? <span className=\"recharts-tooltip-item-name\">{finalName}</span> : null}\n {isNumOrStr(finalName) ? <span className=\"recharts-tooltip-item-separator\">{separator}</span> : null}\n <span className=\"recharts-tooltip-item-value\">{finalValue}</span>\n <span className=\"recharts-tooltip-item-unit\">{entry.unit || ''}</span>\n </li>\n );\n });\n\n return (\n <ul className=\"recharts-tooltip-item-list\" style={listStyle}>\n {items}\n </ul>\n );\n }\n\n return null;\n };\n\n const finalStyle: React.CSSProperties = {\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap',\n ...contentStyle,\n };\n const finalLabelStyle = {\n margin: 0,\n ...labelStyle,\n };\n const hasLabel = !isNil(label);\n let finalLabel = hasLabel ? label : '';\n const wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n const labelCN = clsx('recharts-tooltip-label', labelClassName);\n\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n\n const accessibilityAttributes = accessibilityLayer\n ? ({\n role: 'status',\n 'aria-live': 'assertive',\n } as HTMLAttributes<HTMLDivElement>)\n : {};\n\n return (\n <div className={wrapperCN} style={finalStyle} {...accessibilityAttributes}>\n <p className={labelCN} style={finalLabelStyle}>\n {React.isValidElement(finalLabel) ? finalLabel : `${finalLabel}`}\n </p>\n {renderContent()}\n </div>\n );\n};\n","import clsx from 'clsx';\nimport { CSSProperties } from 'react';\nimport { isNumber } from '../DataUtils';\nimport { Coordinate, CartesianViewBox, AllowInDimension } from '../types';\n\nexport type Dimension2D = 'x' | 'y';\n\nconst CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\n\nconst TOOLTIP_HIDDEN: CSSProperties = { visibility: 'hidden' };\n\nexport function getTooltipCSSClassName({\n coordinate,\n translateX,\n translateY,\n}: {\n translateX: number | undefined;\n translateY: number | undefined;\n coordinate: Partial<Coordinate> | undefined;\n}): string {\n return clsx(CSS_CLASS_PREFIX, {\n [`${CSS_CLASS_PREFIX}-right`]:\n isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x,\n [`${CSS_CLASS_PREFIX}-left`]:\n isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x,\n [`${CSS_CLASS_PREFIX}-bottom`]:\n isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y,\n [`${CSS_CLASS_PREFIX}-top`]:\n isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y,\n });\n}\n\nexport function getTooltipTranslateXY({\n allowEscapeViewBox,\n coordinate,\n key,\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipDimension,\n viewBox,\n viewBoxDimension,\n}: {\n allowEscapeViewBox: AllowInDimension;\n coordinate: Partial<Coordinate>;\n key: Dimension2D;\n offsetTopLeft: number;\n position: Partial<Coordinate>;\n reverseDirection: AllowInDimension;\n tooltipDimension: number;\n viewBox: CartesianViewBox;\n viewBoxDimension: number;\n}): number {\n if (position && isNumber(position[key])) {\n return position[key];\n }\n\n const negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n const positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n\n if (reverseDirection[key]) {\n const tooltipBoundary = negative;\n const viewBoxBoundary = viewBox[key];\n if (tooltipBoundary < viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n const tooltipBoundary = positive + tooltipDimension;\n const viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n}\n\nexport function getTransformStyle({\n translateX,\n translateY,\n useTranslate3d,\n}: {\n useTranslate3d: boolean;\n translateX: number;\n translateY: number;\n}): CSSProperties {\n return {\n transform: useTranslate3d\n ? `translate3d(${translateX}px, ${translateY}px, 0)`\n : `translate(${translateX}px, ${translateY}px)`,\n };\n}\n\nexport function getTooltipTranslate({\n allowEscapeViewBox,\n coordinate,\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipBox,\n useTranslate3d,\n viewBox,\n}: {\n allowEscapeViewBox: AllowInDimension;\n coordinate: Partial<Coordinate> | undefined;\n offsetTopLeft: number;\n position: Partial<Coordinate>;\n reverseDirection: AllowInDimension;\n tooltipBox: { width: number; height: number };\n useTranslate3d: boolean;\n viewBox: CartesianViewBox;\n}): { cssProperties: CSSProperties; cssClasses: string } {\n let cssProperties: CSSProperties, translateX: number | undefined, translateY: number | undefined;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox,\n coordinate,\n key: 'x',\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox,\n viewBoxDimension: viewBox.width,\n });\n\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox,\n coordinate,\n key: 'y',\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox,\n viewBoxDimension: viewBox.height,\n });\n cssProperties = getTransformStyle({\n translateX,\n translateY,\n useTranslate3d,\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX,\n translateY,\n coordinate,\n }),\n };\n}\n","import React, { CSSProperties, PureComponent, ReactNode } from 'react';\nimport { AllowInDimension, AnimationDuration, AnimationTiming, CartesianViewBox, Coordinate } from '../util/types';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\n\nexport type TooltipBoundingBoxProps = {\n active: boolean;\n allowEscapeViewBox: AllowInDimension;\n animationDuration: AnimationDuration;\n animationEasing: AnimationTiming;\n children: ReactNode;\n coordinate: Partial<Coordinate>;\n hasPayload: boolean;\n isAnimationActive: boolean;\n offset: number;\n position: Partial<Coordinate>;\n reverseDirection: AllowInDimension;\n useTranslate3d: boolean;\n viewBox: CartesianViewBox;\n wrapperStyle: CSSProperties;\n};\n\ntype State = {\n dismissed: boolean;\n dismissedAtCoordinate: Coordinate;\n lastBoundingBox: {\n width: number;\n height: number;\n };\n};\n\nconst EPSILON = 1;\n\nexport class TooltipBoundingBox extends PureComponent<TooltipBoundingBoxProps, State> {\n state = {\n dismissed: false,\n dismissedAtCoordinate: { x: 0, y: 0 },\n lastBoundingBox: {\n width: -1,\n height: -1,\n },\n };\n\n private wrapperNode: HTMLDivElement;\n\n updateBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n const box = this.wrapperNode.getBoundingClientRect();\n\n if (\n Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON ||\n Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON\n ) {\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 componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n this.updateBBox();\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n componentDidUpdate() {\n if (this.props.active) {\n this.updateBBox();\n }\n\n if (!this.state.dismissed) {\n return;\n }\n\n if (\n this.props.coordinate?.x !== this.state.dismissedAtCoordinate.x ||\n this.props.coordinate?.y !== this.state.dismissedAtCoordinate.y\n ) {\n this.state.dismissed = false;\n }\n }\n\n handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: this.props.coordinate?.x ?? 0,\n y: this.props.coordinate?.y ?? 0,\n },\n });\n }\n };\n\n render() {\n const {\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n children,\n coordinate,\n hasPayload,\n isAnimationActive,\n offset,\n position,\n reverseDirection,\n useTranslate3d,\n viewBox,\n wrapperStyle,\n } = this.props;\n\n const { cssClasses, cssProperties } = getTooltipTranslate({\n allowEscapeViewBox,\n coordinate,\n offsetTopLeft: offset,\n position,\n reverseDirection,\n tooltipBox: this.state.lastBoundingBox,\n useTranslate3d,\n viewBox,\n });\n\n const outerStyle: CSSProperties = {\n transition: isAnimationActive && active ? `transform ${animationDuration}ms ${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 };\n\n return (\n // This element allow listening to the `Escape` key.\n // See https://github.com/recharts/recharts/pull/2925\n <div\n tabIndex={-1}\n className={cssClasses}\n style={outerStyle}\n ref={node => {\n this.wrapperNode = node;\n }}\n >\n {children}\n </div>\n );\n }\n}\n","const parseIsSsrByDefault = (): boolean =>\n !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n\nexport interface GlobalConfig {\n isSsr?: boolean;\n}\n\nexport type GlobalConfigKeys = 'isSsr';\n\nexport const Global = {\n isSsr: parseIsSsrByDefault(),\n\n get: (key: 'isSsr') => {\n return Global[key];\n },\n\n set: (key: GlobalConfigKeys | GlobalConfig, value?: any) => {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n const keys = Object.keys(key);\n\n if (keys && keys.length) {\n keys.forEach((k: GlobalConfigKeys) => {\n Global[k] = key[k];\n });\n }\n }\n },\n};\n","/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent, CSSProperties, ReactNode, ReactElement, SVGProps } from 'react';\nimport {\n DefaultTooltipContent,\n ValueType,\n NameType,\n Payload,\n Props as ToltipContentProps,\n} from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\n\nimport { Global } from '../util/Global';\nimport { UniqueOption, getUniqPayload } from '../util/payload/getUniqPayload';\nimport { AllowInDimension, AnimationDuration, AnimationTiming, CartesianViewBox, Coordinate } from '../util/types';\n\nexport type ContentType<TValue extends ValueType, TName extends NameType> =\n | ReactElement\n | ((props: TooltipProps<TValue, TName>) => ReactNode);\n\nfunction defaultUniqBy<TValue extends ValueType, TName extends NameType>(entry: Payload<TValue, TName>) {\n return entry.dataKey;\n}\n\nfunction renderContent<TValue extends ValueType, TName extends NameType>(\n content: ContentType<TValue, TName>,\n props: TooltipProps<TValue, TName>,\n): ReactNode {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return React.createElement(content as any, props);\n }\n\n return <DefaultTooltipContent {...props} />;\n}\n\nexport type TooltipProps<TValue extends ValueType, TName extends NameType> = ToltipContentProps<TValue, TName> & {\n accessibilityLayer?: boolean;\n /**\n * If true, then Tooltip is always displayed, once an activeIndex is set by mouse over, or programmatically.\n * If false, then Tooltip is never displayed.\n * If active is undefined, Recharts will control when the Tooltip displays. This includes mouse and keyboard controls.\n */\n active?: boolean | undefined;\n /**\n * If true, then Tooltip will information about hidden series (defaults to false). Interacting with the hide property of Area, Bar, Line, Scatter.\n */\n includeHidden?: boolean | undefined;\n allowEscapeViewBox?: AllowInDimension;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n content?: ContentType<TValue, TName>;\n coordinate?: Partial<Coordinate>;\n cursor?: boolean | ReactElement | SVGProps<SVGElement>;\n filterNull?: boolean;\n defaultIndex?: number;\n isAnimationActive?: boolean;\n offset?: number;\n payloadUniqBy?: UniqueOption<Payload<TValue, TName>>;\n position?: Partial<Coordinate>;\n reverseDirection?: AllowInDimension;\n shared?: boolean;\n trigger?: 'hover' | 'click';\n useTranslate3d?: boolean;\n viewBox?: CartesianViewBox;\n wrapperStyle?: CSSProperties;\n};\n\nexport class Tooltip<TValue extends ValueType, TName extends NameType> extends PureComponent<\n TooltipProps<TValue, TName>\n> {\n static displayName = 'Tooltip';\n\n static defaultProps = {\n accessibilityLayer: false,\n allowEscapeViewBox: { x: false, y: false },\n animationDuration: 400,\n animationEasing: 'ease',\n contentStyle: {},\n coordinate: { x: 0, y: 0 },\n cursor: true,\n cursorStyle: {},\n filterNull: true,\n isAnimationActive: !Global.isSsr,\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: { x: false, y: false },\n separator: ' : ',\n trigger: 'hover',\n useTranslate3d: false,\n viewBox: { x: 0, y: 0, height: 0, width: 0 },\n wrapperStyle: {},\n };\n\n render() {\n const {\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n content,\n coordinate,\n filterNull,\n isAnimationActive,\n offset,\n payload,\n payloadUniqBy,\n position,\n reverseDirection,\n useTranslate3d,\n viewBox,\n wrapperStyle,\n } = this.props;\n let finalPayload: Payload<TValue, TName>[] = payload ?? [];\n\n if (filterNull && finalPayload.length) {\n finalPayload = getUniqPayload(\n payload.filter(entry => entry.value != null && (entry.hide !== true || this.props.includeHidden)),\n payloadUniqBy,\n defaultUniqBy,\n );\n }\n\n const hasPayload = finalPayload.length > 0;\n\n return (\n <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 >\n {renderContent(content, { ...this.props, payload: finalPayload })}\n </TooltipBoundingBox>\n );\n }\n}\n","/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, {\n ReactElement,\n forwardRef,\n cloneElement,\n useState,\n useImperativeHandle,\n useRef,\n useEffect,\n useMemo,\n CSSProperties,\n useCallback,\n} from 'react';\nimport throttle from 'lodash/throttle';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\n\nexport interface Props {\n aspect?: number;\n width?: string | number;\n height?: string | number;\n minWidth?: string | number;\n minHeight?: string | number;\n initialDimension?: {\n width: number;\n height: number;\n };\n maxHeight?: number;\n children: ReactElement;\n debounce?: number;\n id?: string | number;\n className?: string | number;\n style?: Omit<CSSProperties, keyof Props>;\n onResize?: (width: number, height: number) => void;\n}\n\nexport const ResponsiveContainer = forwardRef<HTMLDivElement | { current: HTMLDivElement }, Props>(\n (\n {\n aspect,\n initialDimension = {\n width: -1,\n height: -1,\n },\n width = '100%',\n height = '100%',\n /*\n * default min-width to 0 if not specified - 'auto' causes issues with flexbox\n * https://github.com/recharts/recharts/issues/172\n */\n minWidth = 0,\n minHeight,\n maxHeight,\n children,\n debounce = 0,\n id,\n className,\n onResize,\n style = {},\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const onResizeRef = useRef<Props['onResize']>();\n onResizeRef.current = onResize;\n useImperativeHandle(ref, () => {\n return Object.defineProperty(containerRef.current, 'current', {\n 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\n const [sizes, setSizes] = useState<{\n containerWidth: number;\n containerHeight: number;\n }>({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height,\n });\n\n const setContainerSize = useCallback((newWidth: number, newHeight: number) => {\n setSizes(prevState => {\n const roundedWidth = Math.round(newWidth);\n const roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n\n return { containerWidth: roundedWidth, containerHeight: roundedHeight };\n });\n }, []);\n\n useEffect(() => {\n let callback = (entries: ResizeObserverEntry[]) => {\n const { width: containerWidth, height: containerHeight } = entries[0].contentRect;\n setContainerSize(containerWidth, containerHeight);\n onResizeRef.current?.(containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = throttle(callback, debounce, { trailing: true, leading: false });\n }\n const observer = new ResizeObserver(callback);\n\n const { width: containerWidth, height: containerHeight } = containerRef.current.getBoundingClientRect();\n setContainerSize(containerWidth, containerHeight);\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [setContainerSize, debounce]);\n\n const chartContent = useMemo(() => {\n const { containerWidth, containerHeight } = sizes;\n\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n\n warn(\n isPercent(width) || isPercent(height),\n `The width(%s) and height(%s) are both fixed numbers,\n maybe you don't need to use a ResponsiveContainer.`,\n width,\n height,\n );\n\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n\n let calculatedWidth: number = isPercent(width) ? containerWidth : (width as number);\n let calculatedHeight: number = isPercent(height) ? containerHeight : (height as number);\n\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\n warn(\n calculatedWidth > 0 || calculatedHeight > 0,\n `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.`,\n calculatedWidth,\n calculatedHeight,\n width,\n height,\n minWidth,\n minHeight,\n aspect,\n );\n\n const isCharts = !Array.isArray(children) && getDisplayName(children.type).endsWith('Chart');\n\n return React.Children.map(children, child => {\n if (React.isValidElement<any>(child)) {\n return cloneElement(child, {\n width: calculatedWidth,\n height: calculatedHeight,\n // calculate the actual size and override it.\n ...(isCharts\n ? {\n style: {\n height: '100%',\n width: '100%',\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth,\n // keep components style\n ...child.props.style,\n },\n }\n : {}),\n });\n }\n return child;\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n\n return (\n <div\n id={id ? `${id}` : undefined}\n className={clsx('recharts-responsive-container', className)}\n style={{ ...style, width, height, minWidth, minHeight, maxHeight }}\n ref={containerRef}\n >\n {chartContent}\n </div>\n );\n },\n);\n","/**\n * @fileOverview Cross\n */\nimport type { FunctionComponent, SVGProps } from 'react';\n\nexport type Props = SVGProps<SVGElement>;\n\nexport const Cell: FunctionComponent<Props> = (_props: Props) => null;\n\nCell.displayName = 'Cell';\n","import { CSSProperties } from 'react';\nimport { Global } from './Global';\nimport { Size } from './types';\n\ninterface StringCache {\n widthCache: Record<string, any>;\n cacheCount: number;\n}\n\nconst stringCache: StringCache = {\n widthCache: {},\n cacheCount: 0,\n};\nconst MAX_CACHE_NUM = 2000;\nconst SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre',\n};\nconst STYLE_LIST = [\n 'minWidth',\n 'maxWidth',\n 'width',\n 'minHeight',\n 'maxHeight',\n 'height',\n 'top',\n 'left',\n 'fontSize',\n 'lineHeight',\n 'padding',\n 'margin',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n];\nconst MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name: string, value: number) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction camelToMiddleLine(text: string) {\n const strs = text.split('');\n\n const formatStrs = strs.reduce((result, entry) => {\n if (entry === entry.toUpperCase()) {\n return [...result, '-', entry.toLowerCase()];\n }\n\n return [...result, entry];\n }, []);\n\n return formatStrs.join('');\n}\n\nexport const getStyleString = (style: CSSProperties) =>\n Object.keys(style).reduce(\n (result, s) => `${result}${camelToMiddleLine(s)}:${autoCompleteStyle(s, (style as Record<string, any>)[s])};`,\n '',\n );\n\nfunction removeInvalidKeys(obj: Record<string, any>) {\n const copyObj = { ...obj };\n Object.keys(copyObj).forEach(key => {\n if (!copyObj[key]) {\n delete copyObj[key];\n }\n });\n return copyObj;\n}\n\nexport const getStringSize = (text: string | number, style: CSSProperties = {}): Size => {\n if (text === undefined || text === null || Global.isSsr) {\n return { width: 0, height: 0 };\n }\n\n const copyStyle = removeInvalidKeys(style);\n const cacheKey = JSON.stringify({ text, copyStyle });\n\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n\n try {\n let 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 const measurementSpanStyle: Record<string, any> = { ...SPAN_STYLE, ...copyStyle };\n Object.assign(measurementSpan.style, measurementSpanStyle);\n\n measurementSpan.textContent = `${text}`;\n\n const rect = measurementSpan.getBoundingClientRect();\n const result = { width: rect.width, height: rect.height };\n\n stringCache.widthCache[cacheKey] = result;\n\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n\n return result;\n } catch (e) {\n return { width: 0, height: 0 };\n }\n};\n\ninterface ContainerOffset {\n top: number;\n left: number;\n}\n\nexport const getOffset = (rect: ContainerOffset): ContainerOffset => {\n return {\n top: rect.top + window.scrollY - document.documentElement.clientTop,\n left: rect.left + window.scrollX - document.documentElement.clientLeft,\n };\n};\n","const MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nconst ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nconst CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nconst NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\n\nconst CONVERSION_RATES: Record<string, number> = {\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} as const;\n\nconst FIXED_CSS_LENGTH_UNITS: Array<keyof typeof CONVERSION_RATES> = Object.keys(CONVERSION_RATES);\nconst STR_NAN = 'NaN';\n\nfunction convertToPx(value: number, unit: string): number {\n return value * CONVERSION_RATES[unit];\n}\n\nclass DecimalCSS {\n static parse(str: string) {\n const [, numStr, unit] = NUM_SPLIT_REGEX.exec(str) ?? [];\n\n return new DecimalCSS(parseFloat(numStr), unit ?? '');\n }\n\n constructor(public num: number, public unit: string) {\n this.num = num;\n this.unit = unit;\n\n if (Number.isNaN(num)) {\n this.unit = '';\n }\n\n if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n this.num = NaN;\n this.unit = '';\n }\n\n if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n this.num = convertToPx(num, unit);\n this.unit = 'px';\n }\n }\n\n add(other: DecimalCSS) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n\n return new DecimalCSS(this.num + other.num, this.unit);\n }\n\n subtract(other: DecimalCSS) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n\n return new DecimalCSS(this.num - other.num, this.unit);\n }\n\n multiply(other: DecimalCSS) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n\n return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n }\n\n divide(other: DecimalCSS) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n\n return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n }\n\n toString() {\n return `${this.num}${this.unit}`;\n }\n\n isNaN() {\n return Number.isNaN(this.num);\n }\n}\n\nfunction calculateArithmetic(expr: string): string {\n if (expr.includes(STR_NAN)) {\n return STR_NAN;\n }\n\n let newExpr = expr;\n while (newExpr.includes('*') || newExpr.includes('/')) {\n const [, leftOperand, operator, rightOperand] = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr) ?? [];\n const lTs = DecimalCSS.parse(leftOperand ?? '');\n const rTs = DecimalCSS.parse(rightOperand ?? '');\n const 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\n while (newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)) {\n const [, leftOperand, operator, rightOperand] = ADD_OR_SUBTRACT_REGEX.exec(newExpr) ?? [];\n const lTs = DecimalCSS.parse(leftOperand ?? '');\n const rTs = DecimalCSS.parse(rightOperand ?? '');\n const 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\n return newExpr;\n}\n\nconst PARENTHESES_REGEX = /\\(([^()]*)\\)/;\n\nfunction calculateParentheses(expr: string): string {\n let newExpr = expr;\n while (newExpr.includes('(')) {\n const [, parentheticalExpression] = PARENTHESES_REGEX.exec(newExpr);\n newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n }\n\n return newExpr;\n}\n\nfunction evaluateExpression(expression: string): string {\n let newExpr = expression.replace(/\\s+/g, '');\n newExpr = calculateParentheses(newExpr);\n newExpr = calculateArithmetic(newExpr);\n\n return newExpr;\n}\n\nexport function safeEvaluateExpression(expression: string): string {\n try {\n return evaluateExpression(expression);\n } catch (e) {\n /* istanbul ignore next */\n return STR_NAN;\n }\n}\n\nexport function reduceCSSCalc(expression: string): string {\n const result = safeEvaluateExpression(expression.slice(5, -1));\n\n if (result === STR_NAN) {\n // notify the user\n return '';\n }\n\n return result;\n}\n","import React, { CSSProperties, SVGProps, useMemo } from 'react';\n\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';\n\nconst BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\ninterface WordWithComputedWidth {\n word: string;\n width: number;\n}\n\ninterface CalculatedWordWidths {\n wordsWithComputedWidth: Array<WordWithComputedWidth>;\n spaceWidth: number;\n}\n\ntype CalculateWordWidthsParam = Pick<Props, 'children' | 'breakAll' | 'style'>;\n\nconst calculateWordWidths = ({ children, breakAll, style }: CalculateWordWidthsParam): CalculatedWordWidths => {\n try {\n let words: string[] = [];\n if (!isNil(children)) {\n if (breakAll) {\n words = children.toString().split('');\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n\n const wordsWithComputedWidth = words.map(word => ({ word, width: getStringSize(word, style).width }));\n\n const spaceWidth = breakAll ? 0 : getStringSize('\\u00A0', style).width;\n\n return { wordsWithComputedWidth, spaceWidth };\n } catch (e) {\n return null;\n }\n};\n\ninterface TextProps {\n scaleToFit?: boolean;\n angle?: number;\n textAnchor?: 'start' | 'middle' | 'end' | 'inherit';\n verticalAnchor?: 'start' | 'middle' | 'end';\n style?: CSSProperties;\n lineHeight?: number | string;\n breakAll?: boolean;\n children?: string | number;\n maxLines?: number;\n}\n\nexport type Props = Omit<SVGProps<SVGTextElement>, 'textAnchor' | 'verticalAnchor'> & TextProps;\n\ninterface Words {\n words: Array<string>;\n width?: number;\n}\n\ntype CalculateWordsByLinesProps = Pick<Props, 'maxLines' | 'children' | 'style' | 'breakAll'>;\n\nconst calculateWordsByLines = (\n { maxLines, children, style, breakAll }: CalculateWordsByLinesProps,\n initialWordsWithComputedWith: Array<WordWithComputedWidth>,\n spaceWidth: number,\n lineWidth: number | string,\n scaleToFit?: boolean,\n): Array<Words> => {\n const shouldLimitLines = isNumber(maxLines);\n const text = children as string;\n\n const calculate = (words: Array<WordWithComputedWidth> = []) =>\n words.reduce((result, { word, width }) => {\n const currentLine = result[result.length - 1];\n\n if (\n currentLine &&\n (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))\n ) {\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 const newLine = { words: [word], width };\n result.push(newLine);\n }\n\n return result;\n }, []);\n\n const originalResult = calculate(initialWordsWithComputedWith);\n\n const findLongestLine = (words: Array<Words>): Words =>\n words.reduce((a: Words, b: Words) => (a.width > b.width ? a : b));\n\n if (!shouldLimitLines) {\n return originalResult;\n }\n\n const suffix = '…';\n\n const checkOverflow = (index: number): [boolean, Words[]] => {\n const tempText = text.slice(0, index);\n\n const words = calculateWordWidths({\n breakAll,\n style,\n children: tempText + suffix,\n }).wordsWithComputedWidth;\n\n const result = calculate(words);\n\n const doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n\n return [doesOverflow, result];\n };\n\n let start = 0;\n let end = text.length - 1;\n\n let iterations = 0;\n let trimmedResult;\n\n while (start <= end && iterations <= text.length - 1) {\n const middle = Math.floor((start + end) / 2);\n const prev = middle - 1;\n\n const [doesPrevOverflow, result] = checkOverflow(prev);\n const [doesMiddleOverflow] = checkOverflow(middle);\n\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\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};\n\nconst getWordsWithoutCalculate = (children: React.ReactNode): Array<Words> => {\n const words = !isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{ words }];\n};\n\ntype GetWordsByLinesProps = Pick<Props, 'width' | 'scaleToFit' | 'children' | 'style' | 'breakAll' | 'maxLines'>;\n\nconst getWordsByLines = ({ width, scaleToFit, children, style, breakAll, maxLines }: GetWordsByLinesProps) => {\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !Global.isSsr) {\n let wordsWithComputedWidth: Array<WordWithComputedWidth>, spaceWidth: number;\n\n const wordWidths = calculateWordWidths({ breakAll, children, style });\n\n if (wordWidths) {\n const { wordsWithComputedWidth: wcw, spaceWidth: sw } = wordWidths;\n\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n\n return calculateWordsByLines(\n { breakAll, children, maxLines, style },\n wordsWithComputedWidth,\n spaceWidth,\n width,\n scaleToFit,\n );\n }\n return getWordsWithoutCalculate(children);\n};\n\nconst DEFAULT_FILL = '#808080';\n\nexport const Text = ({\n x: propsX = 0,\n y: propsY = 0,\n lineHeight = '1em',\n // Magic number from d3\n capHeight = '0.71em',\n scaleToFit = false,\n textAnchor = 'start',\n // Maintain compat with existing charts / default SVG behavior\n verticalAnchor = 'end',\n fill = DEFAULT_FILL,\n ...props\n}: Props) => {\n const wordsByLines: Array<Words> = useMemo(() => {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit,\n style: props.style,\n width: props.width,\n });\n }, [props.breakAll, props.children, props.maxLines, scaleToFit, props.style, props.width]);\n\n const { dx, dy, angle, className, breakAll, ...textProps } = props;\n\n if (!isNumOrStr(propsX) || !isNumOrStr(propsY)) {\n return null;\n }\n const x = (propsX as number) + (isNumber(dx as number) ? (dx as number) : 0);\n const y = (propsY as number) + (isNumber(dy as number) ? (dy as number) : 0);\n\n let startDy: string;\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(`calc(${capHeight})`);\n break;\n case 'middle':\n startDy = reduceCSSCalc(`calc(${(wordsByLines.length - 1) / 2} * -${lineHeight} + (${capHeight} / 2))`);\n break;\n default:\n startDy = reduceCSSCalc(`calc(${wordsByLines.length - 1} * -${lineHeight})`);\n break;\n }\n\n const transforms = [];\n if (scaleToFit) {\n const lineWidth = wordsByLines[0].width;\n const { width } = props;\n transforms.push(`scale(${(isNumber(width as number) ? (width as number) / lineWidth : 1) / lineWidth})`);\n }\n if (angle) {\n transforms.push(`rotate(${angle}, ${x}, ${y})`);\n }\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n\n return (\n <text\n {...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 >\n {wordsByLines.map((line, index) => {\n const words = line.words.join(breakAll ? '' : ' ');\n return (\n // duplicate words will cause duplicate keys\n // eslint-disable-next-line react/no-array-index-key\n <tspan x={x} dy={index === 0 ? startDy : lineHeight} key={`${words}-${index}`}>\n {words}\n </tspan>\n );\n })}\n </text>\n );\n};\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\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);","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","/**\n * @fileOverview Render a group of error bar\n */\nimport React, { SVGProps } from 'react';\nimport invariant from 'tiny-invariant';\nimport { Layer } from '../container/Layer';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { D3Scale, DataKey } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { BarRectangleItem } from './Bar';\nimport { LinePointItem } from './Line';\nimport { ScatterPointItem } from './Scatter';\n\nexport interface ErrorBarDataItem {\n x: number;\n y: number;\n value: number;\n errorVal?: number[] | number;\n}\n\nexport type ErrorBarDataPointFormatter = (\n entry: BarRectangleItem | LinePointItem | ScatterPointItem,\n dataKey: DataKey<any>,\n) => ErrorBarDataItem;\n\ninterface InternalErrorBarProps {\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n data?: any[];\n layout?: 'horizontal' | 'vertical';\n dataPointFormatter?: ErrorBarDataPointFormatter;\n /** The offset between central and the given coordinate, often set by <Bar/> */\n offset?: number;\n}\n\ninterface ErrorBarProps extends InternalErrorBarProps {\n dataKey: DataKey<any>;\n /** the width of the error bar ends */\n width?: number;\n /**\n * Only used for ScatterChart with error bars in two directions.\n * Only accepts a value of \"x\" or \"y\" and makes the error bars lie in that direction.\n */\n direction?: 'x' | 'y';\n}\n\nexport type Props = SVGProps<SVGLineElement> & ErrorBarProps;\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ErrorBar extends React.Component<Props> {\n static defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal',\n };\n\n static displayName = 'ErrorBar';\n\n render() {\n const { offset, layout, width, dataKey, data, dataPointFormatter, xAxis, yAxis, ...others } = this.props;\n const svgProps = filterProps(others, false);\n\n invariant(\n !(this.props.direction === 'x' && xAxis.type !== 'number'),\n 'ErrorBar requires Axis type property to be \"number\".',\n );\n\n const errorBars = data.map((entry: any) => {\n const { x, y, value, errorVal } = dataPointFormatter(entry, dataKey);\n\n if (!errorVal) {\n return null;\n }\n\n const lineCoordinates = [];\n let lowBound, highBound;\n\n if (Array.isArray(errorVal)) {\n [lowBound, highBound] = errorVal;\n } else {\n lowBound = highBound = errorVal;\n }\n\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n const { scale } = xAxis;\n\n const yMid = y + offset;\n const yMin = yMid + width;\n const yMax = yMid - width;\n\n const xMin = scale(value - lowBound);\n const xMax = scale(value + highBound);\n\n // the right line of |--|\n lineCoordinates.push({ x1: xMax, y1: yMin, x2: xMax, y2: yMax });\n // the middle line of |--|\n lineCoordinates.push({ x1: xMin, y1: yMid, x2: xMax, y2: yMid });\n // the left line of |--|\n lineCoordinates.push({ x1: xMin, y1: yMin, x2: xMin, y2: yMax });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n const { scale } = yAxis;\n\n const xMid = x + offset;\n const xMin = xMid - width;\n const xMax = xMid + width;\n\n const yMin = scale(value - lowBound);\n const yMax = scale(value + highBound);\n\n // the top line\n lineCoordinates.push({ x1: xMin, y1: yMax, x2: xMax, y2: yMax });\n // the middle line\n lineCoordinates.push({ x1: xMid, y1: yMin, x2: xMid, y2: yMax });\n // the bottom line\n lineCoordinates.push({ x1: xMin, y1: yMin, x2: xMax, y2: yMin });\n }\n\n return (\n <Layer\n className=\"recharts-errorBar\"\n key={`bar-${lineCoordinates.map(c => `${c.x1}-${c.x2}-${c.y1}-${c.y2}`)}`}\n {...svgProps}\n >\n {lineCoordinates.map(coordinates => (\n <line\n {...coordinates}\n key={`line-${coordinates.x1}-${coordinates.x2}-${coordinates.y1}-${coordinates.y2}`}\n />\n ))}\n </Layer>\n );\n });\n\n return <Layer className=\"recharts-errorBars\">{errorBars}</Layer>;\n }\n}\n","import { ReactNode, ReactElement } from 'react';\nimport { Legend, Props as LegendProps } from '../component/Legend';\nimport { FormattedGraphicalItem, getMainColorOfGraphicItem } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { Payload as LegendPayload } from '../component/DefaultLegendContent';\n\ninterface SectorOrDataEntry {\n name: any;\n fill: any;\n}\n\nexport const getLegendProps = ({\n children,\n formattedGraphicalItems,\n legendWidth,\n legendContent,\n}: {\n children: ReactNode[];\n formattedGraphicalItems?: Array<FormattedGraphicalItem>;\n legendWidth: number;\n legendContent?: 'children';\n}): null | (LegendProps & { item: ReactElement }) => {\n const legendItem = findChildByType(children, Legend);\n if (!legendItem) {\n return null;\n }\n const legendDefaultProps = Legend.defaultProps as LegendProps;\n const legendProps: typeof legendItem.props =\n legendDefaultProps !== undefined ? { ...legendDefaultProps, ...legendItem.props } : {};\n\n let legendData: LegendPayload[];\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce((result, { item, props }) => {\n const data: ReadonlyArray<SectorOrDataEntry> = props.sectors || props.data || [];\n\n return result.concat(\n data.map((entry: SectorOrDataEntry) => ({\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(({ item }): LegendPayload => {\n const itemDefaultProps = (item.type as any).defaultProps;\n const itemProps: typeof item.props = itemDefaultProps !== undefined ? { ...itemDefaultProps, ...item.props } : {};\n const { dataKey, name, legendType, hide } = itemProps;\n\n return {\n inactive: hide,\n 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\n return {\n ...legendProps,\n ...Legend.getWithHeight(legendItem, legendWidth),\n payload: legendData,\n item: legendItem,\n };\n};\n","import * as d3Scales from 'victory-vendor/d3-scale';\nimport {\n Series,\n stack as shapeStack,\n stackOffsetExpand,\n stackOffsetNone,\n stackOffsetSilhouette,\n stackOffsetWiggle,\n stackOrderNone,\n} 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';\n\nimport { ReactElement, ReactNode } from 'react';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\n\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';\nimport {\n AxisType,\n BaseAxisProps,\n DataKey,\n LayoutType,\n LegendType,\n PolarLayoutType,\n NumberDomain,\n TickItem,\n CategoricalDomain,\n StackOffsetType,\n Margin,\n ChartOffset,\n} from './types';\nimport { getLegendProps } from './getLegendProps';\n\n// Exported for backwards compatibility\nexport { getLegendProps };\n\nexport function getValueByDataKey<T>(obj: T, dataKey: DataKey<T>, defaultValue?: any) {\n if (isNil(obj) || isNil(dataKey)) {\n return defaultValue;\n }\n\n if (isNumOrStr(dataKey)) {\n return get(obj, dataKey, defaultValue);\n }\n\n if (isFunction(dataKey)) {\n return dataKey(obj);\n }\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<T>(\n data: Array<T>,\n key: DataKey<T>,\n type: BaseAxisProps['type'],\n filterNil?: boolean,\n): NumberDomain | CategoricalDomain {\n const flattenData: unknown[] = flatMap(data, (entry: T): unknown => getValueByDataKey(entry, key));\n\n if (type === 'number') {\n // @ts-expect-error parseFloat type only accepts strings\n const domain: number[] = flattenData.filter(entry => isNumber(entry) || parseFloat(entry));\n\n return domain.length ? [min(domain), max(domain)] : [Infinity, -Infinity];\n }\n\n const validateData = filterNil ? flattenData.filter(entry => !isNil(entry)) : flattenData;\n\n // Supports x-axis of Date type\n return validateData.map(entry => (isNumOrStr(entry) || entry instanceof Date ? entry : ''));\n}\n\nexport const calculateActiveTickIndex = (\n coordinate: number,\n ticks: Array<TickItem> = [],\n unsortedTicks?: Array<TickItem>,\n axis?: BaseAxisProps,\n) => {\n let index = -1;\n const len = 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\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n const { range } = axis;\n // ticks are distributed in a circle\n for (let i = 0; i < len; i++) {\n const before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n const cur = unsortedTicks[i].coordinate;\n const after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n let sameDirectionCoord;\n\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n const diffInterval = [];\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n\n const 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\n const 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 const sameInterval = [\n Math.min(cur, (sameDirectionCoord + cur) / 2),\n Math.max(cur, (sameDirectionCoord + cur) / 2),\n ];\n\n if (\n (coordinate > sameInterval[0] && coordinate <= sameInterval[1]) ||\n (coordinate >= diffInterval[0] && coordinate <= diffInterval[1])\n ) {\n ({ index } = unsortedTicks[i]);\n break;\n }\n } else {\n const minValue = Math.min(before, after);\n const maxValue = Math.max(before, after);\n\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n ({ index } = unsortedTicks[i]);\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (let i = 0; i < len; i++) {\n if (\n (i === 0 && coordinate <= (ticks[i].coordinate + ticks[i + 1].coordinate) / 2) ||\n (i > 0 &&\n i < len - 1 &&\n coordinate > (ticks[i].coordinate + ticks[i - 1].coordinate) / 2 &&\n coordinate <= (ticks[i].coordinate + ticks[i + 1].coordinate) / 2) ||\n (i === len - 1 && coordinate > (ticks[i].coordinate + ticks[i - 1].coordinate) / 2)\n ) {\n ({ index } = ticks[i]);\n break;\n }\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 const getMainColorOfGraphicItem = (item: ReactElement) => {\n const {\n type: { displayName },\n } = item as any; // TODO: check if displayName is valid.\n const defaultedProps = (item.type as any)?.defaultProps\n ? { ...(item.type as any).defaultProps, ...item.props }\n : item.props;\n const { stroke, fill } = defaultedProps;\n let result;\n\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\n return result;\n};\n\nexport interface FormattedGraphicalItem {\n props: {\n sectors?: ReadonlyArray<any>;\n data?: ReadonlyArray<any>;\n };\n childIndex: number;\n item: ReactElement<{ legendType?: LegendType; hide: boolean; name?: string; dataKey: DataKey<any> }>;\n}\n\nexport type BarSetup = {\n barSize: number | string;\n stackList: ReadonlyArray<ReactElement>;\n item: ReactElement;\n};\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 const getBarSizeList = ({\n barSize: globalSize,\n totalSize,\n stackGroups = {},\n}: {\n barSize: number | string;\n stackGroups: AxisStackGroups;\n totalSize: number;\n}): Record<string, ReadonlyArray<BarSetup>> => {\n if (!stackGroups) {\n return {};\n }\n\n const result: Record<string, Array<BarSetup>> = {};\n const numericAxisIds = Object.keys(stackGroups);\n\n for (let i = 0, len = numericAxisIds.length; i < len; i++) {\n const sgs = stackGroups[numericAxisIds[i]].stackGroups;\n const stackIds = Object.keys(sgs);\n\n for (let j = 0, sLen = stackIds.length; j < sLen; j++) {\n const { items, cateAxisId } = sgs[stackIds[j]];\n\n const barItems = items.filter(item => getDisplayName(item.type).indexOf('Bar') >= 0);\n\n if (barItems && barItems.length) {\n const barItemDefaultProps = (barItems[0].type as any).defaultProps;\n const barItemProps =\n barItemDefaultProps !== undefined ? { ...barItemDefaultProps, ...barItems[0].props } : barItems[0].props;\n const { barSize: selfSize } = barItemProps;\n const cateId = barItemProps[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n const barSize: string | number | undefined = isNil(selfSize) ? globalSize : selfSize;\n\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\n return result;\n};\n\nexport type BarPosition = {\n item: ReactElement;\n position: {\n /**\n * Offset is returned always from zero position.\n * So in a way it's \"absolute\".\n *\n * NOT inbetween bars, but always from zero.\n */\n offset: number;\n /**\n * Size of the bar.\n * This will be usually a number.\n * But if the input data is not well formed, undefined or NaN will be on the output too.\n */\n size: number | undefined | typeof NaN;\n };\n};\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 const getBarPosition = ({\n barGap,\n barCategoryGap,\n bandSize,\n sizeList = [],\n maxBarSize,\n}: {\n barGap: string | number;\n barCategoryGap: string | number;\n bandSize: number;\n sizeList: ReadonlyArray<BarSetup>;\n maxBarSize: number;\n}): ReadonlyArray<BarPosition> => {\n const len = sizeList.length;\n if (len < 1) return null;\n\n let realBarGap = getPercentValue(barGap, bandSize, 0, true);\n let result: ReadonlyArray<BarPosition>;\n const initialValue: ReadonlyArray<BarPosition> = [];\n\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n let useFull = false;\n let fullBarSize = bandSize / len;\n // @ts-expect-error the type check above does not check for type number explicitly\n let sum = sizeList.reduce((res, entry) => res + entry.barSize || 0, 0);\n sum += (len - 1) * realBarGap;\n\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\n const offset = ((bandSize - sum) / 2) >> 0;\n let prev: BarPosition['position'] = { offset: offset - realBarGap, size: 0 };\n\n result = sizeList.reduce((res, entry) => {\n const newPosition: BarPosition = {\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 const newRes: Array<BarPosition> = [...res, newPosition];\n\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(item => {\n newRes.push({ item, position: prev });\n });\n }\n return newRes;\n }, initialValue);\n } else {\n const offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n let originalSize = (bandSize - 2 * offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n const size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n\n result = sizeList.reduce((res, entry, i) => {\n const newRes = [\n ...res,\n {\n item: entry.item,\n position: {\n offset: offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size,\n },\n },\n ];\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(item => {\n newRes.push({ item, position: newRes[newRes.length - 1].position });\n });\n }\n return newRes;\n }, initialValue);\n }\n\n return result;\n};\n\nexport const appendOffsetOfLegend = (\n offset: ChartOffset,\n _unused: unknown,\n props: {\n width?: number;\n margin: Margin;\n children?: ReactNode[];\n },\n legendBox: DOMRect | null,\n): ChartOffset => {\n const { children, width, margin } = props;\n const legendWidth = width - (margin.left || 0) - (margin.right || 0);\n const legendProps = getLegendProps({ children, legendWidth });\n if (legendProps) {\n const { width: boxWidth, height: boxHeight } = legendBox || {};\n const { align, verticalAlign, layout } = legendProps;\n\n if (\n (layout === 'vertical' || (layout === 'horizontal' && verticalAlign === 'middle')) &&\n align !== 'center' &&\n isNumber(offset[align])\n ) {\n return { ...offset, [align]: offset[align] + (boxWidth || 0) };\n }\n\n if (\n (layout === 'horizontal' || (layout === 'vertical' && align === 'center')) &&\n verticalAlign !== 'middle' &&\n isNumber(offset[verticalAlign])\n ) {\n return { ...offset, [verticalAlign]: offset[verticalAlign] + (boxHeight || 0) };\n }\n }\n\n return offset;\n};\n\nconst isErrorBarRelevantForAxis = (layout?: LayoutType, axisType?: AxisType, direction?: 'x' | 'y'): boolean => {\n if (isNil(axisType)) {\n return true;\n }\n\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n\n return true;\n};\n\nexport const getDomainOfErrorBars = (\n data: Array<object>,\n item: ReactElement,\n dataKey: DataKey<any>,\n layout?: LayoutType,\n axisType?: AxisType,\n): NumberDomain | null => {\n const { children } = item.props;\n const errorBars = findAllByType(children, ErrorBar).filter(errorBarChild =>\n isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction),\n );\n\n if (errorBars && errorBars.length) {\n const keys: ReadonlyArray<DataKey<any>> = errorBars.map(errorBarChild => errorBarChild.props.dataKey);\n\n return data.reduce<NumberDomain>(\n (result: NumberDomain, entry: object): NumberDomain => {\n const entryValue = getValueByDataKey(entry, dataKey);\n if (isNil(entryValue)) return result;\n\n const mainValue = Array.isArray(entryValue) ? [min(entryValue), max(entryValue)] : [entryValue, entryValue];\n const errorDomain = keys.reduce(\n (prevErrorArr: [number, number], k: DataKey<any>): NumberDomain => {\n const errorValue = getValueByDataKey(entry, k, 0);\n const lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n const upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n },\n [Infinity, -Infinity],\n );\n\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n },\n [Infinity, -Infinity],\n );\n }\n\n return null;\n};\n\nexport const parseErrorBarsOfAxis = (\n data: any[],\n items: any[],\n dataKey: any,\n axisType: AxisType,\n layout?: LayoutType,\n): NumberDomain | null => {\n const domains = items\n .map(item => getDomainOfErrorBars(data, item, dataKey, layout, axisType))\n .filter(entry => !isNil(entry));\n\n if (domains && domains.length) {\n return domains.reduce(\n (result, entry) => [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])],\n [Infinity, -Infinity],\n );\n }\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 const getDomainOfItemsWithSameAxis = (\n data: any[],\n items: ReactElement[],\n type: BaseAxisProps['type'],\n layout?: LayoutType,\n filterNil?: boolean,\n) => {\n const domains: (NumberDomain | CategoricalDomain | null)[] = items.map(item => {\n const { dataKey } = item.props;\n\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\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 (result, entry) => [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])],\n [Infinity, -Infinity],\n );\n }\n\n const tag: Record<string, any> = {};\n // Get the union set of category axis\n return domains.reduce((result, entry) => {\n for (let 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};\n\nexport const isCategoricalAxis = (layout: LayoutType | PolarLayoutType, axisType: AxisType) =>\n (layout === 'horizontal' && axisType === 'xAxis') ||\n (layout === 'vertical' && axisType === 'yAxis') ||\n (layout === 'centric' && axisType === 'angleAxis') ||\n (layout === 'radial' && axisType === 'radiusAxis');\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 const getCoordinatesOfGrid = (\n ticks: Array<TickItem>,\n minValue: number,\n maxValue: number,\n syncWithTicks: Boolean,\n) => {\n if (syncWithTicks) {\n return ticks.map(entry => entry.coordinate);\n }\n\n let hasMin, hasMax;\n\n const values = ticks.map(entry => {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\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 const getTicksOfAxis = (\n axis: BaseAxisProps & {\n duplicateDomain?: any;\n realScaleType?: 'scaleBand' | 'band' | 'point' | 'linear';\n scale?: any;\n axisType?: AxisType;\n ticks?: any;\n niceTicks?: any;\n isCategorical?: boolean;\n categoricalDomain?: any;\n },\n isGrid?: boolean,\n isAll?: boolean,\n): TickItem[] | null => {\n if (!axis) return null;\n const { scale } = axis;\n const { duplicateDomain, type, range } = axis;\n\n const offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n let offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n\n offset = axis.axisType === 'angleAxis' && 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 const result = (axis.ticks || axis.niceTicks).map((entry: TickItem) => {\n const scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n\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,\n };\n });\n\n return result.filter((row: TickItem) => !isNan(row.coordinate));\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((entry: any, index: number) => ({\n coordinate: scale(entry) + offset,\n value: entry,\n index,\n offset,\n }));\n }\n\n if (scale.ticks && !isAll) {\n return scale\n .ticks(axis.tickCount)\n .map((entry: any) => ({ coordinate: scale(entry) + offset, value: entry, offset }));\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map((entry: any, index: number) => ({\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index,\n offset,\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\nconst handlerWeakMap = new WeakMap();\nexport const combineEventHandlers = (defaultHandler: Function, childHandler: Function | undefined): Function => {\n if (typeof childHandler !== 'function') {\n return defaultHandler;\n }\n\n if (!handlerWeakMap.has(defaultHandler)) {\n handlerWeakMap.set(defaultHandler, new WeakMap());\n }\n const childWeakMap = handlerWeakMap.get(defaultHandler);\n\n if (childWeakMap.has(childHandler)) {\n return childWeakMap.get(childHandler);\n }\n\n const combineHandler = (...args: any[]) => {\n defaultHandler(...args);\n childHandler(...args);\n };\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 const parseScale = (\n axis: {\n scale: 'auto' | string | Function;\n type?: BaseAxisProps['type'];\n layout?: 'radial' | unknown;\n axisType?: 'radiusAxis' | 'angleAxis' | unknown;\n },\n chartType?: string,\n hasBar?: boolean,\n): { scale: any; realScaleType?: string } => {\n const { scale, type, layout, axisType } = axis;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return { scale: d3Scales.scaleBand(), realScaleType: 'band' };\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return { scale: d3Scales.scaleLinear(), realScaleType: 'linear' };\n }\n\n if (\n type === 'category' &&\n chartType &&\n (chartType.indexOf('LineChart') >= 0 ||\n chartType.indexOf('AreaChart') >= 0 ||\n (chartType.indexOf('ComposedChart') >= 0 && !hasBar))\n ) {\n return { scale: d3Scales.scalePoint(), realScaleType: 'point' };\n }\n if (type === 'category') {\n return { scale: d3Scales.scaleBand(), realScaleType: 'band' };\n }\n\n return { scale: d3Scales.scaleLinear(), realScaleType: 'linear' };\n }\n if (isString(scale)) {\n const name = `scale${upperFirst(scale)}`;\n\n return {\n scale: ((d3Scales as Record<string, any>)[name] || d3Scales.scalePoint)(),\n realScaleType: (d3Scales as Record<string, any>)[name] ? name : 'point',\n };\n }\n\n return isFunction(scale) ? { scale } : { scale: d3Scales.scalePoint(), realScaleType: 'point' };\n};\nconst EPS = 1e-4;\nexport const checkDomainOfScale = (scale: any) => {\n const domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n const len = domain.length;\n const range = scale.range();\n const minValue = Math.min(range[0], range[1]) - EPS;\n const maxValue = Math.max(range[0], range[1]) + EPS;\n const first = scale(domain[0]);\n const last = scale(domain[len - 1]);\n\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\n\nexport const findPositionOfBar = (barPosition: any[], child: ReactNode) => {\n if (!barPosition) {\n return null;\n }\n\n for (let i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\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 const truncateByDomain = (value: [number, number], domain: number[]) => {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n\n const minValue = Math.min(domain[0], domain[1]);\n const maxValue = Math.max(domain[0], domain[1]);\n\n const result = [value[0], value[1]];\n if (!isNumber(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n\n if (!isNumber(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n\n if (result[1] < minValue) {\n result[1] = minValue;\n }\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 const offsetSign: OffsetAccessor = series => {\n const n = series.length;\n if (n <= 0) {\n return;\n }\n\n for (let j = 0, m = series[0].length; j < m; ++j) {\n let positive = 0;\n let negative = 0;\n\n for (let i = 0; i < n; ++i) {\n const 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 const offsetPositive: OffsetAccessor = series => {\n const n = series.length;\n if (n <= 0) {\n return;\n }\n\n for (let j = 0, m = series[0].length; j < m; ++j) {\n let positive = 0;\n\n for (let i = 0; i < n; ++i) {\n const 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 */\ntype OffsetAccessor = (series: Array<Series<Record<string, unknown>, string>>, order: number[]) => void;\n\nconst STACK_OFFSET_MAP: Record<string, OffsetAccessor> = {\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};\n\nexport const getStackedData = (\n data: ReadonlyArray<Record<string, unknown>>,\n stackItems: ReadonlyArray<{ props: { dataKey?: DataKey<any> } }>,\n offsetType: StackOffsetType,\n): ReadonlyArray<Series<Record<string, unknown>, string>> => {\n const dataKeys = stackItems.map(item => item.props.dataKey);\n const offsetAccessor: OffsetAccessor = STACK_OFFSET_MAP[offsetType];\n const stack = shapeStack<Record<string, unknown>>()\n // @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n .keys(dataKeys)\n .value((d, key) => +getValueByDataKey(d, key, 0))\n .order(stackOrderNone)\n // @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n\n return stack(data);\n};\n\ntype AxisId = string;\nexport type StackId = string | number | symbol;\n\nexport type ParentStackGroup = {\n hasStack: boolean;\n stackGroups: Record<StackId, ChildStackGroup>;\n};\n\nexport type GenericChildStackGroup<T> = {\n numericAxisId: string;\n cateAxisId: string;\n items: Array<ReactElement>;\n stackedData?: ReadonlyArray<T>;\n};\n\nexport type ChildStackGroup = GenericChildStackGroup<Series<Record<string, unknown>, string>>;\n\nexport type AxisStackGroups = Record<AxisId, ParentStackGroup>;\n\nexport const getStackGroupsByAxisId = (\n data: ReadonlyArray<Record<string, unknown>> | undefined,\n _items: Array<ReactElement>,\n numericAxisId: string,\n cateAxisId: string,\n offsetType: StackOffsetType,\n reverseStackOrder: boolean,\n): AxisStackGroups => {\n if (!data) {\n return null;\n }\n\n // reversing items to affect render order (for layering)\n const items = reverseStackOrder ? _items.reverse() : _items;\n\n const parentStackGroupsInitialValue: Record<AxisId, ParentStackGroup> = {};\n\n const stackGroups: Record<AxisId, ParentStackGroup> = items.reduce((result, item) => {\n const defaultedProps = (item.type as any)?.defaultProps\n ? { ...(item.type as any).defaultProps, ...item.props }\n : item.props;\n const { stackId, hide } = defaultedProps;\n\n if (hide) {\n return result;\n }\n\n const axisId: AxisId = defaultedProps[numericAxisId];\n const parentGroup: ParentStackGroup = result[axisId] || { hasStack: false, stackGroups: {} };\n\n if (isNumOrStr(stackId)) {\n const childGroup: ChildStackGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId,\n cateAxisId,\n items: [],\n };\n\n childGroup.items.push(item);\n\n parentGroup.hasStack = true;\n\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId,\n cateAxisId,\n items: [item],\n };\n }\n\n return { ...result, [axisId]: parentGroup };\n }, parentStackGroupsInitialValue);\n\n const axisStackGroupsInitialValue: AxisStackGroups = {};\n\n return Object.keys(stackGroups).reduce((result, axisId) => {\n const group = stackGroups[axisId];\n\n if (group.hasStack) {\n const stackGroupsInitialValue: Record<StackId, ChildStackGroup> = {};\n group.stackGroups = Object.keys(group.stackGroups).reduce((res, stackId) => {\n const g = group.stackGroups[stackId];\n\n return {\n ...res,\n [stackId]: {\n numericAxisId,\n cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType),\n },\n };\n }, stackGroupsInitialValue);\n }\n\n return { ...result, [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 const getTicksOfScale = (scale: any, opts: any) => {\n const { realScaleType, type, tickCount, originalDomain, allowDecimals } = opts;\n const scaleType = realScaleType || opts.scale;\n\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n\n if (\n tickCount &&\n type === 'number' &&\n originalDomain &&\n (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')\n ) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n const domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n const tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n\n scale.domain([min(tickValues), max(tickValues)]);\n\n return { niceTicks: tickValues };\n }\n if (tickCount && type === 'number') {\n const domain = scale.domain();\n const tickValues = getTickValuesFixedDomain(domain, tickCount, allowDecimals);\n\n return { niceTicks: tickValues };\n }\n\n return null;\n};\n\nexport function getCateCoordinateOfLine<T extends Record<string, unknown>>({\n axis,\n ticks,\n bandSize,\n entry,\n index,\n dataKey,\n}: {\n axis: {\n dataKey?: DataKey<T>;\n allowDuplicatedCategory?: boolean;\n type?: BaseAxisProps['type'];\n scale: (v: number) => number;\n };\n ticks: Array<TickItem>;\n bandSize: number;\n entry: T;\n index: number;\n dataKey?: DataKey<T>;\n}): number | null {\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 const matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n\n const value = getValueByDataKey(entry, !isNil(dataKey) ? dataKey : axis.dataKey);\n\n return !isNil(value) ? axis.scale(value) : null;\n}\n\nexport const getCateCoordinateOfBar = ({\n axis,\n ticks,\n offset,\n bandSize,\n entry,\n index,\n}: {\n axis: any; // RadiusAxisProps & { dataKey?: any }; // TODO: should dataKey be included in RadiusAxisProps?\n ticks: Array<TickItem>;\n offset: any;\n bandSize: number;\n entry: any;\n index: number;\n}) => {\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n const value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n\n return !isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\n\nexport const getBaseValueOfBar = ({\n numericAxis,\n}: {\n numericAxis: any; // AngleAxisProps | RadiusAxisProps\n}) => {\n const domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n const minValue = Math.min(domain[0], domain[1]);\n const maxValue = Math.max(domain[0], domain[1]);\n\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n\n return minValue;\n }\n\n return domain[0];\n};\n\nexport const getStackedDataOfItem = <StackedData>(\n item: ReactElement,\n stackGroups: Record<StackId, GenericChildStackGroup<StackedData>>,\n): StackedData | null => {\n const defaultedProps = (item.type as any)?.defaultProps\n ? { ...(item.type as any).defaultProps, ...item.props }\n : item.props;\n const { stackId } = defaultedProps;\n\n if (isNumOrStr(stackId)) {\n const group = stackGroups[stackId];\n\n if (group) {\n const itemIndex = group.items.indexOf(item);\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nconst getDomainOfSingle = (data: Array<Array<any>>): number[] =>\n data.reduce(\n (result: number[], entry: Array<any>): number[] => [\n min(entry.concat([result[0]]).filter(isNumber)),\n max(entry.concat([result[1]]).filter(isNumber)),\n ],\n [Infinity, -Infinity],\n );\n\nexport const getDomainOfStackGroups = (\n stackGroups: Record<StackId, ChildStackGroup>,\n startIndex: number,\n endIndex: number,\n) =>\n Object.keys(stackGroups)\n .reduce(\n (result, stackId) => {\n const group = stackGroups[stackId];\n const { stackedData } = group;\n const domain = stackedData.reduce(\n (res: [number, number], entry) => {\n const s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n },\n [Infinity, -Infinity],\n );\n\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n },\n [Infinity, -Infinity],\n )\n .map(result => (result === Infinity || result === -Infinity ? 0 : result));\n\nexport const MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport const MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\n\nexport const parseSpecifiedDomain = (specifiedDomain: any, dataDomain: any, allowDataOverflow?: boolean) => {\n if (isFunction(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n\n if (!Array.isArray(specifiedDomain)) {\n return dataDomain;\n }\n\n const 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 const value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n\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\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 const value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\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 const getBandSizeOfAxis = (\n axis?: BaseAxisProps,\n ticks?: Array<TickItem>,\n isBar?: boolean,\n): number | undefined => {\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 const bandWidth = axis.scale.bandwidth();\n\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n\n if (axis && ticks && ticks.length >= 2) {\n const orderedTicks = sortBy(ticks, o => o.coordinate);\n let bandSize = Infinity;\n\n for (let i = 1, len = orderedTicks.length; i < len; i++) {\n const cur = orderedTicks[i];\n const prev = orderedTicks[i - 1];\n\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\n return bandSize === Infinity ? 0 : bandSize;\n }\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 const parseDomainOfCategoryAxis = <T>(\n specifiedDomain: ReadonlyArray<T> | undefined,\n calculatedDomain: ReadonlyArray<T>,\n axisChild: ReactElement,\n): ReadonlyArray<T> => {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (isEqual(specifiedDomain, get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n\n return specifiedDomain;\n};\n\nexport const getTooltipItem = (graphicalItem: ReactElement, payload: any) => {\n const defaultedProps = (graphicalItem.type as any).defaultProps\n ? { ...(graphicalItem.type as any).defaultProps, ...graphicalItem.props }\n : graphicalItem.props;\n const { dataKey, name, unit, formatter, tooltipType, chartType, hide } = defaultedProps;\n\n return {\n ...filterProps(graphicalItem, false),\n dataKey,\n unit,\n formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload,\n chartType,\n hide,\n };\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","import isNil from 'lodash/isNil';\nimport { ReactElement, SVGProps, isValidElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nimport { Coordinate, ChartOffset, GeometrySector } from './types';\n\nexport const RADIAN = Math.PI / 180;\n\nexport const degreeToRadian = (angle: number) => (angle * Math.PI) / 180;\n\nexport const radianToDegree = (angleInRadian: number) => (angleInRadian * 180) / Math.PI;\n\nexport const polarToCartesian = (cx: number, cy: number, radius: number, angle: number): Coordinate => ({\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius,\n});\n\nexport const getMaxRadius = (\n width: number,\n height: number,\n offset: ChartOffset = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n) =>\n Math.min(\n Math.abs(width - (offset.left || 0) - (offset.right || 0)),\n Math.abs(height - (offset.top || 0) - (offset.bottom || 0)),\n ) / 2;\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 const formatAxisMap = (\n props: any,\n axisMap: any,\n offset: ChartOffset,\n axisType: 'angleAxis' | 'radiusAxis',\n chartName: string,\n) => {\n const { width, height } = props;\n let { startAngle, endAngle } = props;\n const cx = getPercentValue(props.cx, width, width / 2);\n const cy = getPercentValue(props.cy, height, height / 2);\n const maxRadius = getMaxRadius(width, height, offset);\n const innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n const outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n const ids = Object.keys(axisMap);\n\n return ids.reduce((result, id) => {\n const axis = axisMap[id];\n const { domain, reversed } = axis;\n let range;\n\n if (isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n ({ range } = axis);\n [startAngle, endAngle] = range;\n }\n\n const { realScaleType, scale } = parseScale(axis, chartName);\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n const ticks = getTicksOfScale(scale, { ...axis, realScaleType });\n\n const finalAxis = {\n ...axis,\n ...ticks,\n range,\n radius: outerRadius,\n realScaleType,\n scale,\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n };\n\n return { ...result, [id]: finalAxis };\n }, {});\n};\n\nexport const distanceBetweenPoints = (point: Coordinate, anotherPoint: Coordinate) => {\n const { x: x1, y: y1 } = point;\n const { x: x2, y: y2 } = anotherPoint;\n\n return Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);\n};\n\nexport const getAngleOfPoint = ({ x, y }: Coordinate, { cx, cy }: GeometrySector) => {\n const radius = distanceBetweenPoints({ x, y }, { x: cx, y: cy });\n\n if (radius <= 0) {\n return { radius };\n }\n\n const cos = (x - cx) / radius;\n let angleInRadian = Math.acos(cos);\n\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n\n return { radius, angle: radianToDegree(angleInRadian), angleInRadian };\n};\n\nexport const formatAngleOfSector = ({ startAngle, endAngle }: GeometrySector) => {\n const startCnt = Math.floor(startAngle / 360);\n const endCnt = Math.floor(endAngle / 360);\n const min = Math.min(startCnt, endCnt);\n\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360,\n };\n};\n\nconst reverseFormatAngleOfSetor = (angle: number, { startAngle, endAngle }: GeometrySector) => {\n const startCnt = Math.floor(startAngle / 360);\n const endCnt = Math.floor(endAngle / 360);\n const min = Math.min(startCnt, endCnt);\n\n return angle + min * 360;\n};\n\nexport const inRangeOfSector = ({ x, y }: Coordinate, sector: GeometrySector) => {\n const { radius, angle } = getAngleOfPoint({ x, y }, sector);\n const { innerRadius, outerRadius } = sector;\n\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n\n if (radius === 0) {\n return true;\n }\n\n const { startAngle, endAngle } = formatAngleOfSector(sector);\n let formatAngle = angle;\n let inRange;\n\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\n if (inRange) {\n return { ...sector, radius, angle: reverseFormatAngleOfSetor(formatAngle, sector) };\n }\n\n return null;\n};\n\nexport const getTickClassName = (\n tick?: SVGProps<SVGTextElement> | ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | boolean,\n) => (!isValidElement(tick) && !isFunction(tick) && typeof tick !== 'boolean' ? tick.className : '');\n","import React, { cloneElement, isValidElement, ReactNode, ReactElement, createElement, SVGProps } 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';\nimport { ViewBox, PolarViewBox, CartesianViewBox } from '../util/types';\n\nexport type ContentType = ReactElement | ((props: Props) => ReactNode);\n\nexport type LabelPosition =\n | 'top'\n | 'left'\n | 'right'\n | 'bottom'\n | 'inside'\n | 'outside'\n | 'insideLeft'\n | 'insideRight'\n | 'insideTop'\n | 'insideBottom'\n | 'insideTopLeft'\n | 'insideBottomLeft'\n | 'insideTopRight'\n | 'insideBottomRight'\n | 'insideStart'\n | 'insideEnd'\n | 'end'\n | 'center'\n | 'centerTop'\n | 'centerBottom'\n | 'middle'\n | {\n x?: number;\n y?: number;\n };\n\ninterface LabelProps {\n viewBox?: ViewBox;\n parentViewBox?: ViewBox;\n formatter?: Function;\n value?: number | string;\n offset?: number;\n position?: LabelPosition;\n children?: ReactNode;\n className?: string;\n content?: ContentType;\n textBreakAll?: boolean;\n angle?: number;\n index?: number;\n}\n\nexport type Props = Omit<SVGProps<SVGTextElement>, 'viewBox'> & LabelProps;\n\nexport type ImplicitLabelType =\n | boolean\n | string\n | number\n | ReactElement<SVGElement>\n | ((props: any) => ReactElement<SVGElement>)\n | Props;\n\nconst getLabel = (props: Props) => {\n const { value, formatter } = props;\n const label = isNil(props.children) ? value : props.children;\n\n if (isFunction(formatter)) {\n return formatter(label);\n }\n\n return label;\n};\n\nconst getDeltaAngle = (startAngle: number, endAngle: number) => {\n const sign = mathSign(endAngle - startAngle);\n const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n\n return sign * deltaAngle;\n};\n\nconst renderRadialLabel = (labelProps: Props, label: ReactNode, attrs: SVGProps<SVGTextElement>) => {\n const { position, viewBox, offset, className } = labelProps;\n const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, clockWise } = viewBox as PolarViewBox;\n const radius = (innerRadius + outerRadius) / 2;\n const deltaAngle = getDeltaAngle(startAngle, endAngle);\n const sign = deltaAngle >= 0 ? 1 : -1;\n let labelAngle, direction;\n\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\n direction = deltaAngle <= 0 ? direction : !direction;\n\n const startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n const endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n const path = `M${startPoint.x},${startPoint.y}\n A${radius},${radius},0,1,${direction ? 0 : 1},\n ${endPoint.x},${endPoint.y}`;\n const id = isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n\n return (\n <text {...attrs} dominantBaseline=\"central\" className={clsx('recharts-radial-bar-label', className)}>\n <defs>\n <path id={id} d={path} />\n </defs>\n <textPath xlinkHref={`#${id}`}>{label}</textPath>\n </text>\n );\n};\n\nconst getAttrsOfPolarLabel = (props: Props) => {\n const { viewBox, offset, position } = props;\n const { cx, cy, innerRadius, outerRadius, startAngle, endAngle } = viewBox as PolarViewBox;\n const midAngle = (startAngle + endAngle) / 2;\n\n if (position === 'outside') {\n const { x, y } = polarToCartesian(cx, cy, outerRadius + offset, midAngle);\n\n return {\n x,\n y,\n textAnchor: x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle',\n };\n }\n\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle',\n };\n }\n\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start',\n };\n }\n\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end',\n };\n }\n\n const r = (innerRadius + outerRadius) / 2;\n const { x, y } = polarToCartesian(cx, cy, r, midAngle);\n\n return {\n x,\n y,\n textAnchor: 'middle',\n verticalAnchor: 'middle',\n };\n};\n\nconst getAttrsOfCartesianLabel = (props: Props) => {\n const { viewBox, parentViewBox, offset, position } = props;\n const { x, y, width, height } = viewBox as CartesianViewBox;\n\n // Define vertical offsets and position inverts based on the value being positive or negative\n const verticalSign = height >= 0 ? 1 : -1;\n const verticalOffset = verticalSign * offset;\n const verticalEnd = verticalSign > 0 ? 'end' : 'start';\n const verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n // Define horizontal offsets and position inverts based on the value being positive or negative\n const horizontalSign = width >= 0 ? 1 : -1;\n const horizontalOffset = horizontalSign * offset;\n const horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n const horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n\n if (position === 'top') {\n const attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd,\n };\n\n return {\n ...attrs,\n ...(parentViewBox\n ? {\n height: Math.max(y - (parentViewBox as CartesianViewBox).y, 0),\n width,\n }\n : {}),\n };\n }\n\n if (position === 'bottom') {\n const attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart,\n };\n\n return {\n ...attrs,\n ...(parentViewBox\n ? {\n height: Math.max(\n (parentViewBox as CartesianViewBox).y + (parentViewBox as CartesianViewBox).height - (y + height),\n 0,\n ),\n width,\n }\n : {}),\n };\n }\n\n if (position === 'left') {\n const attrs = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle',\n };\n\n return {\n ...attrs,\n ...(parentViewBox\n ? {\n width: Math.max(attrs.x - (parentViewBox as CartesianViewBox).x, 0),\n height,\n }\n : {}),\n };\n }\n\n if (position === 'right') {\n const attrs = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle',\n };\n return {\n ...attrs,\n ...(parentViewBox\n ? {\n width: Math.max(\n (parentViewBox as CartesianViewBox).x + (parentViewBox as CartesianViewBox).width - attrs.x,\n 0,\n ),\n height,\n }\n : {}),\n };\n }\n\n const sizeAttrs = parentViewBox ? { width, height } : {};\n\n if (position === 'insideLeft') {\n return {\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle',\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideRight') {\n return {\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle',\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideTop') {\n return {\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart,\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideBottom') {\n return {\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd,\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideTopLeft') {\n return {\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart,\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideTopRight') {\n return {\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart,\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideBottomLeft') {\n return {\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd,\n ...sizeAttrs,\n };\n }\n\n if (position === 'insideBottomRight') {\n return {\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd,\n ...sizeAttrs,\n };\n }\n\n if (\n isObject(position) &&\n (isNumber(position.x) || isPercent(position.x)) &&\n (isNumber(position.y) || isPercent(position.y))\n ) {\n return {\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end',\n ...sizeAttrs,\n };\n }\n\n return {\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle',\n ...sizeAttrs,\n };\n};\n\nconst isPolar = (viewBox: CartesianViewBox | PolarViewBox): viewBox is PolarViewBox =>\n 'cx' in viewBox && isNumber(viewBox.cx);\n\nexport function Label({ offset = 5, ...restProps }: Props) {\n const props = { offset, ...restProps };\n const { viewBox, position, value, children, content, className = '', textBreakAll } = props;\n\n if (!viewBox || (isNil(value) && isNil(children) && !isValidElement(content) && !isFunction(content))) {\n return null;\n }\n\n if (isValidElement(content)) {\n return cloneElement(content, props);\n }\n\n let label: ReactNode;\n if (isFunction(content)) {\n label = createElement(content as any, props);\n\n if (isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n\n const isPolarLabel = isPolar(viewBox);\n const attrs = filterProps(props, true);\n\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n\n const positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n\n return (\n <Text className={clsx('recharts-label', className)} {...attrs} {...(positionAttrs as any)} breakAll={textBreakAll}>\n {label}\n </Text>\n );\n}\n\nLabel.displayName = 'Label';\n\nconst parseViewBox = (props: any): ViewBox => {\n const {\n cx,\n cy,\n angle,\n startAngle,\n endAngle,\n r,\n radius,\n innerRadius,\n outerRadius,\n x,\n y,\n top,\n left,\n width,\n height,\n clockWise,\n labelViewBox,\n } = props;\n\n if (labelViewBox) {\n return labelViewBox;\n }\n\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return { x, y, width, height };\n }\n if (isNumber(top) && isNumber(left)) {\n return { x: top, y: left, width, height };\n }\n }\n\n if (isNumber(x) && isNumber(y)) {\n return { x, y, width: 0, height: 0 };\n }\n\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx,\n cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise,\n };\n }\n\n if (props.viewBox) {\n return props.viewBox;\n }\n\n return {};\n};\n\nconst parseLabel = (label: unknown, viewBox: ViewBox) => {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return <Label key=\"label-implicit\" viewBox={viewBox} />;\n }\n\n if (isNumOrStr(label)) {\n return <Label key=\"label-implicit\" viewBox={viewBox} value={label} />;\n }\n\n if (isValidElement(label)) {\n if (label.type === Label) {\n return cloneElement<LabelProps>(label, { key: 'label-implicit', viewBox });\n }\n\n return <Label key=\"label-implicit\" content={label} viewBox={viewBox} />;\n }\n\n if (isFunction(label)) {\n return <Label key=\"label-implicit\" content={label} viewBox={viewBox} />;\n }\n\n if (isObject(label)) {\n return <Label viewBox={viewBox} {...label} key=\"label-implicit\" />;\n }\n\n return null;\n};\n\nconst renderCallByParent = (\n parentProps: { children?: ReactNode; label?: unknown },\n viewBox?: ViewBox,\n checkPropsLabel = true,\n): ReactElement[] | null => {\n if (!parentProps || (!parentProps.children && checkPropsLabel && !parentProps.label)) {\n return null;\n }\n const { children } = parentProps;\n const parentViewBox = parseViewBox(parentProps);\n\n const explicitChildren = findAllByType(children, Label).map((child, index) => {\n return cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: `label-${index}`,\n });\n });\n\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n const implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n\n return [implicitLabel, ...explicitChildren];\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;\n","import React, { cloneElement, ReactElement, ReactNode, SVGProps } from 'react';\nimport isNil from 'lodash/isNil';\nimport isObject from 'lodash/isObject';\nimport isFunction from 'lodash/isFunction';\nimport last from 'lodash/last';\n\nimport { Label, ContentType, Props as LabelProps, LabelPosition } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { DataKey, ViewBox } from '../util/types';\n\ninterface Data {\n value?: number | string | Array<number | string>;\n payload?: any;\n parentViewBox?: ViewBox;\n}\n\ninterface LabelListProps<T extends Data> {\n id?: string;\n data?: Array<T>;\n valueAccessor?: Function;\n clockWise?: boolean;\n dataKey?: DataKey<Record<string, any>>;\n content?: ContentType;\n textBreakAll?: boolean;\n position?: LabelPosition;\n offset?: LabelProps['offset'];\n angle?: number;\n formatter?: Function;\n}\n\nexport type Props<T extends Data> = SVGProps<SVGTextElement> & LabelListProps<T>;\n\nexport type ImplicitLabelListType<T extends Data> =\n | boolean\n | ReactElement<SVGElement>\n | ((props: any) => ReactElement<SVGElement>)\n | Props<T>;\n\nconst defaultAccessor = (entry: Data) => (Array.isArray(entry.value) ? last(entry.value) : entry.value);\n\nexport function LabelList<T extends Data>({ valueAccessor = defaultAccessor, ...restProps }: Props<T>) {\n const { data, dataKey, clockWise, id, textBreakAll, ...others } = restProps;\n\n if (!data || !data.length) {\n return null;\n }\n\n return (\n <Layer className=\"recharts-label-list\">\n {data.map((entry, index) => {\n const value = isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n const idProps = isNil(id) ? {} : { id: `${id}-${index}` };\n\n return (\n <Label\n {...filterProps(entry, true)}\n {...others}\n {...idProps}\n parentViewBox={entry.parentViewBox}\n value={value}\n textBreakAll={textBreakAll}\n viewBox={Label.parseViewBox(isNil(clockWise) ? entry : { ...entry, clockWise })}\n key={`label-${index}`} // eslint-disable-line react/no-array-index-key\n index={index}\n />\n );\n })}\n </Layer>\n );\n}\n\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList<T extends Data>(label: unknown, data: Array<T>) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return <LabelList key=\"labelList-implicit\" data={data} />;\n }\n\n if (React.isValidElement(label) || isFunction(label)) {\n return <LabelList key=\"labelList-implicit\" data={data} content={label} />;\n }\n\n if (isObject(label)) {\n return <LabelList data={data} {...label} key=\"labelList-implicit\" />;\n }\n\n return null;\n}\n\nfunction renderCallByParent<T extends Data>(\n parentProps: { children?: ReactNode; label?: unknown },\n data: Array<T>,\n checkPropsLabel = true,\n) {\n if (!parentProps || (!parentProps.children && checkPropsLabel && !parentProps.label)) {\n return null;\n }\n const { children } = parentProps;\n\n const explicitChildren = findAllByType(children, LabelList).map((child, index) =>\n cloneElement(child, {\n data,\n // eslint-disable-next-line react/no-array-index-key\n key: `labelList-${index}`,\n }),\n );\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n\n const implicitLabelList = parseLabelList(parentProps.label, data);\n\n return [implicitLabelList, ...explicitChildren];\n}\n\nLabelList.renderCallByParent = renderCallByParent;\n","/**\n * @fileOverview Customized\n */\nimport React, { isValidElement, cloneElement, createElement, Component, FunctionComponent, ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport { Layer } from '../container/Layer';\nimport { warn } from '../util/LogUtils';\n\ntype Comp<P> = FunctionComponent<P> | Component<P> | ReactElement<P>;\nexport type Props<P, C extends Comp<P>> = P & {\n component: C;\n};\n\n/**\n * custom svg elements by rechart instance props and state.\n * @returns {Object} svg elements\n */\nexport function Customized<P, C extends Comp<P>>({ component, ...props }: Props<P, C>) {\n let child;\n if (isValidElement(component)) {\n child = cloneElement(component, props);\n } else if (isFunction(component)) {\n child = createElement(component, props as any);\n } else {\n warn(false, \"Customized's props `component` must be React.element or Function, but got %s.\", typeof component);\n }\n return <Layer className=\"recharts-customized-wrapper\">{child}</Layer>;\n}\n\nCustomized.displayName = 'Customized';\n","/**\n * @fileOverview Sector\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { GeometrySector } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nconst getDeltaAngle = (startAngle: number, endAngle: number) => {\n const sign = mathSign(endAngle - startAngle);\n const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n\n return sign * deltaAngle;\n};\n\ninterface TangentCircleDef {\n cx?: number;\n cy?: number;\n radius?: number;\n angle?: number;\n sign?: number;\n isExternal?: boolean;\n cornerRadius?: number;\n cornerIsExternal?: boolean;\n}\n\nconst getTangentCircle = ({\n cx,\n cy,\n radius,\n angle,\n sign,\n isExternal,\n cornerRadius,\n cornerIsExternal,\n}: TangentCircleDef) => {\n const centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n const theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n const centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n const center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n const circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n const lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n const lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return { center, circleTangency, lineTangency, theta };\n};\n\nconst getSectorPath = ({ cx, cy, innerRadius, outerRadius, startAngle, endAngle }: GeometrySector) => {\n const angle = getDeltaAngle(startAngle, endAngle);\n\n // When the angle of sector equals to 360, star point and end point coincide\n const tempEndAngle = startAngle + angle;\n const outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n const outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n\n let path = `M ${outerStartPoint.x},${outerStartPoint.y}\n A ${outerRadius},${outerRadius},0,\n ${+(Math.abs(angle) > 180)},${+(startAngle > tempEndAngle)},\n ${outerEndPoint.x},${outerEndPoint.y}\n `;\n\n if (innerRadius > 0) {\n const innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n const innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += `L ${innerEndPoint.x},${innerEndPoint.y}\n A ${innerRadius},${innerRadius},0,\n ${+(Math.abs(angle) > 180)},${+(startAngle <= tempEndAngle)},\n ${innerStartPoint.x},${innerStartPoint.y} Z`;\n } else {\n path += `L ${cx},${cy} Z`;\n }\n\n return path;\n};\n\nconst getSectorWithCorner = ({\n cx,\n cy,\n innerRadius,\n outerRadius,\n cornerRadius,\n forceCornerRadius,\n cornerIsExternal,\n startAngle,\n endAngle,\n}: GeometrySector) => {\n const sign = mathSign(endAngle - startAngle);\n const {\n circleTangency: soct,\n lineTangency: solt,\n theta: sot,\n } = getTangentCircle({\n cx,\n cy,\n radius: outerRadius,\n angle: startAngle,\n sign,\n cornerRadius,\n cornerIsExternal,\n });\n const {\n circleTangency: eoct,\n lineTangency: eolt,\n theta: eot,\n } = getTangentCircle({\n cx,\n cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius,\n cornerIsExternal,\n });\n const outerArcAngle = cornerIsExternal\n ? Math.abs(startAngle - endAngle)\n : Math.abs(startAngle - endAngle) - sot - eot;\n\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return `M ${solt.x},${solt.y}\n a${cornerRadius},${cornerRadius},0,0,1,${cornerRadius * 2},0\n a${cornerRadius},${cornerRadius},0,0,1,${-cornerRadius * 2},0\n `;\n }\n return getSectorPath({\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n });\n }\n\n let path = `M ${solt.x},${solt.y}\n A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${soct.x},${soct.y}\n A${outerRadius},${outerRadius},0,${+(outerArcAngle > 180)},${+(sign < 0)},${eoct.x},${eoct.y}\n A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${eolt.x},${eolt.y}\n `;\n\n if (innerRadius > 0) {\n const {\n circleTangency: sict,\n lineTangency: silt,\n theta: sit,\n } = getTangentCircle({\n cx,\n cy,\n radius: innerRadius,\n angle: startAngle,\n sign,\n isExternal: true,\n cornerRadius,\n cornerIsExternal,\n });\n const {\n circleTangency: eict,\n lineTangency: eilt,\n theta: eit,\n } = getTangentCircle({\n cx,\n cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius,\n cornerIsExternal,\n });\n const innerArcAngle = cornerIsExternal\n ? Math.abs(startAngle - endAngle)\n : Math.abs(startAngle - endAngle) - sit - eit;\n\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return `${path}L${cx},${cy}Z`;\n }\n\n path += `L${eilt.x},${eilt.y}\n A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${eict.x},${eict.y}\n A${innerRadius},${innerRadius},0,${+(innerArcAngle > 180)},${+(sign > 0)},${sict.x},${sict.y}\n A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${silt.x},${silt.y}Z`;\n } else {\n path += `L${cx},${cy}Z`;\n }\n\n return path;\n};\n\ninterface SectorProps extends GeometrySector {\n className?: string;\n}\n\nexport type Props = SVGProps<SVGPathElement> & SectorProps;\n\nconst 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};\n\nexport const Sector: React.FC<Props> = sectorProps => {\n const props = { ...defaultProps, ...sectorProps };\n const {\n cx,\n cy,\n innerRadius,\n outerRadius,\n cornerRadius,\n forceCornerRadius,\n cornerIsExternal,\n startAngle,\n endAngle,\n className,\n } = props;\n\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n\n const layerClass = clsx('recharts-sector', className);\n const deltaRadius = outerRadius - innerRadius;\n const cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n let path;\n\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx,\n cy,\n innerRadius,\n outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius,\n cornerIsExternal,\n startAngle,\n endAngle,\n });\n } else {\n path = getSectorPath({ cx, cy, innerRadius, outerRadius, startAngle, endAngle });\n }\n\n return <path {...filterProps(props, true)} className={layerClass} d={path} role=\"img\" />;\n};\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // 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 Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // 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 Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(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","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import 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","/**\n * @fileOverview Curve\n */\nimport * as React from 'react';\nimport {\n line as shapeLine,\n area as shapeArea,\n CurveFactory,\n curveBasisClosed,\n curveBasisOpen,\n curveBasis,\n curveBumpX,\n curveBumpY,\n curveLinearClosed,\n curveLinear,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n} from 'victory-vendor/d3-shape';\nimport upperFirst from 'lodash/upperFirst';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { LayoutType, PresentationAttributesWithProps, adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\n\ninterface CurveFactories {\n [index: string]: CurveFactory;\n}\n\nconst CURVE_FACTORIES: CurveFactories = {\n curveBasisClosed,\n curveBasisOpen,\n curveBasis,\n curveBumpX,\n curveBumpY,\n curveLinearClosed,\n curveLinear,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n};\n\nexport type CurveType =\n | 'basis'\n | 'basisClosed'\n | 'basisOpen'\n | 'bumpX'\n | 'bumpY'\n | 'bump'\n | 'linear'\n | 'linearClosed'\n | 'natural'\n | 'monotoneX'\n | 'monotoneY'\n | 'monotone'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\n | CurveFactory;\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nconst defined = (p: Point) => p.x === +p.x && p.y === +p.y;\nconst getX = (p: Point) => p.x;\nconst getY = (p: Point) => p.y;\n\nconst getCurveFactory = (type: CurveType, layout: LayoutType) => {\n if (isFunction(type)) {\n return type;\n }\n\n const name = `curve${upperFirst(type)}`;\n\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[`${name}${layout === 'vertical' ? 'Y' : 'X'}`];\n }\n return CURVE_FACTORIES[name] || curveLinear;\n};\n\ninterface CurveProps {\n className?: string;\n type?: CurveType;\n layout?: LayoutType;\n baseLine?: number | Array<Point>;\n points?: Array<Point>;\n connectNulls?: boolean;\n path?: string;\n pathRef?: (ref: SVGPathElement) => void;\n}\n\nexport type Props = Omit<PresentationAttributesWithProps<CurveProps, SVGPathElement>, 'type' | 'points'> & CurveProps;\n\ntype GetPathProps = Pick<Props, 'type' | 'points' | 'baseLine' | 'layout' | 'connectNulls'>;\n\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport const getPath = ({\n type = 'linear',\n points = [],\n baseLine,\n layout,\n connectNulls = false,\n}: GetPathProps): string | null => {\n const curveFactory = getCurveFactory(type, layout);\n const formatPoints = connectNulls ? points.filter(entry => defined(entry)) : points;\n let lineFunction;\n\n if (Array.isArray(baseLine)) {\n const formatBaseLine = connectNulls ? baseLine.filter(base => defined(base)) : baseLine;\n const areaPoints = formatPoints.map((entry, index) => ({ ...entry, base: formatBaseLine[index] }));\n if (layout === 'vertical') {\n lineFunction = shapeArea<Point & { base: Point }>()\n .y(getY)\n .x1(getX)\n .x0(d => d.base.x);\n } else {\n lineFunction = shapeArea<Point & { base: Point }>()\n .x(getX)\n .y1(getY)\n .y0(d => d.base.y);\n }\n lineFunction.defined(defined).curve(curveFactory);\n\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea<Point>().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea<Point>().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine<Point>().x(getX).y(getY);\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n\n return lineFunction(formatPoints);\n};\n\nexport const Curve: React.FC<Props> = props => {\n const { className, points, path, pathRef } = props;\n\n if ((!points || !points.length) && !path) {\n return null;\n }\n\n const realPath = points && points.length ? getPath(props) : path;\n\n return (\n <path\n {...filterProps(props, false)}\n {...adaptEventHandlers(props)}\n className={clsx('recharts-curve', className)}\n d={realPath}\n ref={pathRef}\n />\n );\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 Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup };\nexport default Animate;","/**\n * @fileOverview Rectangle\n */\nimport React, { SVGProps, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { AnimationDuration, AnimationTiming } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nexport type RectRadius = [number, number, number, number];\n\nconst getRectanglePath = (x: number, y: number, width: number, height: number, radius: number | RectRadius): string => {\n const maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n const ySign = height >= 0 ? 1 : -1;\n const xSign = width >= 0 ? 1 : -1;\n const clockWise = (height >= 0 && width >= 0) || (height < 0 && width < 0) ? 1 : 0;\n let path;\n\n if (maxRadius > 0 && radius instanceof Array) {\n const newRadius: RectRadius = [0, 0, 0, 0];\n for (let i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n\n path = `M${x},${y + ySign * newRadius[0]}`;\n\n if (newRadius[0] > 0) {\n path += `A ${newRadius[0]},${newRadius[0]},0,0,${clockWise},${x + xSign * newRadius[0]},${y}`;\n }\n\n path += `L ${x + width - xSign * newRadius[1]},${y}`;\n\n if (newRadius[1] > 0) {\n path += `A ${newRadius[1]},${newRadius[1]},0,0,${clockWise},\n ${x + width},${y + ySign * newRadius[1]}`;\n }\n path += `L ${x + width},${y + height - ySign * newRadius[2]}`;\n\n if (newRadius[2] > 0) {\n path += `A ${newRadius[2]},${newRadius[2]},0,0,${clockWise},\n ${x + width - xSign * newRadius[2]},${y + height}`;\n }\n path += `L ${x + xSign * newRadius[3]},${y + height}`;\n\n if (newRadius[3] > 0) {\n path += `A ${newRadius[3]},${newRadius[3]},0,0,${clockWise},\n ${x},${y + height - ySign * newRadius[3]}`;\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n const newRadius = Math.min(maxRadius, radius);\n\n path = `M ${x},${y + ySign * newRadius}\n A ${newRadius},${newRadius},0,0,${clockWise},${x + xSign * newRadius},${y}\n L ${x + width - xSign * newRadius},${y}\n A ${newRadius},${newRadius},0,0,${clockWise},${x + width},${y + ySign * newRadius}\n L ${x + width},${y + height - ySign * newRadius}\n A ${newRadius},${newRadius},0,0,${clockWise},${x + width - xSign * newRadius},${y + height}\n L ${x + xSign * newRadius},${y + height}\n A ${newRadius},${newRadius},0,0,${clockWise},${x},${y + height - ySign * newRadius} Z`;\n } else {\n path = `M ${x},${y} h ${width} v ${height} h ${-width} Z`;\n }\n\n return path;\n};\ninterface RectangleProps {\n className?: string;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n radius?: number | RectRadius;\n isAnimationActive?: boolean;\n isUpdateAnimationActive?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n}\n\nexport const isInRectangle = (\n point: { x: number; y: number },\n rect: { x: number; y: number; width: number; height: number },\n): boolean => {\n if (!point || !rect) {\n return false;\n }\n const { x: px, y: py } = point;\n const { x, y, width, height } = rect;\n\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n const minX = Math.min(x, x + width);\n const maxX = Math.max(x, x + width);\n const minY = Math.min(y, y + height);\n const maxY = Math.max(y, y + height);\n\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n\n return false;\n};\n\nexport type Props = Omit<SVGProps<SVGPathElement>, 'radius'> & RectangleProps;\n\nconst 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};\n\nexport const Rectangle: React.FC<Props> = rectangleProps => {\n const props = { ...defaultProps, ...rectangleProps };\n const pathRef = useRef<SVGPathElement>();\n const [totalLength, setTotalLength] = useState(-1);\n\n useEffect(() => {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n const pathTotalLength = pathRef.current.getTotalLength();\n\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n\n const { x, y, width, height, radius, className } = props;\n const { animationEasing, animationDuration, animationBegin, isAnimationActive, isUpdateAnimationActive } = props;\n\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n\n const layerClass = clsx('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return (\n <path {...filterProps(props, true)} className={layerClass} d={getRectanglePath(x, y, width, height, radius)} />\n );\n }\n\n return (\n <Animate\n canBegin={totalLength > 0}\n from={{ width, height, x, y }}\n to={{ width, height, x, y }}\n duration={animationDuration}\n animationEasing={animationEasing}\n isActive={isUpdateAnimationActive}\n >\n {({ width: currWidth, height: currHeight, x: currX, y: currY }: any) => (\n <Animate\n canBegin={totalLength > 0}\n from={`0px ${totalLength === -1 ? 1 : totalLength}px`}\n to={`${totalLength}px 0px`}\n attributeName=\"strokeDasharray\"\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n >\n <path\n {...filterProps(props, true)}\n className={layerClass}\n d={getRectanglePath(currX, currY, currWidth, currHeight, radius)}\n ref={pathRef}\n />\n </Animate>\n )}\n </Animate>\n );\n};\n","/**\n * @fileOverview Polygon\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { Coordinate } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nconst isValidatePoint = (point: Coordinate) => {\n return point && point.x === +point.x && point.y === +point.y;\n};\n\nconst getParsedPoints = (points: Coordinate[] = []) => {\n let segmentPoints: Coordinate[][] = [[]];\n\n points.forEach(entry => {\n if (isValidatePoint(entry)) {\n segmentPoints[segmentPoints.length - 1].push(entry);\n } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n // add another path\n segmentPoints.push([]);\n }\n });\n\n if (isValidatePoint(points[0])) {\n segmentPoints[segmentPoints.length - 1].push(points[0]);\n }\n\n if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n segmentPoints = segmentPoints.slice(0, -1);\n }\n\n return segmentPoints;\n};\n\nconst getSinglePolygonPath = (points: Coordinate[], connectNulls?: boolean) => {\n let segmentPoints = getParsedPoints(points);\n\n if (connectNulls) {\n segmentPoints = [\n segmentPoints.reduce((res: Coordinate[], segPoints: Coordinate[]) => {\n return [...res, ...segPoints];\n }, []),\n ];\n }\n\n const polygonPath = segmentPoints\n .map(segPoints => {\n return segPoints.reduce((path: string, point: Coordinate, index: number) => {\n return `${path}${index === 0 ? 'M' : 'L'}${point.x},${point.y}`;\n }, '');\n })\n .join('');\n\n return segmentPoints.length === 1 ? `${polygonPath}Z` : polygonPath;\n};\n\nconst getRanglePath = (points: Coordinate[], baseLinePoints: Coordinate[], connectNulls?: boolean) => {\n const outerPath = getSinglePolygonPath(points, connectNulls);\n\n return `${outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath}L${getSinglePolygonPath(\n baseLinePoints.reverse(),\n connectNulls,\n ).slice(1)}`;\n};\n\ninterface PolygonProps {\n className?: string;\n points?: Coordinate[];\n baseLinePoints?: Coordinate[];\n connectNulls?: boolean;\n}\n\nexport type Props = Omit<SVGProps<SVGPolygonElement>, 'points'> & PolygonProps;\n\nexport const Polygon: React.FC<Props> = props => {\n const { points, className, baseLinePoints, connectNulls, ...others } = props;\n\n if (!points || !points.length) {\n return null;\n }\n\n const layerClass = clsx('recharts-polygon', className);\n\n if (baseLinePoints && baseLinePoints.length) {\n const hasStroke = others.stroke && others.stroke !== 'none';\n const rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n\n return (\n <g className={layerClass}>\n <path\n {...filterProps(others, true)}\n fill={rangePath.slice(-1) === 'Z' ? others.fill : 'none'}\n stroke=\"none\"\n d={rangePath}\n />\n {hasStroke ? (\n <path {...filterProps(others, true)} fill=\"none\" d={getSinglePolygonPath(points, connectNulls)} />\n ) : null}\n {hasStroke ? (\n <path {...filterProps(others, true)} fill=\"none\" d={getSinglePolygonPath(baseLinePoints, connectNulls)} />\n ) : null}\n </g>\n );\n }\n\n const singlePath = getSinglePolygonPath(points, connectNulls);\n\n return (\n <path\n {...filterProps(others, true)}\n fill={singlePath.slice(-1) === 'Z' ? others.fill : 'none'}\n className={layerClass}\n d={singlePath}\n />\n );\n};\n","/**\n * @fileOverview Dot\n */\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { PresentationAttributesWithProps, adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface DotProps {\n className?: string;\n cx?: number;\n cy?: number;\n r?: number;\n clipDot?: boolean;\n}\n\nexport type Props = PresentationAttributesWithProps<DotProps, SVGCircleElement> & DotProps;\n\nexport const Dot: React.FC<Props> = props => {\n const { cx, cy, r, className } = props;\n const layerClass = clsx('recharts-dot', className);\n\n if (cx === +cx && cy === +cy && r === +r) {\n return (\n <circle\n {...filterProps(props, false)}\n {...adaptEventHandlers(props)}\n className={layerClass}\n cx={cx}\n cy={cy}\n r={r}\n />\n );\n }\n\n return null;\n};\n","/**\n * @fileOverview Cross\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface CrossProps {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n top?: number;\n left?: number;\n className?: number;\n}\n\nexport type Props = SVGProps<SVGPathElement> & CrossProps;\n\nconst getPath = (x: number, y: number, width: number, height: number, top: number, left: number) => {\n return `M${x},${top}v${height}M${left},${y}h${width}`;\n};\n\nexport const Cross: React.FC<Props> = ({\n x = 0,\n y = 0,\n top = 0,\n left = 0,\n width = 0,\n height = 0,\n className,\n ...rest\n}) => {\n const props = { x, y, top, left, width, height, ...rest };\n\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n\n return (\n <path\n {...filterProps(props, true)}\n className={clsx('recharts-cross', className)}\n d={getPath(x, y, width, height, top, left)}\n />\n );\n};\n","/**\n * @fileOverview Polar Grid\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface PolarGridProps {\n cx?: number;\n cy?: number;\n innerRadius?: number;\n outerRadius?: number;\n\n polarAngles?: number[];\n polarRadius?: number[];\n gridType?: 'polygon' | 'circle';\n radialLines?: boolean;\n}\nexport type Props = SVGProps<SVGPathElement> & PolarGridProps;\n\ntype ConcentricProps = Props & {\n // The radius of circle\n radius: number;\n // The index of circle\n index: number;\n};\n\nconst getPolygonPath = (radius: number, cx: number, cy: number, polarAngles: number[]) => {\n let path = '';\n\n polarAngles.forEach((angle: number, i: number) => {\n const point = polarToCartesian(cx, cy, radius, angle);\n\n if (i) {\n path += `L ${point.x},${point.y}`;\n } else {\n path += `M ${point.x},${point.y}`;\n }\n });\n path += 'Z';\n\n return path;\n};\n\n// Draw axis of radial line\nconst PolarAngles: React.FC<Props> = props => {\n const { cx, cy, innerRadius, outerRadius, polarAngles, radialLines } = props;\n\n if (!polarAngles || !polarAngles.length || !radialLines) {\n return null;\n }\n const polarAnglesProps = {\n stroke: '#ccc',\n ...filterProps(props, false),\n };\n\n return (\n <g className=\"recharts-polar-grid-angle\">\n {polarAngles.map(entry => {\n const start = polarToCartesian(cx, cy, innerRadius, entry);\n const end = polarToCartesian(cx, cy, outerRadius, entry);\n\n return <line {...polarAnglesProps} key={`line-${entry}`} x1={start.x} y1={start.y} x2={end.x} y2={end.y} />;\n })}\n </g>\n );\n};\n\n// Draw concentric circles\nconst ConcentricCircle: React.FC<ConcentricProps> = props => {\n const { cx, cy, radius, index } = props;\n const concentricCircleProps = {\n stroke: '#ccc',\n ...filterProps(props, false),\n fill: 'none',\n };\n\n return (\n <circle\n {...concentricCircleProps}\n className={clsx('recharts-polar-grid-concentric-circle', props.className)}\n key={`circle-${index}`}\n cx={cx}\n cy={cy}\n r={radius}\n />\n );\n};\n\n// Draw concentric polygons\nconst ConcentricPolygon: React.FC<ConcentricProps> = props => {\n const { radius, index } = props;\n const concentricPolygonProps = {\n stroke: '#ccc',\n ...filterProps(props, false),\n fill: 'none',\n };\n\n return (\n <path\n {...concentricPolygonProps}\n className={clsx('recharts-polar-grid-concentric-polygon', props.className)}\n key={`path-${index}`}\n d={getPolygonPath(radius, props.cx, props.cy, props.polarAngles)}\n />\n );\n};\n\n// Draw concentric axis\n// TODO Optimize the name\nconst ConcentricPath: React.FC<Props> = props => {\n const { polarRadius, gridType } = props;\n\n if (!polarRadius || !polarRadius.length) {\n return null;\n }\n\n return (\n <g className=\"recharts-polar-grid-concentric\">\n {polarRadius.map((entry: number, i: number) => {\n const key = i;\n if (gridType === 'circle') return <ConcentricCircle key={key} {...props} radius={entry} index={i} />;\n return <ConcentricPolygon key={key} {...props} radius={entry} index={i} />;\n })}\n </g>\n );\n};\n\nexport const PolarGrid = ({\n cx = 0,\n cy = 0,\n innerRadius = 0,\n outerRadius = 0,\n gridType = 'polygon',\n radialLines = true,\n ...props\n}: Props) => {\n if (outerRadius <= 0) {\n return null;\n }\n\n return (\n <g className=\"recharts-polar-grid\">\n <PolarAngles\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n gridType={gridType}\n radialLines={radialLines}\n {...props}\n />\n <ConcentricPath\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n gridType={gridType}\n radialLines={radialLines}\n {...props}\n />\n </g>\n );\n};\n\nPolarGrid.displayName = 'PolarGrid';\n","/**\n * @fileOverview The axis of polar coordinate system\n */\nimport React, { PureComponent } from 'react';\nimport maxBy from 'lodash/maxBy';\nimport minBy from 'lodash/minBy';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Layer } from '../container/Layer';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\nimport { BaseAxisProps, TickItem, adaptEventsOfChild, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nexport interface PolarRadiusAxisProps extends Omit<BaseAxisProps, 'unit'> {\n cx?: number;\n cy?: number;\n radiusAxisId?: string | number;\n angle?: number;\n orientation?: 'left' | 'right' | 'middle';\n ticks?: TickItem[];\n reversed?: boolean;\n}\n\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGElement> & PolarRadiusAxisProps;\n\nexport class PolarRadiusAxis extends PureComponent<Props> {\n static displayName = 'PolarRadiusAxis';\n\n static axisType = 'radiusAxis';\n\n static defaultProps = {\n type: 'number',\n radiusAxisId: 0,\n cx: 0,\n cy: 0,\n angle: 0,\n orientation: 'right',\n stroke: '#ccc',\n axisLine: true,\n tick: true,\n tickCount: 5,\n allowDataOverflow: false,\n scale: 'auto',\n allowDuplicatedCategory: true,\n };\n\n /**\n * Calculate the coordinate of tick\n * @param {Number} coordinate The radius of tick\n * @return {Object} (x, y)\n */\n getTickValueCoord({ coordinate }: TickItem) {\n const { angle, cx, cy } = this.props;\n\n return polarToCartesian(cx, cy, coordinate, angle);\n }\n\n getTickTextAnchor() {\n const { orientation } = this.props;\n let textAnchor;\n\n switch (orientation) {\n case 'left':\n textAnchor = 'end';\n break;\n case 'right':\n textAnchor = 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n\n return textAnchor;\n }\n\n getViewBox() {\n const { cx, cy, angle, ticks } = this.props;\n const maxRadiusTick = maxBy(ticks, (entry: TickItem) => entry.coordinate || 0);\n const minRadiusTick = minBy(ticks, (entry: TickItem) => entry.coordinate || 0);\n\n return {\n cx,\n cy,\n startAngle: angle,\n endAngle: angle,\n innerRadius: minRadiusTick.coordinate || 0,\n outerRadius: maxRadiusTick.coordinate || 0,\n };\n }\n\n renderAxisLine() {\n const { cx, cy, angle, ticks, axisLine, ...others } = this.props;\n const extent = ticks.reduce(\n (result, entry) => [Math.min(result[0], entry.coordinate), Math.max(result[1], entry.coordinate)],\n [Infinity, -Infinity],\n );\n const point0 = polarToCartesian(cx, cy, extent[0], angle);\n const point1 = polarToCartesian(cx, cy, extent[1], angle);\n\n const props = {\n ...filterProps(others, false),\n fill: 'none',\n ...filterProps(axisLine, false),\n x1: point0.x,\n y1: point0.y,\n x2: point1.x,\n y2: point1.y,\n };\n\n return <line className=\"recharts-polar-radius-axis-line\" {...props} />;\n }\n\n static renderTickItem(option: Props['tick'], props: any, value: string | number) {\n let tickItem;\n\n if (React.isValidElement(option)) {\n tickItem = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = (\n <Text {...props} className=\"recharts-polar-radius-axis-tick-value\">\n {value}\n </Text>\n );\n }\n\n return tickItem;\n }\n\n renderTicks() {\n const { ticks, tick, angle, tickFormatter, stroke, ...others } = this.props;\n const textAnchor = this.getTickTextAnchor();\n const axisProps = filterProps(others, false);\n const customTickProps = filterProps(tick, false);\n\n const items = ticks.map((entry, i) => {\n const coord = this.getTickValueCoord(entry);\n const tickProps = {\n textAnchor,\n transform: `rotate(${90 - angle}, ${coord.x}, ${coord.y})`,\n ...axisProps,\n stroke: 'none',\n fill: stroke,\n ...customTickProps,\n index: i,\n ...coord,\n payload: entry,\n };\n\n return (\n <Layer\n className={clsx('recharts-polar-radius-axis-tick', getTickClassName(tick))}\n key={`tick-${entry.coordinate}`}\n {...adaptEventsOfChild(this.props, entry, i)}\n >\n {PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value)}\n </Layer>\n );\n });\n\n return <Layer className=\"recharts-polar-radius-axis-ticks\">{items}</Layer>;\n }\n\n render() {\n const { ticks, axisLine, tick } = this.props;\n\n if (!ticks || !ticks.length) {\n return null;\n }\n\n return (\n <Layer className={clsx('recharts-polar-radius-axis', this.props.className)}>\n {axisLine && this.renderAxisLine()}\n {tick && this.renderTicks()}\n {Label.renderCallByParent(this.props, this.getViewBox())}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Axis of radial direction\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Polygon } from '../shape/Polygon';\nimport { Text } from '../component/Text';\nimport { BaseAxisProps, TickItem, adaptEventsOfChild, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\n\nconst RADIAN = Math.PI / 180;\nconst eps = 1e-5;\nexport interface PolarAngleAxisProps extends BaseAxisProps {\n angleAxisId?: string | number;\n cx?: number;\n cy?: number;\n radius?: number;\n\n axisLineType?: 'polygon' | 'circle';\n ticks?: TickItem[];\n orientation?: 'inner' | 'outer';\n}\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGTextElement> & PolarAngleAxisProps;\n\nexport class PolarAngleAxis extends PureComponent<Props> {\n static displayName = 'PolarAngleAxis';\n\n static axisType = 'angleAxis';\n\n static defaultProps = {\n type: 'category',\n angleAxisId: 0,\n scale: 'auto',\n cx: 0,\n cy: 0,\n orientation: 'outer',\n axisLine: true,\n tickLine: true,\n tickSize: 8,\n tick: true,\n hide: false,\n allowDuplicatedCategory: true,\n };\n\n /**\n * Calculate the coordinate of line endpoint\n * @param {Object} data The Data if ticks\n * @return {Object} (x0, y0): The start point of text,\n * (x1, y1): The end point close to text,\n * (x2, y2): The end point close to axis\n */\n getTickLineCoord(data: TickItem) {\n const { cx, cy, radius, orientation, tickSize } = this.props;\n const tickLineSize = tickSize || 8;\n const p1 = polarToCartesian(cx, cy, radius, data.coordinate);\n const p2 = polarToCartesian(cx, cy, radius + (orientation === 'inner' ? -1 : 1) * tickLineSize, data.coordinate);\n\n return { x1: p1.x, y1: p1.y, x2: p2.x, y2: p2.y };\n }\n\n /**\n * Get the text-anchor of each tick\n * @param {Object} data Data of ticks\n * @return {String} text-anchor\n */\n getTickTextAnchor(data: TickItem) {\n const { orientation } = this.props;\n const cos = Math.cos(-data.coordinate * RADIAN);\n let textAnchor;\n\n if (cos > eps) {\n textAnchor = orientation === 'outer' ? 'start' : 'end';\n } else if (cos < -eps) {\n textAnchor = orientation === 'outer' ? 'end' : 'start';\n } else {\n textAnchor = 'middle';\n }\n\n return textAnchor;\n }\n\n renderAxisLine() {\n const { cx, cy, radius, axisLine, axisLineType } = this.props;\n const props = {\n ...filterProps(this.props, false),\n fill: 'none',\n ...filterProps(axisLine, false),\n };\n\n if (axisLineType === 'circle') {\n return <Dot className=\"recharts-polar-angle-axis-line\" {...props} cx={cx} cy={cy} r={radius} />;\n }\n const { ticks } = this.props;\n const points = ticks.map(entry => polarToCartesian(cx, cy, radius, entry.coordinate));\n\n return <Polygon className=\"recharts-polar-angle-axis-line\" {...props} points={points} />;\n }\n\n static renderTickItem(option: PolarAngleAxisProps['tick'], props: any, value: string | number) {\n let tickItem;\n\n if (React.isValidElement(option)) {\n tickItem = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = (\n <Text {...props} className=\"recharts-polar-angle-axis-tick-value\">\n {value}\n </Text>\n );\n }\n\n return tickItem;\n }\n\n renderTicks() {\n const { ticks, tick, tickLine, tickFormatter, stroke } = this.props;\n const axisProps = filterProps(this.props, false);\n const customTickProps = filterProps(tick, false);\n const tickLineProps = {\n ...axisProps,\n fill: 'none',\n ...filterProps(tickLine, false),\n };\n\n const items = ticks.map((entry, i) => {\n const lineCoord = this.getTickLineCoord(entry);\n const textAnchor = this.getTickTextAnchor(entry);\n const tickProps = {\n textAnchor,\n ...axisProps,\n stroke: 'none',\n fill: stroke,\n ...customTickProps,\n index: i,\n payload: entry,\n x: lineCoord.x2,\n y: lineCoord.y2,\n };\n\n return (\n <Layer\n className={clsx('recharts-polar-angle-axis-tick', getTickClassName(tick))}\n key={`tick-${entry.coordinate}`}\n {...adaptEventsOfChild(this.props, entry, i)}\n >\n {tickLine && <line className=\"recharts-polar-angle-axis-tick-line\" {...tickLineProps} {...lineCoord} />}\n {tick &&\n PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value)}\n </Layer>\n );\n });\n\n return <Layer className=\"recharts-polar-angle-axis-ticks\">{items}</Layer>;\n }\n\n render() {\n const { ticks, radius, axisLine } = this.props;\n\n if (radius <= 0 || !ticks || !ticks.length) {\n return null;\n }\n\n return (\n <Layer className={clsx('recharts-polar-angle-axis', this.props.className)}>\n {axisLine && this.renderAxisLine()}\n {this.renderTicks()}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Rectangle\n */\nimport React, { SVGProps, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { AnimationDuration, AnimationTiming } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nconst getTrapezoidPath = (x: number, y: number, upperWidth: number, lowerWidth: number, height: number): string => {\n const widthGap = upperWidth - lowerWidth;\n let path;\n path = `M ${x},${y}`;\n path += `L ${x + upperWidth},${y}`;\n path += `L ${x + upperWidth - widthGap / 2},${y + height}`;\n path += `L ${x + upperWidth - widthGap / 2 - lowerWidth},${y + height}`;\n path += `L ${x},${y} Z`;\n return path;\n};\n\ninterface TrapezoidProps {\n className?: string;\n x?: number;\n y?: number;\n upperWidth?: number;\n lowerWidth?: number;\n height?: number;\n\n isUpdateAnimationActive?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n}\n\nexport type Props = SVGProps<SVGPathElement> & TrapezoidProps;\n\nconst defaultProps: Props = {\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};\n\nexport const Trapezoid: React.FC<Props> = props => {\n const trapezoidProps: Props = { ...defaultProps, ...props };\n\n const pathRef = useRef<SVGPathElement>();\n const [totalLength, setTotalLength] = useState(-1);\n\n useEffect(() => {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n const pathTotalLength = pathRef.current.getTotalLength();\n\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n\n const { x, y, upperWidth, lowerWidth, height, className } = trapezoidProps;\n const { animationEasing, animationDuration, animationBegin, isUpdateAnimationActive } = trapezoidProps;\n\n if (\n x !== +x ||\n y !== +y ||\n upperWidth !== +upperWidth ||\n lowerWidth !== +lowerWidth ||\n height !== +height ||\n (upperWidth === 0 && lowerWidth === 0) ||\n height === 0\n ) {\n return null;\n }\n\n const layerClass = clsx('recharts-trapezoid', className);\n\n if (!isUpdateAnimationActive) {\n return (\n <g>\n <path\n {...filterProps(trapezoidProps, true)}\n className={layerClass}\n d={getTrapezoidPath(x, y, upperWidth, lowerWidth, height)}\n />\n </g>\n );\n }\n return (\n <Animate\n canBegin={totalLength > 0}\n from={{ upperWidth: 0, lowerWidth: 0, height, x, y }}\n to={{ upperWidth, lowerWidth, height, x, y }}\n duration={animationDuration}\n animationEasing={animationEasing}\n isActive={isUpdateAnimationActive}\n >\n {({\n upperWidth: currUpperWidth,\n lowerWidth: currLowerWidth,\n height: currHeight,\n x: currX,\n y: currY,\n }: {\n upperWidth: number;\n lowerWidth: number;\n height: number;\n x: number;\n y: number;\n }) => (\n <Animate\n canBegin={totalLength > 0}\n from={`0px ${totalLength === -1 ? 1 : totalLength}px`}\n to={`${totalLength}px 0px`}\n attributeName=\"strokeDasharray\"\n begin={animationBegin}\n duration={animationDuration}\n easing={animationEasing}\n >\n <path\n {...filterProps(trapezoidProps, true)}\n className={layerClass}\n d={getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight)}\n ref={pathRef}\n />\n </Animate>\n )}\n </Animate>\n );\n};\n","import React, { isValidElement, cloneElement, SVGProps } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isBoolean from 'lodash/isBoolean';\nimport isEqual from 'lodash/isEqual';\n\nimport { Rectangle } from '../shape/Rectangle';\nimport { Trapezoid } from '../shape/Trapezoid';\nimport { Sector } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { GraphicalItem } from '../chart/generateCategoricalChart';\nimport { Symbols, SymbolsProps } 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 */\ntype ShapeType = 'trapezoid' | 'rectangle' | 'sector' | 'symbols';\n\nexport type ShapeProps<OptionType, ExtraProps, ShapePropsType> = {\n shapeType: ShapeType;\n option: OptionType;\n isActive: boolean;\n activeClassName?: string;\n propTransformer?: (option: OptionType, props: unknown) => ShapePropsType;\n} & ExtraProps;\n\nfunction defaultPropTransformer<OptionType, ExtraProps, ShapePropsType>(option: OptionType, props: ExtraProps) {\n return {\n ...props,\n ...option,\n } as unknown as ShapePropsType;\n}\n\nfunction isSymbolsProps(shapeType: ShapeType, _elementProps: unknown): _elementProps is SymbolsProps {\n return shapeType === 'symbols';\n}\n\nfunction ShapeSelector<ShapePropsType>({\n shapeType,\n elementProps,\n}: {\n shapeType: ShapeType;\n elementProps: ShapePropsType;\n}) {\n switch (shapeType) {\n case 'rectangle':\n return <Rectangle {...elementProps} />;\n case 'trapezoid':\n return <Trapezoid {...elementProps} />;\n case 'sector':\n return <Sector {...elementProps} />;\n case 'symbols':\n if (isSymbolsProps(shapeType, elementProps)) {\n return <Symbols {...elementProps} />;\n }\n break;\n default:\n return null;\n }\n}\n\nexport function getPropsFromShapeOption(option: unknown): SVGProps<SVGPathElement> {\n if (isValidElement(option)) {\n return option.props;\n }\n\n return option;\n}\n\nexport function Shape<OptionType, ExtraProps, ShapePropsType>({\n option,\n shapeType,\n propTransformer = defaultPropTransformer,\n activeClassName = 'recharts-active-shape',\n isActive,\n ...props\n}: ShapeProps<OptionType, ExtraProps, ShapePropsType>) {\n let shape: React.JSX.Element;\n\n if (isValidElement(option)) {\n shape = cloneElement(option, { ...props, ...getPropsFromShapeOption(option) });\n } else if (isFunction(option)) {\n shape = option(props);\n } else if (isPlainObject(option) && !isBoolean(option)) {\n const nextProps = propTransformer(option, props);\n shape = <ShapeSelector<ShapePropsType> shapeType={shapeType} elementProps={nextProps} />;\n } else {\n const elementProps = props as unknown as ShapePropsType;\n shape = <ShapeSelector<ShapePropsType> shapeType={shapeType} elementProps={elementProps} />;\n }\n\n if (isActive) {\n return <Layer className={activeClassName}>{shape}</Layer>;\n }\n\n return shape;\n}\n\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */\ntype GraphicalItemShapeKey = 'trapezoids' | 'sectors' | 'points';\n\ntype FunnelItem = {\n x: number;\n y: number;\n labelViewBox: { x: number; y: number };\n tooltipPayload: Array<{ payload: { payload: ShapeData } }>;\n};\n\ntype PieItem = {\n startAngle: number;\n endAngle: number;\n tooltipPayload: Array<{ payload: { payload: ShapeData } }>;\n};\n\ntype ScatterItem = {\n x: number;\n y: number;\n z: number;\n payload?: ShapeData;\n};\n\ntype ShapeData = FunnelItem | PieItem | ScatterItem;\n\ntype GetActiveShapeIndexForTooltip = {\n activeTooltipItem: ShapeData;\n graphicalItem: GraphicalItem;\n itemData: unknown[];\n};\n\nexport function isFunnel(graphicalItem: GraphicalItem, _item: unknown): _item is FunnelItem {\n return _item != null && 'trapezoids' in graphicalItem.props;\n}\n\nexport function isPie(graphicalItem: GraphicalItem, _item: unknown): _item is PieItem {\n return _item != null && 'sectors' in graphicalItem.props;\n}\n\nexport function isScatter(graphicalItem: GraphicalItem, _item: unknown): _item is ScatterItem {\n return _item != null && 'points' in graphicalItem.props;\n}\n\nexport function compareFunnel(shapeData: FunnelItem, activeTooltipItem: FunnelItem) {\n const xMatches = shapeData.x === activeTooltipItem?.labelViewBox?.x || shapeData.x === activeTooltipItem.x;\n const yMatches = shapeData.y === activeTooltipItem?.labelViewBox?.y || shapeData.y === activeTooltipItem.y;\n return xMatches && yMatches;\n}\n\nexport function comparePie(shapeData: PieItem, activeTooltipItem: PieItem) {\n const startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n const endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n return startAngleMatches && endAngleMatches;\n}\n\nexport function compareScatter(shapeData: ScatterItem, activeTooltipItem: ScatterItem) {\n const xMatches = shapeData.x === activeTooltipItem.x;\n const yMatches = shapeData.y === activeTooltipItem.y;\n const zMatches = shapeData.z === activeTooltipItem.z;\n return xMatches && yMatches && zMatches;\n}\n\nfunction getComparisonFn(graphicalItem: GraphicalItem, activeItem: unknown) {\n let comparison: (shapeData: unknown, activeTooltipData: unknown) => boolean;\n\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\n return comparison;\n}\n\nfunction getShapeDataKey(graphicalItem: GraphicalItem, activeItem: unknown): GraphicalItemShapeKey {\n let shapeKey: GraphicalItemShapeKey;\n\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\n return shapeKey;\n}\n\nfunction getActiveShapeTooltipPayload(graphicalItem: GraphicalItem, activeItem: unknown): ShapeData {\n if (isFunnel(graphicalItem, activeItem)) {\n return activeItem.tooltipPayload?.[0]?.payload?.payload;\n }\n if (isPie(graphicalItem, activeItem)) {\n return activeItem.tooltipPayload?.[0]?.payload?.payload;\n }\n\n if (isScatter(graphicalItem, activeItem)) {\n return activeItem.payload;\n }\n\n return {} as ShapeData;\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({\n activeTooltipItem,\n graphicalItem,\n itemData,\n}: GetActiveShapeIndexForTooltip): number {\n const shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n const tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n\n const activeItemMatches = itemData.filter((datum: unknown, dataIndex: number) => {\n const valuesMatch = isEqual(tooltipPayload, datum);\n\n const mouseCoordinateMatches = graphicalItem.props[shapeKey].filter((shapeData: unknown) => {\n const comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n return comparison(shapeData, activeTooltipItem);\n });\n\n // get the last index in case of multiple matches\n const indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(\n mouseCoordinateMatches[mouseCoordinateMatches.length - 1],\n );\n\n const coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n\n return valuesMatch && coordinatesMatch;\n });\n\n // get the last index in case of multiple matches\n const activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n\n return activeIndex;\n}\n","/**\n * @fileOverview Render sectors of a pie\n */\nimport React, { PureComponent, ReactElement, ReactNode, SVGProps } from 'react';\nimport Animate from 'react-smooth';\nimport get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Props as SectorProps } from '../shape/Sector';\nimport { Curve } from '../shape/Curve';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { Cell, Props as CellProps } from '../component/Cell';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian, getMaxRadius } from '../util/PolarUtils';\nimport { isNumber, getPercentValue, mathSign, interpolateNumber, uniqueId } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { warn } from '../util/LogUtils';\nimport {\n LegendType,\n TooltipType,\n AnimationTiming,\n Coordinate,\n ChartOffset,\n DataKey,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n AnimationDuration,\n ActiveShape,\n} from '../util/types';\nimport { Shape } from '../util/ActiveShapeUtils';\n\ninterface PieDef {\n /** The abscissa of pole in polar coordinate */\n cx?: number | string;\n /** The ordinate of pole in polar coordinate */\n cy?: number | string;\n /** The start angle of first sector */\n startAngle?: number;\n /** The end angle of last sector */\n endAngle?: number;\n paddingAngle?: number;\n /** The inner radius of sectors */\n innerRadius?: number | string;\n /** The outer radius of sectors */\n outerRadius?: number | string;\n cornerRadius?: number | string;\n}\n\ntype PieLabelLine =\n | ReactElement<SVGElement>\n | ((props: any) => ReactElement<SVGElement>)\n | SVGProps<SVGPathElement>\n | boolean;\nexport type PieLabel<P = any> =\n | ReactElement<SVGElement>\n | ((props: P) => ReactNode | ReactElement<SVGElement>)\n | (SVGProps<SVGTextElement> & { offsetRadius?: number })\n | boolean;\nexport type PieSectorDataItem = SectorProps & {\n percent?: number;\n name?: string | number;\n midAngle?: number;\n middleRadius?: number;\n tooltipPosition?: Coordinate;\n value?: number;\n paddingAngle?: number;\n dataKey?: string;\n payload?: any;\n};\n\ninterface PieProps extends PieDef {\n className?: string;\n animationId?: number;\n dataKey: DataKey<any>;\n nameKey?: DataKey<any>;\n valueKey?: DataKey<any>;\n /** Match each sector's stroke color to it's fill color */\n blendStroke?: boolean;\n /** The minimum angle for no-zero element */\n minAngle?: number;\n legendType?: LegendType;\n tooltipType?: TooltipType;\n /** the max radius of pie */\n maxRadius?: number;\n hide?: boolean;\n /** the input data */\n data?: any[];\n sectors?: PieSectorDataItem[];\n activeShape?: ActiveShape<PieSectorDataItem>;\n inactiveShape?: ActiveShape<PieSectorDataItem>;\n labelLine?: PieLabelLine;\n label?: PieLabel;\n\n activeIndex?: number | number[];\n animationEasing?: AnimationTiming;\n isAnimationActive?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n onAnimationEnd?: () => void;\n onAnimationStart?: () => void;\n id?: string;\n onMouseEnter?: (data: any, index: number, e: React.MouseEvent) => void;\n onMouseLeave?: (data: any, index: number, e: React.MouseEvent) => void;\n onClick?: (data: any, index: number, e: React.MouseEvent) => void;\n rootTabIndex?: number;\n}\n\nexport interface PieLabelRenderProps extends PieDef {\n name: string;\n percent?: number;\n stroke: string;\n index?: number;\n textAnchor: string;\n x: number;\n y: number;\n [key: string]: any;\n}\n\ninterface State {\n isAnimationFinished?: boolean;\n prevIsAnimationActive?: boolean;\n prevSectors?: PieSectorDataItem[];\n curSectors?: PieSectorDataItem[];\n prevAnimationId?: number;\n sectorToFocus?: number;\n}\n\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGElement> & PieProps;\n\nexport class Pie extends PureComponent<Props, State> {\n pieRef: SVGGElement = null;\n\n sectorRefs: SVGGElement[] = [];\n\n static displayName = 'Pie';\n\n static defaultProps = {\n stroke: '#fff',\n fill: '#808080',\n legendType: 'rect',\n cx: '50%',\n cy: '50%',\n startAngle: 0,\n endAngle: 360,\n innerRadius: 0,\n outerRadius: '80%',\n paddingAngle: 0,\n labelLine: true,\n hide: false,\n minAngle: 0,\n isAnimationActive: !Global.isSsr,\n animationBegin: 400,\n animationDuration: 1500,\n animationEasing: 'ease',\n nameKey: 'name',\n blendStroke: false,\n rootTabIndex: 0,\n };\n\n static parseDeltaAngle = (startAngle: number, endAngle: number) => {\n const sign = mathSign(endAngle - startAngle);\n const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n\n return sign * deltaAngle;\n };\n\n static getRealPieData = (itemProps: Props) => {\n const { data, children } = itemProps;\n const presentationProps = filterProps(itemProps, false);\n const cells = findAllByType(children, Cell);\n\n if (data && data.length) {\n return data.map((entry, index) => ({\n payload: entry,\n ...presentationProps,\n ...entry,\n ...(cells && cells[index] && cells[index].props),\n }));\n }\n\n if (cells && cells.length) {\n return cells.map((cell: ReactElement<CellProps>) => ({ ...presentationProps, ...cell.props }));\n }\n\n return [];\n };\n\n static parseCoordinateOfPie = (itemProps: Props, offset: ChartOffset) => {\n const { top, left, width, height } = offset;\n const maxPieRadius = getMaxRadius(width, height);\n const cx = left + getPercentValue(itemProps.cx, width, width / 2);\n const cy = top + getPercentValue(itemProps.cy, height, height / 2);\n const innerRadius = getPercentValue(itemProps.innerRadius, maxPieRadius, 0);\n const outerRadius = getPercentValue(itemProps.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n const maxRadius = itemProps.maxRadius || Math.sqrt(width * width + height * height) / 2;\n\n return { cx, cy, innerRadius, outerRadius, maxRadius };\n };\n\n static getComposedData = ({\n item,\n offset,\n }: {\n item: React.ReactElement<Props>;\n offset: ChartOffset;\n }): Omit<Props, 'dataKey'> => {\n const itemProps: Props =\n (item.type as any).defaultProps !== undefined\n ? { ...(item.type as any).defaultProps, ...item.props }\n : item.props;\n const pieData = Pie.getRealPieData(itemProps);\n if (!pieData || !pieData.length) {\n return null;\n }\n\n const { cornerRadius, startAngle, endAngle, paddingAngle, dataKey, nameKey, valueKey, tooltipType } = itemProps;\n const minAngle = Math.abs(itemProps.minAngle);\n const coordinate = Pie.parseCoordinateOfPie(itemProps, offset);\n const deltaAngle = Pie.parseDeltaAngle(startAngle, endAngle);\n const absDeltaAngle = Math.abs(deltaAngle);\n\n let realDataKey = dataKey;\n\n if (isNil(dataKey) && isNil(valueKey)) {\n warn(\n false,\n `Use \"dataKey\" to specify the value of pie,\n the props \"valueKey\" will be deprecated in 1.1.0`,\n );\n realDataKey = 'value';\n } else if (isNil(dataKey)) {\n warn(\n false,\n `Use \"dataKey\" to specify the value of pie,\n the props \"valueKey\" will be deprecated in 1.1.0`,\n );\n realDataKey = valueKey;\n }\n\n const notZeroItemCount = pieData.filter(entry => getValueByDataKey(entry, realDataKey, 0) !== 0).length;\n const totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n const realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n\n const sum = pieData.reduce((result: number, entry: any) => {\n const val = getValueByDataKey(entry, realDataKey, 0);\n return result + (isNumber(val) ? val : 0);\n }, 0);\n let sectors;\n\n if (sum > 0) {\n let prev: PieSectorDataItem;\n sectors = pieData.map((entry: any, i: number) => {\n const val = getValueByDataKey(entry, realDataKey, 0);\n const name = getValueByDataKey(entry, nameKey, i);\n const percent = (isNumber(val) ? val : 0) / sum;\n let tempStartAngle;\n\n if (i) {\n tempStartAngle = prev.endAngle + mathSign(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n } else {\n tempStartAngle = startAngle;\n }\n\n const tempEndAngle =\n tempStartAngle + mathSign(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n const midAngle = (tempStartAngle + tempEndAngle) / 2;\n const middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n const tooltipPayload = [\n {\n name,\n value: val,\n payload: entry,\n dataKey: realDataKey,\n type: tooltipType,\n },\n ];\n const tooltipPosition = polarToCartesian(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n\n prev = {\n percent,\n cornerRadius,\n name,\n tooltipPayload,\n midAngle,\n middleRadius,\n tooltipPosition,\n ...entry,\n ...coordinate,\n value: getValueByDataKey(entry, realDataKey),\n startAngle: tempStartAngle,\n endAngle: tempEndAngle,\n payload: entry,\n paddingAngle: mathSign(deltaAngle) * paddingAngle,\n };\n\n return prev;\n });\n }\n\n return {\n ...coordinate,\n sectors,\n data: pieData,\n };\n };\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isAnimationFinished: !props.isAnimationActive,\n prevIsAnimationActive: props.isAnimationActive,\n prevAnimationId: props.animationId,\n sectorToFocus: 0,\n };\n }\n\n state: State;\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n return {\n prevIsAnimationActive: nextProps.isAnimationActive,\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: [],\n isAnimationFinished: true,\n };\n }\n if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: prevState.curSectors,\n isAnimationFinished: true,\n };\n }\n if (nextProps.sectors !== prevState.curSectors) {\n return {\n curSectors: nextProps.sectors,\n isAnimationFinished: true,\n };\n }\n\n return null;\n }\n\n static getTextAnchor(x: number, cx: number) {\n if (x > cx) {\n return 'start';\n }\n if (x < cx) {\n return 'end';\n }\n\n return 'middle';\n }\n\n id = uniqueId('recharts-pie-');\n\n isActiveIndex(i: number) {\n const { activeIndex } = this.props;\n\n if (Array.isArray(activeIndex)) {\n return activeIndex.indexOf(i) !== -1;\n }\n\n return i === activeIndex;\n }\n\n hasActiveIndex() {\n const { activeIndex } = this.props;\n return Array.isArray(activeIndex) ? activeIndex.length !== 0 : activeIndex || activeIndex === 0;\n }\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n\n this.setState({\n isAnimationFinished: true,\n });\n\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n\n this.setState({\n isAnimationFinished: false,\n });\n\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n static renderLabelLineItem(option: PieLabelLine, props: any, key: string) {\n if (React.isValidElement(option)) {\n return React.cloneElement(option, props);\n }\n if (isFunction(option)) {\n return option(props);\n }\n\n const className = clsx('recharts-pie-label-line', typeof option !== 'boolean' ? option.className : '');\n return <Curve {...props} key={key} type=\"linear\" className={className} />;\n }\n\n static renderLabelItem(option: PieLabel, props: any, value: any) {\n if (React.isValidElement(option)) {\n return React.cloneElement(option, props);\n }\n let label = value;\n if (isFunction(option)) {\n label = option(props);\n if (React.isValidElement(label)) {\n return label;\n }\n }\n\n const className = clsx(\n 'recharts-pie-label-text',\n typeof option !== 'boolean' && !isFunction(option) ? option.className : '',\n );\n return (\n <Text {...props} alignmentBaseline=\"middle\" className={className}>\n {label}\n </Text>\n );\n }\n\n renderLabels(sectors: PieSectorDataItem[]) {\n const { isAnimationActive } = this.props;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n const { label, labelLine, dataKey, valueKey } = this.props;\n const pieProps = filterProps(this.props, false);\n const customLabelProps = filterProps(label, false);\n const customLabelLineProps = filterProps(labelLine, false);\n const offsetRadius = (label && (label as any).offsetRadius) || 20;\n\n const labels = sectors.map((entry, i) => {\n const midAngle = (entry.startAngle + entry.endAngle) / 2;\n const endPoint = polarToCartesian(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n const labelProps = {\n ...pieProps,\n ...entry,\n stroke: 'none',\n ...customLabelProps,\n index: i,\n textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx),\n ...endPoint,\n };\n const lineProps = {\n ...pieProps,\n ...entry,\n fill: 'none',\n stroke: entry.fill,\n ...customLabelLineProps,\n index: i,\n points: [polarToCartesian(entry.cx, entry.cy, entry.outerRadius, midAngle), endPoint],\n };\n let realDataKey = dataKey;\n // TODO: compatible to lower versions\n if (isNil(dataKey) && isNil(valueKey)) {\n realDataKey = 'value';\n } else if (isNil(dataKey)) {\n realDataKey = valueKey;\n }\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Layer key={`label-${entry.startAngle}-${entry.endAngle}-${entry.midAngle}-${i}`}>\n {labelLine && Pie.renderLabelLineItem(labelLine, lineProps, 'line')}\n {Pie.renderLabelItem(label, labelProps, getValueByDataKey(entry, realDataKey))}\n </Layer>\n );\n });\n\n return <Layer className=\"recharts-pie-labels\">{labels}</Layer>;\n }\n\n renderSectorsStatically(sectors: PieSectorDataItem[]) {\n const { activeShape, blendStroke, inactiveShape: inactiveShapeProp } = this.props;\n return sectors.map((entry, i) => {\n if (entry?.startAngle === 0 && entry?.endAngle === 0 && sectors.length !== 1) return null;\n const isActive = this.isActiveIndex(i);\n const inactiveShape = inactiveShapeProp && this.hasActiveIndex() ? inactiveShapeProp : null;\n const sectorOptions = isActive ? activeShape : inactiveShape;\n const sectorProps = {\n ...entry,\n stroke: blendStroke ? entry.fill : entry.stroke,\n tabIndex: -1,\n };\n return (\n <Layer\n ref={(ref: SVGGElement) => {\n if (ref && !this.sectorRefs.includes(ref)) {\n this.sectorRefs.push(ref);\n }\n }}\n tabIndex={-1}\n className=\"recharts-pie-sector\"\n {...adaptEventsOfChild(this.props, entry, i)}\n // eslint-disable-next-line react/no-array-index-key\n key={`sector-${entry?.startAngle}-${entry?.endAngle}-${entry.midAngle}-${i}`}\n >\n <Shape option={sectorOptions} isActive={isActive} shapeType=\"sector\" {...sectorProps} />\n </Layer>\n );\n });\n }\n\n renderSectorsWithAnimation() {\n const { sectors, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n\n const { prevSectors, prevIsAnimationActive } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`pie-${animationId}-${prevIsAnimationActive}`}\n onAnimationStart={this.handleAnimationStart}\n onAnimationEnd={this.handleAnimationEnd}\n >\n {({ t }: { t: number }) => {\n const stepData: PieSectorDataItem[] = [];\n const first = sectors && sectors[0];\n let curAngle = first.startAngle;\n\n sectors.forEach((entry, index) => {\n const prev = prevSectors && prevSectors[index];\n const paddingAngle = index > 0 ? get(entry, 'paddingAngle', 0) : 0;\n\n if (prev) {\n const angleIp = interpolateNumber(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n const latest = {\n ...entry,\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + angleIp(t) + paddingAngle,\n };\n\n stepData.push(latest);\n curAngle = latest.endAngle;\n } else {\n const { endAngle, startAngle } = entry;\n const interpolatorAngle = interpolateNumber(0, endAngle - startAngle);\n const deltaAngle = interpolatorAngle(t);\n const latest = {\n ...entry,\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + deltaAngle + paddingAngle,\n };\n\n stepData.push(latest);\n curAngle = latest.endAngle;\n }\n });\n\n return <Layer>{this.renderSectorsStatically(stepData)}</Layer>;\n }}\n </Animate>\n );\n }\n\n attachKeyboardHandlers(pieRef: SVGGElement) {\n // eslint-disable-next-line no-param-reassign\n pieRef.onkeydown = (e: KeyboardEvent) => {\n if (!e.altKey) {\n switch (e.key) {\n case 'ArrowLeft': {\n const next = ++this.state.sectorToFocus % this.sectorRefs.length;\n this.sectorRefs[next].focus();\n this.setState({ sectorToFocus: next });\n break;\n }\n case 'ArrowRight': {\n const next =\n --this.state.sectorToFocus < 0\n ? this.sectorRefs.length - 1\n : this.state.sectorToFocus % this.sectorRefs.length;\n this.sectorRefs[next].focus();\n this.setState({ sectorToFocus: next });\n break;\n }\n case 'Escape': {\n this.sectorRefs[this.state.sectorToFocus].blur();\n this.setState({ sectorToFocus: 0 });\n break;\n }\n default: {\n // There is nothing to do here\n }\n }\n }\n };\n }\n\n renderSectors() {\n const { sectors, isAnimationActive } = this.props;\n const { prevSectors } = this.state;\n\n if (isAnimationActive && sectors && sectors.length && (!prevSectors || !isEqual(prevSectors, sectors))) {\n return this.renderSectorsWithAnimation();\n }\n return this.renderSectorsStatically(sectors);\n }\n\n componentDidMount(): void {\n if (this.pieRef) {\n this.attachKeyboardHandlers(this.pieRef);\n }\n }\n\n render() {\n const { hide, sectors, className, label, cx, cy, innerRadius, outerRadius, isAnimationActive } = this.props;\n const { isAnimationFinished } = this.state;\n\n if (\n hide ||\n !sectors ||\n !sectors.length ||\n !isNumber(cx as number) ||\n !isNumber(cy as number) ||\n !isNumber(innerRadius as number) ||\n !isNumber(outerRadius as number)\n ) {\n return null;\n }\n\n const layerClass = clsx('recharts-pie', className);\n\n return (\n <Layer\n tabIndex={this.props.rootTabIndex}\n className={layerClass}\n ref={ref => {\n this.pieRef = ref;\n }}\n >\n {this.renderSectors()}\n {label && this.renderLabels(sectors)}\n {Label.renderCallByParent(this.props, null, false)}\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, sectors, false)}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Radar\n */\nimport React, { PureComponent, ReactElement, MouseEvent, SVGProps } from 'react';\nimport Animate from 'react-smooth';\nimport isNil from 'lodash/isNil';\nimport last from 'lodash/last';\nimport first from 'lodash/first';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { interpolateNumber } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { Polygon } from '../shape/Polygon';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { LegendType, TooltipType, AnimationTiming, DataKey, AnimationDuration } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { Props as PolarAngleAxisProps } from './PolarAngleAxis';\nimport { Props as PolarRadiusAxisProps } from './PolarRadiusAxis';\n\ninterface RadarPoint {\n x: number;\n y: number;\n cx?: number;\n cy?: number;\n angle?: number;\n radius?: number;\n value?: number;\n payload?: any;\n name?: string;\n}\n\ntype RadarDot = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | DotProps | boolean;\n\ninterface RadarProps {\n className?: string;\n dataKey: DataKey<any>;\n angleAxisId?: string | number;\n radiusAxisId?: string | number;\n points?: RadarPoint[];\n baseLinePoints?: RadarPoint[];\n isRange?: boolean;\n shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n activeDot?: RadarDot;\n dot?: RadarDot;\n legendType?: LegendType;\n tooltipType?: TooltipType;\n hide?: boolean;\n connectNulls?: boolean;\n\n label?: any;\n onAnimationStart?: () => void;\n onAnimationEnd?: () => void;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n isAnimationActive?: boolean;\n animationId?: number;\n animationEasing?: AnimationTiming;\n\n onMouseEnter?: (props: any, e: MouseEvent<SVGPolygonElement>) => void;\n onMouseLeave?: (props: any, e: MouseEvent<SVGPolygonElement>) => void;\n}\n\ntype RadiusAxis = PolarRadiusAxisProps & { scale: (value: any) => number };\ntype AngleAxis = PolarAngleAxisProps & { scale: (value: any) => number };\n\nexport type Props = Omit<SVGProps<SVGElement>, 'onMouseEnter' | 'onMouseLeave' | 'points'> & RadarProps;\n\ninterface State {\n isAnimationFinished?: boolean;\n prevPoints?: RadarPoint[];\n curPoints?: RadarPoint[];\n prevAnimationId?: number;\n}\n\nexport class Radar extends PureComponent<Props, State> {\n static displayName = 'Radar';\n\n static defaultProps = {\n angleAxisId: 0,\n radiusAxisId: 0,\n hide: false,\n activeDot: true,\n dot: false,\n legendType: 'rect',\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n };\n\n static getComposedData = ({\n radiusAxis,\n angleAxis,\n displayedData,\n dataKey,\n bandSize,\n }: {\n radiusAxis: RadiusAxis;\n angleAxis: AngleAxis;\n displayedData: any[];\n dataKey: RadarProps['dataKey'];\n bandSize: number;\n }) => {\n const { cx, cy } = angleAxis;\n let isRange = false;\n const points: RadarPoint[] = [];\n const angleBandSize = angleAxis.type !== 'number' ? bandSize ?? 0 : 0;\n\n displayedData.forEach((entry, i) => {\n const name = getValueByDataKey(entry, angleAxis.dataKey, i);\n const value = getValueByDataKey(entry, dataKey);\n const angle = angleAxis.scale(name) + angleBandSize;\n const pointValue = Array.isArray(value) ? last(value) : value;\n const radius = isNil(pointValue) ? undefined : radiusAxis.scale(pointValue);\n\n if (Array.isArray(value) && value.length >= 2) {\n isRange = true;\n }\n\n points.push({\n ...polarToCartesian(cx, cy, radius, angle),\n name,\n value,\n cx,\n cy,\n radius,\n angle,\n payload: entry,\n });\n });\n const baseLinePoints: RadarPoint[] = [];\n\n if (isRange) {\n points.forEach(point => {\n if (Array.isArray(point.value)) {\n const baseValue = first(point.value);\n const radius = isNil(baseValue) ? undefined : radiusAxis.scale(baseValue);\n\n baseLinePoints.push({\n ...point,\n radius,\n ...polarToCartesian(cx, cy, radius, point.angle),\n });\n } else {\n baseLinePoints.push(point);\n }\n });\n }\n\n return { points, isRange, baseLinePoints };\n };\n\n state: State = { isAnimationFinished: false };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints,\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points,\n };\n }\n\n return null;\n }\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n this.setState({ isAnimationFinished: true });\n\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n\n this.setState({ isAnimationFinished: false });\n\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n handleMouseEnter = (e: MouseEvent<SVGPolygonElement>) => {\n const { onMouseEnter } = this.props;\n\n if (onMouseEnter) {\n onMouseEnter(this.props, e);\n }\n };\n\n handleMouseLeave = (e: MouseEvent<SVGPolygonElement>) => {\n const { onMouseLeave } = this.props;\n\n if (onMouseLeave) {\n onMouseLeave(this.props, e);\n }\n };\n\n static renderDotItem(option: RadarDot, props: any) {\n let dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n const { key, ...dotProps } = props;\n dotItem = (\n <Dot\n {...dotProps}\n key={key}\n className={clsx('recharts-radar-dot', typeof option !== 'boolean' ? option.className : '')}\n />\n );\n }\n\n return dotItem;\n }\n\n renderDots(points: RadarPoint[]) {\n const { dot, dataKey } = this.props;\n const baseProps = filterProps(this.props, false);\n const customDotProps = filterProps(dot, true);\n\n const dots = points.map((entry, i) => {\n const dotProps = {\n key: `dot-${i}`,\n r: 3,\n ...baseProps,\n ...customDotProps,\n dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry,\n };\n\n return Radar.renderDotItem(dot, dotProps);\n });\n\n return <Layer className=\"recharts-radar-dots\">{dots}</Layer>;\n }\n\n renderPolygonStatically(points: RadarPoint[]) {\n const { shape, dot, isRange, baseLinePoints, connectNulls } = this.props;\n\n let radar;\n if (React.isValidElement(shape)) {\n radar = React.cloneElement(shape, { ...this.props, points } as any);\n } else if (isFunction(shape)) {\n radar = shape({ ...this.props, points });\n } else {\n radar = (\n <Polygon\n {...filterProps(this.props, true)}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n points={points}\n baseLinePoints={isRange ? baseLinePoints : null}\n connectNulls={connectNulls}\n />\n );\n }\n\n return (\n <Layer className=\"recharts-radar-polygon\">\n {radar}\n {dot ? this.renderDots(points) : null}\n </Layer>\n );\n }\n\n renderPolygonWithAnimation() {\n const { points, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n const { prevPoints } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`radar-${animationId}`}\n onAnimationEnd={this.handleAnimationEnd}\n onAnimationStart={this.handleAnimationStart}\n >\n {({ t }: { t: number }) => {\n const prevPointsDiffFactor = prevPoints && prevPoints.length / points.length;\n const stepData = points.map((entry, index) => {\n const prev = prevPoints && prevPoints[Math.floor(index * prevPointsDiffFactor)];\n\n if (prev) {\n const interpolatorX = interpolateNumber(prev.x, entry.x);\n const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n return {\n ...entry,\n x: interpolatorX(t),\n y: interpolatorY(t),\n };\n }\n\n const interpolatorX = interpolateNumber(entry.cx, entry.x);\n const interpolatorY = interpolateNumber(entry.cy, entry.y);\n\n return {\n ...entry,\n x: interpolatorX(t),\n y: interpolatorY(t),\n };\n });\n\n return this.renderPolygonStatically(stepData);\n }}\n </Animate>\n );\n }\n\n renderPolygon() {\n const { points, isAnimationActive, isRange } = this.props;\n const { prevPoints } = this.state;\n\n if (isAnimationActive && points && points.length && !isRange && (!prevPoints || !isEqual(prevPoints, points))) {\n return this.renderPolygonWithAnimation();\n }\n\n return this.renderPolygonStatically(points);\n }\n\n render() {\n const { hide, className, points, isAnimationActive } = this.props;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n const { isAnimationFinished } = this.state;\n const layerClass = clsx('recharts-radar', className);\n\n return (\n <Layer className={layerClass}>\n {this.renderPolygon()}\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n </Layer>\n );\n }\n}\n","import React, { SVGProps } from 'react';\nimport { RadialBarProps } from '../polar/RadialBar';\nimport { Props as SectorProps } from '../shape/Sector';\nimport { Shape } from './ActiveShapeUtils';\n\nexport function parseCornerRadius(cornerRadius: string | number): number {\n if (typeof cornerRadius === 'string') {\n return parseInt(cornerRadius, 10);\n }\n\n return cornerRadius;\n}\n\n// Sector props is expecting cx, cy as numbers.\n// When props are being spread in from a user defined component in RadialBar,\n// the prop types of an SVGElement have these typed as string | number.\n// This function will return the passed in props along with cx, cy as numbers.\nexport function typeGuardSectorProps(option: SVGProps<SVGPathElement>, props: SectorProps): SectorProps {\n const cxValue = `${props.cx || option.cx}`;\n const cx = Number(cxValue);\n const cyValue = `${props.cy || option.cy}`;\n const cy = Number(cyValue);\n return {\n ...props,\n ...option,\n cx,\n cy,\n };\n}\n\nexport interface RadialBarSectorProps extends SectorProps {\n index?: number;\n option: RadialBarProps['activeShape'];\n isActive: boolean;\n}\n\nexport function RadialBarSector(props: RadialBarSectorProps) {\n return <Shape shapeType=\"sector\" propTransformer={typeGuardSectorProps} {...props} />;\n}\n","/**\n * @fileOverview Render a group of radial bar\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\n\nimport { parseCornerRadius, RadialBarSector, RadialBarSectorProps } from '../util/RadialBarUtils';\nimport { Props as SectorProps } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { ImplicitLabelListType, LabelList } from '../component/LabelList';\nimport { Cell } from '../component/Cell';\nimport { mathSign, interpolateNumber } from '../util/DataUtils';\nimport {\n getCateCoordinateOfBar,\n findPositionOfBar,\n getValueByDataKey,\n truncateByDomain,\n getBaseValueOfBar,\n getTooltipItem,\n} from '../util/ChartUtils';\nimport {\n LegendType,\n TooltipType,\n AnimationTiming,\n TickItem,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n AnimationDuration,\n ActiveShape,\n} from '../util/types';\nimport { polarToCartesian } from '../util/PolarUtils';\n// TODO: Cause of circular dependency. Needs refactoring of functions that need them.\n// import { AngleAxisProps, RadiusAxisProps } from './types';\n\ntype RadialBarDataItem = SectorProps & {\n value?: any;\n payload?: any;\n background?: SectorProps;\n};\n\ntype RadialBarBackground = ActiveShape<SectorProps>;\n\ninterface InternalRadialBarProps {\n animationId?: string | number;\n className?: string;\n angleAxisId?: string | number;\n radiusAxisId?: string | number;\n startAngle?: number;\n endAngle?: number;\n shape?: ActiveShape<SectorProps, SVGPathElement>;\n activeShape?: ActiveShape<SectorProps, SVGPathElement>;\n activeIndex?: number;\n dataKey: string | number | ((obj: any) => any);\n cornerRadius?: string | number;\n forceCornerRadius?: boolean;\n cornerIsExternal?: boolean;\n minPointSize?: number;\n maxBarSize?: number;\n data?: RadialBarDataItem[];\n legendType?: LegendType;\n tooltipType?: TooltipType;\n hide?: boolean;\n label?: ImplicitLabelListType<any>;\n stackId?: string | number;\n background?: RadialBarBackground;\n onAnimationStart?: () => void;\n onAnimationEnd?: () => void;\n isAnimationActive?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n}\n\nexport type RadialBarProps = PresentationAttributesAdaptChildEvent<any, SVGElement> & InternalRadialBarProps;\n\ninterface State {\n readonly isAnimationFinished?: boolean;\n readonly prevData?: RadialBarDataItem[];\n readonly curData?: RadialBarDataItem[];\n readonly prevAnimationId?: string | number;\n}\n\nexport class RadialBar extends PureComponent<RadialBarProps, State> {\n static displayName = 'RadialBar';\n\n static defaultProps = {\n angleAxisId: 0,\n radiusAxisId: 0,\n minPointSize: 0,\n hide: false,\n legendType: 'rect',\n data: [] as RadialBarDataItem[],\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n forceCornerRadius: false,\n cornerIsExternal: false,\n };\n\n static getComposedData = ({\n item,\n props,\n radiusAxis,\n radiusAxisTicks,\n angleAxis,\n angleAxisTicks,\n displayedData,\n dataKey,\n stackedData,\n barPosition,\n bandSize,\n dataStartIndex,\n }: {\n item: ReactElement;\n props: any;\n radiusAxis: any; // RadiusAxisProps;\n radiusAxisTicks: Array<TickItem>;\n angleAxis: any; // AngleAxisProps;\n angleAxisTicks: Array<TickItem>;\n displayedData: any[];\n dataKey: RadialBarProps['dataKey'];\n stackedData?: any[];\n barPosition?: any[];\n bandSize?: number;\n dataStartIndex: number;\n }) => {\n const pos = findPositionOfBar(barPosition, item);\n if (!pos) {\n return null;\n }\n\n const { cx, cy } = angleAxis;\n const { layout } = props;\n const { children, minPointSize } = item.props;\n const numericAxis = layout === 'radial' ? angleAxis : radiusAxis;\n const stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n const baseValue = getBaseValueOfBar({ numericAxis });\n const cells = findAllByType(children, Cell);\n const sectors = displayedData.map((entry: any, index: number) => {\n let value, innerRadius, outerRadius, startAngle, endAngle, backgroundSector;\n\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\n if (layout === 'radial') {\n innerRadius = getCateCoordinateOfBar({\n axis: radiusAxis,\n ticks: radiusAxisTicks,\n bandSize,\n offset: pos.offset,\n entry,\n index,\n });\n endAngle = angleAxis.scale(value[1]);\n startAngle = angleAxis.scale(value[0]);\n outerRadius = innerRadius + pos.size;\n const deltaAngle = endAngle - startAngle;\n\n if (Math.abs(minPointSize) > 0 && Math.abs(deltaAngle) < Math.abs(minPointSize)) {\n const delta = mathSign(deltaAngle || minPointSize) * (Math.abs(minPointSize) - Math.abs(deltaAngle));\n\n endAngle += delta;\n }\n backgroundSector = {\n background: {\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle: props.startAngle,\n endAngle: props.endAngle,\n },\n };\n } else {\n innerRadius = radiusAxis.scale(value[0]);\n outerRadius = radiusAxis.scale(value[1]);\n startAngle = getCateCoordinateOfBar({\n axis: angleAxis,\n ticks: angleAxisTicks,\n bandSize,\n offset: pos.offset,\n entry,\n index,\n });\n endAngle = startAngle + pos.size;\n const deltaRadius = outerRadius - innerRadius;\n\n if (Math.abs(minPointSize) > 0 && Math.abs(deltaRadius) < Math.abs(minPointSize)) {\n const delta = mathSign(deltaRadius || minPointSize) * (Math.abs(minPointSize) - Math.abs(deltaRadius));\n outerRadius += delta;\n }\n }\n\n return {\n ...entry,\n ...backgroundSector,\n payload: entry,\n value: stackedData ? value : value[1],\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n ...(cells && cells[index] && cells[index].props),\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: polarToCartesian(cx, cy, (innerRadius + outerRadius) / 2, (startAngle + endAngle) / 2),\n };\n });\n\n return { data: sectors, layout };\n };\n\n state: State = {\n isAnimationFinished: false,\n };\n\n static getDerivedStateFromProps(nextProps: RadialBarProps, prevState: State): State {\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\n return null;\n }\n\n getDeltaAngle() {\n const { startAngle, endAngle } = this.props;\n const sign = mathSign(endAngle - startAngle);\n const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n\n return sign * deltaAngle;\n }\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n this.setState({ isAnimationFinished: true });\n\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n\n this.setState({ isAnimationFinished: false });\n\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n renderSectorsStatically(sectors: SectorProps[]) {\n const { shape, activeShape, activeIndex, cornerRadius, ...others } = this.props;\n const baseProps = filterProps(others, false);\n\n return sectors.map((entry, i) => {\n const isActive = i === activeIndex;\n const props: RadialBarSectorProps = {\n ...baseProps,\n cornerRadius: parseCornerRadius(cornerRadius),\n ...entry,\n ...adaptEventsOfChild(this.props, entry, i),\n className: `recharts-radial-bar-sector ${entry.className}`,\n forceCornerRadius: others.forceCornerRadius,\n cornerIsExternal: others.cornerIsExternal,\n isActive,\n option: isActive ? activeShape : shape,\n };\n\n return <RadialBarSector {...props} key={`sector-${i}`} />;\n });\n }\n\n renderSectorsWithAnimation() {\n const { data, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n const { prevData } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`radialBar-${animationId}`}\n onAnimationStart={this.handleAnimationStart}\n onAnimationEnd={this.handleAnimationEnd}\n >\n {({ t }: { t: number }) => {\n const stepData = data.map((entry, index) => {\n const prev = prevData && prevData[index];\n\n if (prev) {\n const interpolatorStartAngle = interpolateNumber(prev.startAngle, entry.startAngle);\n const interpolatorEndAngle = interpolateNumber(prev.endAngle, entry.endAngle);\n\n return {\n ...entry,\n startAngle: interpolatorStartAngle(t),\n endAngle: interpolatorEndAngle(t),\n };\n }\n const { endAngle, startAngle } = entry;\n const interpolator = interpolateNumber(startAngle, endAngle);\n\n return { ...entry, endAngle: interpolator(t) };\n });\n\n return <Layer>{this.renderSectorsStatically(stepData)}</Layer>;\n }}\n </Animate>\n );\n }\n\n renderSectors() {\n const { data, isAnimationActive } = this.props;\n const { prevData } = this.state;\n\n if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n return this.renderSectorsWithAnimation();\n }\n\n return this.renderSectorsStatically(data);\n }\n\n renderBackground(sectors?: RadialBarDataItem[]) {\n const { cornerRadius } = this.props;\n const backgroundProps = filterProps(this.props.background, false);\n\n return sectors.map((entry, i) => {\n const { value, background, ...rest } = entry;\n\n if (!background) {\n return null;\n }\n\n const props: RadialBarSectorProps = {\n cornerRadius: parseCornerRadius(cornerRadius),\n ...rest,\n fill: '#eee',\n ...background,\n ...backgroundProps,\n ...adaptEventsOfChild(this.props, entry, i),\n index: i,\n className: clsx('recharts-radial-bar-background-sector', backgroundProps?.className),\n option: background,\n isActive: false,\n };\n\n return <RadialBarSector {...props} key={`sector-${i}`} />;\n });\n }\n\n render() {\n const { hide, data, className, background, isAnimationActive } = this.props;\n\n if (hide || !data || !data.length) {\n return null;\n }\n\n const { isAnimationFinished } = this.state;\n const layerClass = clsx('recharts-area', className);\n\n return (\n <Layer className={layerClass}>\n {background && <Layer className=\"recharts-radial-bar-background\">{this.renderBackground(data)}</Layer>}\n\n <Layer className=\"recharts-radial-bar-sectors\">{this.renderSectors()}</Layer>\n\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent({ ...this.props }, data)}\n </Layer>\n );\n }\n}\n","const PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\n\nexport const generatePrefixStyle = (name: string, value: string) => {\n if (!name) {\n return null;\n }\n\n const camelName = name.replace(/(\\w)/, v => v.toUpperCase());\n const result: Record<string, string> = PREFIX_LIST.reduce(\n (res, entry) => ({\n ...res,\n [entry + camelName]: value,\n }),\n {},\n );\n\n result[name] = value;\n\n return result;\n};\n","/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children, ReactElement, TouchEvent, SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { scalePoint, 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 { Padding, DataKey } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\ntype BrushTravellerType = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\ninterface BrushStartEndIndex {\n startIndex?: number;\n endIndex?: number;\n}\n\ninterface InternalBrushProps {\n x?: number;\n y?: number;\n width?: number;\n data?: any[];\n updateId?: string | number;\n}\n\ninterface BrushProps extends InternalBrushProps {\n className?: string;\n\n ariaLabel?: string;\n\n height: number;\n travellerWidth?: number;\n traveller?: BrushTravellerType;\n gap?: number;\n padding?: Padding;\n\n dataKey?: DataKey<any>;\n startIndex?: number;\n endIndex?: number;\n tickFormatter?: (value: any, index: number) => string | number;\n\n children?: ReactElement;\n\n onChange?: (newIndex: BrushStartEndIndex) => void;\n onDragEnd?: (newIndex: BrushStartEndIndex) => void;\n leaveTimeOut?: number;\n alwaysShowText?: boolean;\n}\n\nexport type Props = Omit<SVGProps<SVGElement>, 'onChange'> & BrushProps;\n\ntype BrushTravellerId = 'startX' | 'endX';\n\ninterface State {\n isTravellerMoving?: boolean;\n isTravellerFocused?: boolean;\n isSlideMoving?: boolean;\n startX?: number;\n endX?: number;\n slideMoveStartX?: number;\n movingTravellerId?: BrushTravellerId;\n isTextActive?: boolean;\n brushMoveStartX?: number;\n\n scale?: ScalePoint<number>;\n scaleValues?: number[];\n\n prevData?: any[];\n prevWidth?: number;\n prevX?: number;\n prevTravellerWidth?: number;\n prevUpdateId?: string | number;\n}\n\nconst createScale = ({\n data,\n startIndex,\n endIndex,\n x,\n width,\n travellerWidth,\n}: {\n data?: any[];\n startIndex?: number;\n endIndex?: number;\n x?: number;\n width?: number;\n travellerWidth?: number;\n}) => {\n if (!data || !data.length) {\n return {};\n }\n\n const len = data.length;\n const scale = scalePoint<number>()\n .domain(range(0, len))\n .range([x, x + width - travellerWidth]);\n const scaleValues = scale.domain().map(entry => 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,\n scaleValues,\n };\n};\n\nconst isTouch = (e: TouchEvent<SVGElement> | React.MouseEvent<SVGElement>): e is TouchEvent<SVGElement> =>\n (e as TouchEvent<SVGElement>).changedTouches && !!(e as TouchEvent<SVGElement>).changedTouches.length;\n\nexport class Brush extends PureComponent<Props, State> {\n static displayName = 'Brush';\n\n static defaultProps = {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: { top: 1, right: 1, bottom: 1, left: 1 },\n leaveTimeOut: 1000,\n alwaysShowText: false,\n };\n\n constructor(props: Props) {\n super(props);\n\n this.travellerDragStartHandlers = {\n startX: this.handleTravellerDragStart.bind(this, 'startX'),\n endX: this.handleTravellerDragStart.bind(this, 'endX'),\n };\n\n this.state = {};\n }\n\n leaveTimer?: number;\n\n travellerDragStartHandlers?: Record<\n BrushTravellerId,\n (event: React.MouseEvent<SVGGElement> | TouchEvent<SVGGElement>) => void\n >;\n\n static renderDefaultTraveller(props: any) {\n const { x, y, width, height, stroke } = props;\n const lineY = Math.floor(y + height / 2) - 1;\n\n return (\n <>\n <rect x={x} y={y} width={width} height={height} fill={stroke} stroke=\"none\" />\n <line x1={x + 1} y1={lineY} x2={x + width - 1} y2={lineY} fill=\"none\" stroke=\"#fff\" />\n <line x1={x + 1} y1={lineY + 2} x2={x + width - 1} y2={lineY + 2} fill=\"none\" stroke=\"#fff\" />\n </>\n );\n }\n\n static renderTraveller(option: BrushTravellerType, props: any) {\n let rectangle;\n\n if (React.isValidElement(option)) {\n rectangle = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n\n return rectangle;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n const { data, width, x, travellerWidth, updateId, startIndex, endIndex } = nextProps;\n\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n ...(data && data.length\n ? createScale({ data, width, x, travellerWidth, startIndex, endIndex })\n : { scale: null, scaleValues: null }),\n };\n }\n if (\n prevState.scale &&\n (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)\n ) {\n prevState.scale.range([x, x + width - travellerWidth]);\n\n const scaleValues = prevState.scale.domain().map(entry => 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,\n };\n }\n\n return null;\n }\n\n componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n\n this.detachDragEndListener();\n }\n\n static getIndexInRange(valueRange: number[], x: number) {\n const len = valueRange.length;\n let start = 0;\n let end = len - 1;\n\n while (end - start > 1) {\n const middle = Math.floor((start + end) / 2);\n\n if (valueRange[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n\n return x >= valueRange[end] ? end : start;\n }\n\n getIndex({ startX, endX }: { startX: number; endX: number }) {\n const { scaleValues } = this.state;\n const { gap, data } = this.props;\n const lastIndex = data.length - 1;\n const min = Math.min(startX, endX);\n const max = Math.max(startX, endX);\n const minIndex = Brush.getIndexInRange(scaleValues, min);\n const maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - (minIndex % gap),\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - (maxIndex % gap),\n };\n }\n\n getTextOfTick(index: number) {\n const { data, tickFormatter, dataKey } = this.props;\n const text = getValueByDataKey(data[index], dataKey, index);\n\n return isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n\n handleDrag = (e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) => {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n\n if (this.state.isTravellerMoving) {\n this.handleTravellerMove(e);\n } else if (this.state.isSlideMoving) {\n this.handleSlideDrag(e);\n }\n };\n\n handleTouchMove = (e: TouchEvent<SVGGElement>) => {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n this.handleDrag(e.changedTouches[0]);\n }\n };\n\n 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 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 handleDragEnd = () => {\n this.setState(\n {\n isTravellerMoving: false,\n isSlideMoving: false,\n },\n () => {\n const { endIndex, onDragEnd, startIndex } = this.props;\n onDragEnd?.({\n endIndex,\n startIndex,\n });\n },\n );\n this.detachDragEndListener();\n };\n\n handleLeaveWrapper = () => {\n if (this.state.isTravellerMoving || this.state.isSlideMoving) {\n this.leaveTimer = window.setTimeout(this.handleDragEnd, this.props.leaveTimeOut);\n }\n };\n\n handleEnterSlideOrTraveller = () => {\n this.setState({\n isTextActive: true,\n });\n };\n\n handleLeaveSlideOrTraveller = () => {\n this.setState({\n isTextActive: false,\n });\n };\n\n handleSlideDragStart = (e: TouchEvent<SVGRectElement> | React.MouseEvent<SVGRectElement>) => {\n const event = isTouch(e) ? e.changedTouches[0] : e;\n\n this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX,\n });\n\n this.attachDragEndListener();\n };\n\n handleSlideDrag(e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) {\n const { slideMoveStartX, startX, endX } = this.state;\n const { x, width, travellerWidth, startIndex, endIndex, onChange } = this.props;\n let delta = e.pageX - slideMoveStartX;\n\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 const newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta,\n });\n\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX,\n });\n }\n\n handleTravellerDragStart(id: BrushTravellerId, e: React.MouseEvent<SVGGElement> | TouchEvent<SVGGElement>) {\n const event = isTouch(e) ? e.changedTouches[0] : e;\n\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX,\n });\n\n this.attachDragEndListener();\n }\n\n handleTravellerMove(e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) {\n const { brushMoveStartX, movingTravellerId, endX, startX } = this.state;\n const prevValue = this.state[movingTravellerId];\n\n const { x, width, travellerWidth, onChange, gap, data } = this.props;\n const params = { startX: this.state.startX, endX: this.state.endX };\n\n let 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\n params[movingTravellerId] = prevValue + delta;\n\n const newIndex = this.getIndex(params);\n const { startIndex, endIndex } = newIndex;\n const isFullGap = () => {\n const lastIndex = data.length - 1;\n if (\n (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0)) ||\n (endX < startX && endIndex === lastIndex) ||\n (movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0)) ||\n (endX > startX && endIndex === lastIndex)\n ) {\n return true;\n }\n return false;\n };\n\n this.setState(\n {\n [movingTravellerId]: prevValue + delta,\n brushMoveStartX: e.pageX,\n },\n () => {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n },\n );\n }\n\n handleTravellerMoveKeyboard(direction: 1 | -1, id: BrushTravellerId) {\n // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n const { scaleValues, startX, endX } = this.state;\n // currentScaleValue refers to which coordinate the current traveller should be placed at.\n const currentScaleValue = this.state[id];\n\n const currentIndex = scaleValues.indexOf(currentScaleValue);\n if (currentIndex === -1) {\n return;\n }\n\n const newIndex = currentIndex + direction;\n if (newIndex === -1 || newIndex >= scaleValues.length) {\n return;\n }\n\n const 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\n this.setState(\n {\n [id]: newScaleValue,\n },\n () => {\n this.props.onChange(\n this.getIndex({\n startX: this.state.startX,\n endX: this.state.endX,\n }),\n );\n },\n );\n }\n\n renderBackground() {\n const { x, y, width, height, fill, stroke } = this.props;\n\n return <rect stroke={stroke} fill={fill} x={x} y={y} width={width} height={height} />;\n }\n\n renderPanorama() {\n const { x, y, width, height, data, children, padding } = this.props;\n const chartElement = Children.only(children);\n\n if (!chartElement) {\n return null;\n }\n\n return React.cloneElement(chartElement, {\n x,\n y,\n width,\n height,\n margin: padding,\n compact: true,\n data,\n });\n }\n\n renderTravellerLayer(travellerX: number, id: BrushTravellerId) {\n const { y, travellerWidth, height, traveller, ariaLabel, data, startIndex, endIndex } = this.props;\n const x = Math.max(travellerX, this.props.x);\n const travellerProps = {\n ...filterProps(this.props, false),\n x,\n y,\n width: travellerWidth,\n height,\n };\n\n const ariaLabelBrush = ariaLabel || `Min value: ${data[startIndex]?.name}, Max value: ${data[endIndex]?.name}`;\n\n return (\n <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={e => {\n if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n }}\n onFocus={() => {\n this.setState({ isTravellerFocused: true });\n }}\n onBlur={() => {\n this.setState({ isTravellerFocused: false });\n }}\n style={{ cursor: 'col-resize' }}\n >\n {Brush.renderTraveller(traveller, travellerProps)}\n </Layer>\n );\n }\n\n renderSlide(startX: number, endX: number) {\n const { y, height, stroke, travellerWidth } = this.props;\n const x = Math.min(startX, endX) + travellerWidth;\n const width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n\n return (\n <rect\n className=\"recharts-brush-slide\"\n onMouseEnter={this.handleEnterSlideOrTraveller}\n onMouseLeave={this.handleLeaveSlideOrTraveller}\n onMouseDown={this.handleSlideDragStart}\n onTouchStart={this.handleSlideDragStart}\n style={{ cursor: 'move' }}\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\n renderText() {\n const { startIndex, endIndex, y, height, travellerWidth, stroke } = this.props;\n const { startX, endX } = this.state;\n const offset = 5;\n const attrs = {\n pointerEvents: 'none',\n fill: stroke,\n };\n\n return (\n <Layer className=\"recharts-brush-texts\">\n <Text\n textAnchor=\"end\"\n verticalAnchor=\"middle\"\n x={Math.min(startX, endX) - offset}\n y={y + height / 2}\n {...attrs}\n >\n {this.getTextOfTick(startIndex)}\n </Text>\n <Text\n textAnchor=\"start\"\n verticalAnchor=\"middle\"\n x={Math.max(startX, endX) + travellerWidth + offset}\n y={y + height / 2}\n {...attrs}\n >\n {this.getTextOfTick(endIndex)}\n </Text>\n </Layer>\n );\n }\n\n render() {\n const { data, className, children, x, y, width, height, alwaysShowText } = this.props;\n const { startX, endX, isTextActive, isSlideMoving, isTravellerMoving, isTravellerFocused } = this.state;\n\n if (\n !data ||\n !data.length ||\n !isNumber(x) ||\n !isNumber(y) ||\n !isNumber(width) ||\n !isNumber(height) ||\n width <= 0 ||\n height <= 0\n ) {\n return null;\n }\n\n const layerClass = clsx('recharts-brush', className);\n const isPanoramic = React.Children.count(children) === 1;\n const style = generatePrefixStyle('userSelect', 'none');\n\n return (\n <Layer\n className={layerClass}\n onMouseLeave={this.handleLeaveWrapper}\n onTouchMove={this.handleTouchMove}\n style={style}\n >\n {this.renderBackground()}\n {isPanoramic && this.renderPanorama()}\n {this.renderSlide(startX, endX)}\n {this.renderTravellerLayer(startX, 'startX')}\n {this.renderTravellerLayer(endX, 'endX')}\n {(isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) &&\n this.renderText()}\n </Layer>\n );\n }\n}\n","export type IfOverflow = 'hidden' | 'visible' | 'discard' | 'extendDomain';\n\nexport const ifOverflowMatches = (props: { alwaysShow?: boolean; ifOverflow?: IfOverflow }, value: IfOverflow) => {\n const { alwaysShow } = props;\n let { ifOverflow } = props;\n\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n\n return ifOverflow === value;\n};\n","import React, { SVGProps } from 'react';\nimport invariant from 'tiny-invariant';\nimport { ActiveShape } from './types';\nimport { Props as RectangleProps } from '../shape/Rectangle';\nimport { BarProps } from '../cartesian/Bar';\nimport { Shape } from './ActiveShapeUtils';\nimport { isNullish, isNumber } from './DataUtils';\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(\n { x: xProp, y: yProp, ...option }: SVGProps<SVGPathElement>,\n props: BarProps,\n): RectangleProps {\n const xValue = `${xProp}`;\n const x = parseInt(xValue, 10);\n const yValue = `${yProp}`;\n const y = parseInt(yValue, 10);\n const heightValue = `${props.height || option.height}`;\n const height = parseInt(heightValue, 10);\n const widthValue = `${props.width || option.width}`;\n const width = parseInt(widthValue, 10);\n return {\n ...props,\n ...option,\n ...(x ? { x } : {}),\n ...(y ? { y } : {}),\n height,\n width,\n name: props.name as string,\n radius: props.radius,\n };\n}\n\ntype BarRectangleProps = {\n option: ActiveShape<BarProps, SVGPathElement>;\n isActive: boolean;\n} & BarProps;\n\nexport function BarRectangle(props: BarRectangleProps) {\n return (\n <Shape\n shapeType=\"rectangle\"\n propTransformer={typeguardBarRectangleProps}\n activeClassName=\"recharts-active-bar\"\n {...props}\n />\n );\n}\n\nexport type MinPointSize = number | ((value: number | undefined | null, index: number) => number);\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 const minPointSizeCallback =\n (minPointSize: MinPointSize, defaultValue = 0) =>\n (value: unknown, index: number): number => {\n if (typeof minPointSize === 'number') return minPointSize;\n const isValueNumberOrNil = isNumber(value) || isNullish(value);\n if (isValueNumberOrNil) {\n return minPointSize(value as number | undefined | null, index);\n }\n\n invariant(\n isValueNumberOrNil,\n `minPointSize callback function received a value with type of ${typeof value}. Currently only numbers or null/undefined are supported.`,\n );\n return defaultValue;\n };\n","/**\n * @fileOverview Render a group of bar\n */\nimport React, { Key, PureComponent, ReactElement } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport { Props as RectangleProps } from '../shape/Rectangle';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar, Props as ErrorBarProps, ErrorBarDataPointFormatter } 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 {\n getCateCoordinateOfBar,\n getValueByDataKey,\n truncateByDomain,\n getBaseValueOfBar,\n findPositionOfBar,\n getTooltipItem,\n} from '../util/ChartUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport {\n D3Scale,\n TooltipType,\n LegendType,\n AnimationTiming,\n ChartOffset,\n DataKey,\n TickItem,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n AnimationDuration,\n ActiveShape,\n} from '../util/types';\nimport { ImplicitLabelType } from '../component/Label';\nimport { BarRectangle, MinPointSize, minPointSizeCallback } from '../util/BarUtils';\n\nexport interface BarRectangleItem extends RectangleProps {\n value?: number | [number, number];\n /** the coordinate of background rectangle */\n background?: {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n };\n}\n\ninterface InternalBarProps {\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number>; x?: number; width?: number };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number>; y?: number; height?: number };\n data?: BarRectangleItem[];\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n}\n\nexport interface BarProps extends InternalBarProps {\n className?: string;\n index?: Key;\n activeIndex?: number;\n layout?: 'horizontal' | 'vertical';\n xAxisId?: string | number;\n yAxisId?: string | number;\n stackId?: string | number;\n barSize?: string | number;\n unit?: string | number;\n name?: string | number;\n dataKey: DataKey<any>;\n tooltipType?: TooltipType;\n legendType?: LegendType;\n minPointSize?: MinPointSize;\n maxBarSize?: number;\n hide?: boolean;\n shape?: ActiveShape<BarProps, SVGPathElement>;\n activeBar?: ActiveShape<BarProps, SVGPathElement>;\n background?: ActiveShape<BarProps, SVGPathElement>;\n radius?: number | [number, number, number, number];\n onAnimationStart?: () => void;\n onAnimationEnd?: () => void;\n isAnimationActive?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n animationId?: number;\n id?: string;\n label?: ImplicitLabelType;\n}\n\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGPathElement>, 'radius' | 'name'> & BarProps;\n\ninterface State {\n readonly isAnimationFinished?: boolean;\n readonly prevData?: BarRectangleItem[];\n readonly curData?: BarRectangleItem[];\n readonly prevAnimationId?: number;\n}\n\nexport class Bar extends PureComponent<Props, State> {\n static displayName = 'Bar';\n\n static defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n data: [] as BarRectangleItem[],\n layout: 'vertical',\n activeBar: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease',\n };\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 static getComposedData = ({\n props,\n item,\n barPosition,\n bandSize,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n stackedData,\n dataStartIndex,\n displayedData,\n offset,\n }: {\n props: Props;\n item: ReactElement;\n barPosition: any;\n bandSize: number;\n xAxis: InternalBarProps['xAxis'];\n yAxis: InternalBarProps['yAxis'];\n xAxisTicks: TickItem[];\n yAxisTicks: TickItem[];\n stackedData: Array<[number, number]>;\n dataStartIndex: number;\n offset: ChartOffset;\n displayedData: any[];\n }) => {\n const pos = findPositionOfBar(barPosition, item);\n if (!pos) {\n return null;\n }\n\n const { layout } = props;\n const itemDefaultProps = (item.type as any).defaultProps;\n const itemProps = itemDefaultProps !== undefined ? { ...itemDefaultProps, ...item.props } : item.props;\n const { dataKey, children, minPointSize: minPointSizeProp } = itemProps;\n const numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n const stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n const baseValue = getBaseValueOfBar({ numericAxis });\n const cells = findAllByType(children, Cell);\n const rects = displayedData.map((entry, index) => {\n let value, x, y, width, height, background;\n\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n }\n }\n\n const minPointSize = minPointSizeCallback(minPointSizeProp, this.defaultProps.minPointSize)(value[1], index);\n\n if (layout === 'horizontal') {\n const [baseValueScale, currentValueScale] = [yAxis.scale(value[0]), yAxis.scale(value[1])];\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize,\n offset: pos.offset,\n entry,\n index,\n });\n y = currentValueScale ?? baseValueScale ?? undefined;\n width = pos.size;\n const computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = { x, y: yAxis.y, width, height: yAxis.height };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n const delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n\n y -= delta;\n height += delta;\n }\n } else {\n const [baseValueScale, currentValueScale] = [xAxis.scale(value[0]), xAxis.scale(value[1])];\n x = baseValueScale;\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize,\n offset: pos.offset,\n entry,\n index,\n });\n width = currentValueScale - baseValueScale;\n height = pos.size;\n background = { x: xAxis.x, y, width: xAxis.width, height };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n const delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += delta;\n }\n }\n\n return {\n ...entry,\n x,\n y,\n width,\n height,\n value: stackedData ? value : value[1],\n payload: entry,\n background,\n ...(cells && cells[index] && cells[index].props),\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: { x: x + width / 2, y: y + height / 2 },\n };\n });\n\n return { data: rects, layout, ...offset };\n };\n\n state: State = { isAnimationFinished: false };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\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\n return null;\n }\n\n id = uniqueId('recharts-bar-');\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n this.setState({ isAnimationFinished: true });\n\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n this.setState({ isAnimationFinished: false });\n\n if (onAnimationStart) {\n onAnimationStart();\n }\n };\n\n renderRectanglesStatically(data: BarRectangleItem[]) {\n const { shape, dataKey, activeIndex, activeBar } = this.props;\n const baseProps = filterProps(this.props, false);\n\n return (\n data &&\n data.map((entry, i) => {\n const isActive = i === activeIndex;\n const option = isActive ? activeBar : shape;\n const props = {\n ...baseProps,\n ...entry,\n isActive,\n option,\n index: i,\n dataKey,\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd,\n };\n return (\n <Layer\n className=\"recharts-bar-rectangle\"\n {...adaptEventsOfChild(this.props, entry, i)}\n // https://github.com/recharts/recharts/issues/5415\n // eslint-disable-next-line react/no-array-index-key\n key={`rectangle-${entry?.x}-${entry?.y}-${entry?.value}-${i}`}\n >\n <BarRectangle {...props} />\n </Layer>\n );\n })\n );\n }\n\n renderRectanglesWithAnimation() {\n const { data, layout, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } =\n this.props;\n const { prevData } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`bar-${animationId}`}\n onAnimationEnd={this.handleAnimationEnd}\n onAnimationStart={this.handleAnimationStart}\n >\n {({ t }: { t: number }) => {\n const stepData = data.map((entry, index) => {\n const prev = prevData && prevData[index];\n\n if (prev) {\n const interpolatorX = interpolateNumber(prev.x, entry.x);\n const interpolatorY = interpolateNumber(prev.y, entry.y);\n const interpolatorWidth = interpolateNumber(prev.width, entry.width);\n const interpolatorHeight = interpolateNumber(prev.height, entry.height);\n\n return {\n ...entry,\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t),\n };\n }\n\n if (layout === 'horizontal') {\n const interpolatorHeight = interpolateNumber(0, entry.height);\n const h = interpolatorHeight(t);\n\n return {\n ...entry,\n y: entry.y + entry.height - h,\n height: h,\n };\n }\n\n const interpolator = interpolateNumber(0, entry.width);\n const w = interpolator(t);\n\n return { ...entry, width: w };\n });\n\n return <Layer>{this.renderRectanglesStatically(stepData)}</Layer>;\n }}\n </Animate>\n );\n }\n\n renderRectangles() {\n const { data, isAnimationActive } = this.props;\n const { prevData } = this.state;\n\n if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n\n return this.renderRectanglesStatically(data);\n }\n\n renderBackground() {\n const { data, dataKey, activeIndex } = this.props;\n const backgroundProps = filterProps(this.props.background, false);\n\n return data.map((entry, i) => {\n const { value, background, ...rest } = entry;\n\n if (!background) {\n return null;\n }\n\n const props = {\n ...rest,\n fill: '#eee',\n ...background,\n ...backgroundProps,\n ...adaptEventsOfChild(this.props, entry, i),\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd,\n dataKey,\n index: i,\n className: 'recharts-bar-background-rectangle',\n };\n\n return (\n <BarRectangle\n key={`background-bar-${i}`}\n option={this.props.background}\n isActive={i === activeIndex}\n {...props}\n />\n );\n });\n }\n\n renderErrorBar(needClip: boolean, clipPathId: string) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n const { data, xAxis, yAxis, layout, children } = this.props;\n const errorBarItems = findAllByType(children, ErrorBar);\n\n if (!errorBarItems) {\n return null;\n }\n\n const offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n\n const dataPointFormatter: ErrorBarDataPointFormatter = (dataPoint: BarRectangleItem, 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 const value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value,\n errorVal: getValueByDataKey(dataPoint, dataKey),\n };\n };\n\n const errorBarProps = {\n clipPath: needClip ? `url(#clipPath-${clipPathId})` : null,\n };\n\n return (\n <Layer {...errorBarProps}>\n {errorBarItems.map((item: ReactElement<ErrorBarProps>) =>\n React.cloneElement(item, {\n key: `error-bar-${clipPathId}-${item.props.dataKey}`,\n data,\n xAxis,\n yAxis,\n layout,\n offset,\n dataPointFormatter,\n }),\n )}\n </Layer>\n );\n }\n\n render() {\n const { hide, data, className, xAxis, yAxis, left, top, width, height, isAnimationActive, background, id } =\n this.props;\n if (hide || !data || !data.length) {\n return null;\n }\n\n const { isAnimationFinished } = this.state;\n const layerClass = clsx('recharts-bar', className);\n const needClipX = xAxis && xAxis.allowDataOverflow;\n const needClipY = yAxis && yAxis.allowDataOverflow;\n const needClip = needClipX || needClipY;\n const clipPathId = isNil(id) ? this.id : id;\n\n return (\n <Layer className={layerClass}>\n {needClipX || needClipY ? (\n <defs>\n <clipPath id={`clipPath-${clipPathId}`}>\n <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 />\n </clipPath>\n </defs>\n ) : null}\n <Layer className=\"recharts-bar-rectangles\" clipPath={needClip ? `url(#clipPath-${clipPathId})` : null}>\n {background ? this.renderBackground() : null}\n {this.renderRectangles()}\n </Layer>\n {this.renderErrorBar(needClip, clipPathId)}\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data)}\n </Layer>\n );\n }\n}\n","import mapValues from 'lodash/mapValues';\nimport every from 'lodash/every';\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { Coordinate, AxisType, Size } from './types';\nimport { compareValues, 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 const formatAxisMap = (props: any, axisMap: any, offset: any, axisType: AxisType, chartName: string) => {\n const { width, height, layout, children } = props;\n const ids = Object.keys(axisMap);\n const steps: Record<string, any> = {\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 const hasBar = !!findChildByType(children, Bar);\n\n return ids.reduce((result, id) => {\n const axis = axisMap[id];\n const { orientation, domain, padding = {}, mirror, reversed } = axis;\n const offsetKey = `${orientation}${mirror ? 'Mirror' : ''}`;\n\n let calculatedPadding, range, x, y, needSpace;\n\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n const diff = domain[1] - domain[0];\n let smallestDistanceBetweenValues = Infinity;\n const sortedValues = axis.categoricalDomain.sort(compareValues);\n sortedValues.forEach((value: number, index: number) => {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min(\n (value || 0) - (sortedValues[index - 1] || 0),\n smallestDistanceBetweenValues,\n );\n }\n });\n if (Number.isFinite(smallestDistanceBetweenValues)) {\n const smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n const rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n\n if (axis.padding === 'gap') {\n calculatedPadding = (smallestDistanceInPercent * rangeWidth) / 2;\n }\n\n if (axis.padding === 'no-gap') {\n const gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n const halfBand = (smallestDistanceInPercent * rangeWidth) / 2;\n calculatedPadding = halfBand - gap - ((halfBand - gap) / rangeWidth) * gap;\n }\n }\n }\n\n if (axisType === 'xAxis') {\n range = [\n offset.left + (padding.left || 0) + (calculatedPadding || 0),\n offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0),\n ];\n } else if (axisType === 'yAxis') {\n range =\n layout === 'horizontal'\n ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)]\n : [\n offset.top + (padding.top || 0) + (calculatedPadding || 0),\n offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0),\n ];\n } else {\n ({ range } = axis);\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n\n const { scale, realScaleType } = parseScale(axis, chartName, hasBar);\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n const ticks = getTicksOfScale(scale, { ...axis, 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\n const finalAxis = {\n ...axis,\n ...ticks,\n realScaleType,\n x,\n y,\n scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height,\n };\n\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks as any);\n\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\n return { ...result, [id]: finalAxis };\n }, {});\n};\n\nexport const rectWithPoints = ({ x: x1, y: y1 }: Coordinate, { x: x2, y: y2 }: Coordinate) => ({\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 * 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 const rectWithCoords = ({ x1, y1, x2, y2 }: { x1: number; y1: number; x2: number; y2: number }) =>\n rectWithPoints({ x: x1, y: y1 }, { x: x2, y: y2 });\n\nexport class ScaleHelper {\n static EPS = 1e-4;\n\n private scale: any;\n\n static create(obj: any) {\n return new ScaleHelper(obj);\n }\n\n constructor(scale: any) {\n this.scale = scale;\n }\n\n get domain() {\n return this.scale.domain;\n }\n\n get range() {\n return this.scale.range;\n }\n\n get rangeMin() {\n return this.range()[0];\n }\n\n get rangeMax() {\n return this.range()[1];\n }\n\n get bandwidth() {\n return this.scale.bandwidth;\n }\n\n apply(value: any, { bandAware, position }: { bandAware?: boolean; position?: any } = {}) {\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch (position) {\n case 'start': {\n return this.scale(value);\n }\n case 'middle': {\n const offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case 'end': {\n const offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + offset;\n }\n default: {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n const offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n return this.scale(value);\n }\n\n isInRange(value: number) {\n const range = this.range();\n\n const first = range[0];\n const last = range[range.length - 1];\n\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n}\n\ntype ScaleResult<T> = {\n [P in keyof T]: number;\n};\ntype Scales<T> = {\n [P in keyof T]: ScaleHelper;\n};\ntype ScalesApply<T> = (coord: { [P in keyof T]: any }, options: any) => ScaleResult<T>;\ntype ScalesIsInRange<T> = (coord: { [P in keyof T]: any }) => boolean;\ntype LabeledScales<T> = Scales<T> & { apply: ScalesApply<T> } & { isInRange: ScalesIsInRange<T> };\n\nexport const createLabeledScales = (options: Record<string, any>): LabeledScales<Record<string, any>> => {\n const scales: Scales<Record<string, any>> = Object.keys(options).reduce(\n (res, key: string) => ({\n ...res,\n [key]: ScaleHelper.create(options[key]),\n }),\n {},\n );\n\n return {\n ...scales,\n apply(coord: any, { bandAware, position }: any = {}) {\n return mapValues(coord, (value, label) => scales[label].apply(value, { bandAware, position }));\n },\n\n isInRange(coord: any) {\n return every(coord, (value, label) => scales[label].isInRange(value));\n },\n } as LabeledScales<Record<string, any>>;\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: number) {\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 const getAngledRectangleWidth = ({ width, height }: Size, angle: number | undefined = 0) => {\n // Ensure angle is >= 0 && < 180\n const normalizedAngle = normalizeAngle(angle);\n const 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 const angleThreshold = Math.atan(height / width);\n\n const angledWidth =\n angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold\n ? height / Math.sin(angleRadians)\n : width / Math.cos(angleRadians);\n\n return Math.abs(angledWidth);\n};\n","import memoize from 'lodash/memoize';\nimport { CartesianViewBox, ChartOffset } from './types';\n\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 const calculateViewBox: (offset: ChartOffset) => CartesianViewBox = memoize(\n (offset: ChartOffset): CartesianViewBox => {\n return {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height,\n };\n },\n offset => ['l', offset.left, 't', offset.top, 'w', offset.width, 'h', offset.height].join(''),\n);\n","import React, { ReactNode, createContext, useContext } from 'react';\nimport invariant from 'tiny-invariant';\nimport find from 'lodash/find';\nimport every from 'lodash/every';\nimport { CartesianViewBox, ChartOffset, XAxisMap, YAxisMap } from '../util/types';\nimport type { CategoricalChartState } from '../chart/types';\nimport type { Props as XAxisProps } from '../cartesian/XAxis';\nimport type { Props as YAxisProps } from '../cartesian/YAxis';\nimport { calculateViewBox } from '../util/calculateViewBox';\nimport { getAnyElementOfObject } from '../util/DataUtils';\n\nexport const XAxisContext = createContext<XAxisMap | undefined>(undefined);\nexport const YAxisContext = createContext<YAxisMap | undefined>(undefined);\nexport const ViewBoxContext = createContext<CartesianViewBox | undefined>(undefined);\nexport const OffsetContext = createContext<ChartOffset>({});\nexport const ClipPathIdContext = createContext<string | undefined>(undefined);\nexport const ChartHeightContext = createContext<number>(0);\nexport const ChartWidthContext = createContext<number>(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 const ChartLayoutContextProvider = (props: {\n state: CategoricalChartState;\n children: ReactNode;\n clipPathId: string;\n width: number;\n height: number;\n}) => {\n const {\n state: { xAxisMap, yAxisMap, offset },\n clipPathId,\n children,\n width,\n height,\n } = props;\n\n /**\n * Perhaps we should compute this property when reading? Let's see what is more often used\n */\n const 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 (\n <XAxisContext.Provider value={xAxisMap}>\n <YAxisContext.Provider value={yAxisMap}>\n <OffsetContext.Provider value={offset}>\n <ViewBoxContext.Provider value={viewBox}>\n <ClipPathIdContext.Provider value={clipPathId}>\n <ChartHeightContext.Provider value={height}>\n <ChartWidthContext.Provider value={width}>{children}</ChartWidthContext.Provider>\n </ChartHeightContext.Provider>\n </ClipPathIdContext.Provider>\n </ViewBoxContext.Provider>\n </OffsetContext.Provider>\n </YAxisContext.Provider>\n </XAxisContext.Provider>\n );\n};\n\nexport const useClipPathId = (): string | undefined => {\n return useContext(ClipPathIdContext);\n};\n\nfunction getKeysForDebug(object: Record<string, unknown>) {\n const keys = Object.keys(object);\n if (keys.length === 0) {\n return 'There are no available ids.';\n }\n return `Available ids are: ${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 const useXAxisOrThrow = (xAxisId: string | number): XAxisProps => {\n const xAxisMap = useContext(XAxisContext);\n\n invariant(\n xAxisMap != null,\n 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?',\n );\n\n const xAxis: XAxisProps | undefined = xAxisMap[xAxisId];\n\n invariant(xAxis != null, `Could not find xAxis by id \"${xAxisId}\" [${typeof xAxisId}]. ${getKeysForDebug(xAxisMap)}`);\n\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 const useArbitraryXAxis = (): XAxisProps | undefined => {\n const 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 const useArbitraryYAxis = (): XAxisProps | undefined => {\n const 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 const useYAxisWithFiniteDomainOrRandom = (): YAxisProps | undefined => {\n const yAxisMap = useContext(YAxisContext);\n const yAxisWithFiniteDomain = find(yAxisMap, axis => every(axis.domain, Number.isFinite));\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 const useYAxisOrThrow = (yAxisId: string | number): YAxisProps => {\n const yAxisMap = useContext(YAxisContext);\n\n invariant(\n yAxisMap != null,\n 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?',\n );\n\n const yAxis: YAxisProps | undefined = yAxisMap[yAxisId];\n\n invariant(yAxis != null, `Could not find yAxis by id \"${yAxisId}\" [${typeof yAxisId}]. ${getKeysForDebug(yAxisMap)}`);\n\n return yAxis;\n};\n\nexport const useViewBox = (): CartesianViewBox => {\n const viewBox = useContext(ViewBoxContext);\n return viewBox;\n};\n\nexport const useOffset = (): ChartOffset => {\n return useContext(OffsetContext);\n};\n\nexport const useChartWidth = (): number => {\n return useContext(ChartWidthContext);\n};\n\nexport const useChartHeight = (): number => {\n return useContext(ChartHeightContext);\n};\n","/**\n * @fileOverview Reference Line\n */\nimport React, { ReactElement, SVGProps } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelType, Label } from '../component/Label';\nimport { IfOverflow, ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { CartesianViewBox, D3Scale } from '../util/types';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { filterProps } from '../util/ReactUtils';\nimport { useClipPathId, useViewBox, useXAxisOrThrow, useYAxisOrThrow } from '../context/chartLayoutContext';\n\ninterface InternalReferenceLineProps {\n viewBox?: CartesianViewBox;\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n clipPathId?: number | string;\n}\n\nexport type Segment = {\n x?: number | string;\n y?: number | string;\n};\n\nexport type ReferenceLinePosition = 'middle' | 'start' | 'end';\n\ninterface ReferenceLineProps extends InternalReferenceLineProps {\n isFront?: boolean;\n /** @deprecated use ifOverflow=\"extendDomain\" */\n alwaysShow?: boolean;\n ifOverflow?: IfOverflow;\n\n x?: number | string;\n y?: number | string;\n\n segment?: ReadonlyArray<Segment>;\n\n position?: ReferenceLinePosition;\n\n className?: number | string;\n yAxisId?: number | string;\n xAxisId?: number | string;\n shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n label?: ImplicitLabelType;\n}\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 */\nexport type Props = Omit<SVGProps<SVGLineElement>, 'viewBox'> & ReferenceLineProps;\n\nconst renderLine = (option: ReferenceLineProps['shape'], props: any) => {\n let line;\n\n if (React.isValidElement(option)) {\n line = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n line = option(props);\n } else {\n line = <line {...props} className=\"recharts-reference-line-line\" />;\n }\n\n return line;\n};\n\ntype EndPointsPropsSubset = {\n alwaysShow?: boolean;\n ifOverflow?: IfOverflow;\n segment?: ReadonlyArray<Segment>;\n x?: number | string;\n y?: number | string;\n};\n// TODO: ScaleHelper\nexport const getEndPoints = (\n scales: any,\n isFixedX: boolean,\n isFixedY: boolean,\n isSegment: boolean,\n viewBox: CartesianViewBox,\n position: Props['position'],\n xAxisOrientation: XAxisProps['orientation'],\n yAxisOrientation: YAxisProps['orientation'],\n props: EndPointsPropsSubset,\n) => {\n const { x, y, width, height } = viewBox;\n\n if (isFixedY) {\n const { y: yCoord } = props;\n const coord = scales.y.apply(yCoord, { position });\n\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n\n const points = [\n { x: x + width, y: coord },\n { x, y: coord },\n ];\n return yAxisOrientation === 'left' ? points.reverse() : points;\n }\n if (isFixedX) {\n const { x: xCoord } = props;\n const coord = scales.x.apply(xCoord, { position });\n\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(coord)) {\n return null;\n }\n\n const points = [\n { x: coord, y: y + height },\n { x: coord, y },\n ];\n return xAxisOrientation === 'top' ? points.reverse() : points;\n }\n if (isSegment) {\n const { segment } = props;\n\n const points = segment.map(p => scales.apply(p, { position }));\n\n if (ifOverflowMatches(props, 'discard') && some(points, p => !scales.isInRange(p))) {\n return null;\n }\n\n return points;\n }\n\n return null;\n};\n\nfunction ReferenceLineImpl(props: Props) {\n const { x: fixedX, y: fixedY, segment, xAxisId, yAxisId, shape, className, alwaysShow } = props;\n\n const clipPathId = useClipPathId();\n const xAxis = useXAxisOrThrow(xAxisId);\n const yAxis = useYAxisOrThrow(yAxisId);\n const viewBox = useViewBox();\n if (!clipPathId || !viewBox) {\n return null;\n }\n\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n const scales = createLabeledScales({ x: xAxis.scale, y: yAxis.scale });\n\n const isX = isNumOrStr(fixedX);\n const isY = isNumOrStr(fixedY);\n const isSegment = segment && segment.length === 2;\n\n const endPoints = getEndPoints(\n scales,\n isX,\n isY,\n isSegment,\n viewBox,\n props.position,\n xAxis.orientation,\n yAxis.orientation,\n props,\n );\n if (!endPoints) {\n return null;\n }\n\n const [{ x: x1, y: y1 }, { x: x2, y: y2 }] = endPoints;\n\n const clipPath = ifOverflowMatches(props, 'hidden') ? `url(#${clipPathId})` : undefined;\n\n const lineProps = {\n clipPath,\n ...filterProps(props, true),\n x1,\n y1,\n x2,\n y2,\n };\n\n return (\n <Layer className={clsx('recharts-reference-line', className)}>\n {renderLine(shape, lineProps)}\n {Label.renderCallByParent(props, rectWithCoords({ x1, y1, x2, y2 }))}\n </Layer>\n );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ReferenceLine extends React.Component<Props> {\n static displayName = 'ReferenceLine';\n\n static 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 };\n\n render() {\n return <ReferenceLineImpl {...this.props} />;\n }\n}\n","/**\n * @fileOverview Reference Dot\n */\nimport React, { ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { ImplicitLabelType, Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { IfOverflow, ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { D3Scale } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\n\ninterface InternalReferenceDotProps {\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n clipPathId?: number | string;\n}\n\ninterface ReferenceDotProps extends InternalReferenceDotProps {\n r?: number;\n\n isFront?: boolean;\n /** @deprecated use ifOverflow=\"extendDomain\" */\n alwaysShow?: boolean;\n ifOverflow?: IfOverflow;\n x?: number | string;\n y?: number | string;\n\n className?: number | string;\n yAxisId?: number | string;\n xAxisId?: number | string;\n shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n label?: ImplicitLabelType;\n}\n\nexport type Props = DotProps & ReferenceDotProps;\n\nconst getCoordinate = (props: Props) => {\n const { x, y, xAxis, yAxis } = props;\n const scales = createLabeledScales({ x: xAxis.scale, y: yAxis.scale });\n\n const result = scales.apply({ x, y }, { bandAware: true });\n\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n\n return result;\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ReferenceDot extends React.Component<Props> {\n static displayName = 'ReferenceDot';\n\n static 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\n static renderDot = (option: Props['shape'], props: any) => {\n let dot;\n\n if (React.isValidElement(option)) {\n dot = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = <Dot {...props} cx={props.cx} cy={props.cy} className=\"recharts-reference-dot-dot\" />;\n }\n\n return dot;\n };\n\n render() {\n const { x, y, r, alwaysShow, clipPathId } = this.props;\n const isX = isNumOrStr(x);\n const isY = isNumOrStr(y);\n\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n if (!isX || !isY) {\n return null;\n }\n\n const coordinate = getCoordinate(this.props);\n\n if (!coordinate) {\n return null;\n }\n\n const { x: cx, y: cy } = coordinate;\n\n const { shape, className } = this.props;\n\n const clipPath = ifOverflowMatches(this.props, 'hidden') ? `url(#${clipPathId})` : undefined;\n\n const dotProps = {\n clipPath,\n ...filterProps(this.props, true),\n cx,\n cy,\n };\n\n return (\n <Layer className={clsx('recharts-reference-dot', className)}>\n {ReferenceDot.renderDot(shape, dotProps)}\n {Label.renderCallByParent(this.props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r,\n })}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Reference Line\n */\nimport React, { ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelType, Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { IfOverflow, ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle, Props as RectangleProps } from '../shape/Rectangle';\nimport { CartesianViewBox, D3Scale } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\n\ninterface InternalReferenceAreaProps {\n viewBox?: CartesianViewBox;\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n clipPathId?: number | string;\n}\n\ninterface ReferenceAreaProps extends InternalReferenceAreaProps {\n isFront?: boolean;\n /** @deprecated use ifOverflow=\"extendDomain\" */\n alwaysShow?: boolean;\n ifOverflow?: IfOverflow;\n x1?: number | string;\n x2?: number | string;\n y1?: number | string;\n y2?: number | string;\n\n className?: number | string;\n yAxisId?: number | string;\n xAxisId?: number | string;\n shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n label?: ImplicitLabelType;\n}\n\nexport type Props = RectangleProps & ReferenceAreaProps;\n\nconst getRect = (hasX1: boolean, hasX2: boolean, hasY1: boolean, hasY2: boolean, props: Props) => {\n const { x1: xValue1, x2: xValue2, y1: yValue1, y2: yValue2, xAxis, yAxis } = props;\n\n if (!xAxis || !yAxis) return null;\n\n const scales = createLabeledScales({ x: xAxis.scale, y: yAxis.scale });\n\n const p1 = {\n x: hasX1 ? scales.x.apply(xValue1, { position: 'start' }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, { position: 'start' }) : scales.y.rangeMin,\n };\n\n const p2 = {\n x: hasX2 ? scales.x.apply(xValue2, { position: 'end' }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, { position: 'end' }) : scales.y.rangeMax,\n };\n\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n\n return rectWithPoints(p1, p2);\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ReferenceArea extends React.Component<Props> {\n static displayName = 'ReferenceArea';\n\n static 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\n static renderRect = (option: ReferenceAreaProps['shape'], props: any) => {\n let rect;\n\n if (React.isValidElement(option)) {\n rect = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rect = option(props);\n } else {\n rect = <Rectangle {...props} className=\"recharts-reference-area-rect\" />;\n }\n\n return rect;\n };\n\n render() {\n const { x1, x2, y1, y2, className, alwaysShow, clipPathId } = this.props;\n\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n const hasX1 = isNumOrStr(x1);\n const hasX2 = isNumOrStr(x2);\n const hasY1 = isNumOrStr(y1);\n const hasY2 = isNumOrStr(y2);\n\n const { shape } = this.props;\n\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n\n const rect = getRect(hasX1, hasX2, hasY1, hasY2, this.props);\n\n if (!rect && !shape) {\n return null;\n }\n\n const clipPath = ifOverflowMatches(this.props, 'hidden') ? `url(#${clipPathId})` : undefined;\n\n return (\n <Layer className={clsx('recharts-reference-area', className)}>\n {ReferenceArea.renderRect(shape, { clipPath, ...filterProps(this.props, true), ...rect })}\n {Label.renderCallByParent(this.props, rect)}\n </Layer>\n );\n }\n}\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<Type>(\n array: Type[],\n n: number,\n isValid?: (candidate: Type) => boolean,\n): Type[] | undefined {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n const result: Type[] = [];\n for (let 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}\n","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nimport { Size, CartesianViewBox, CartesianTickItem } from './types';\n\nexport function getAngledTickWidth(contentSize: Size, unitSize: Size, angle: number) {\n const size = { width: contentSize.width + unitSize.width, height: contentSize.height + unitSize.height };\n\n return getAngledRectangleWidth(size, angle);\n}\n\nexport function getTickBoundaries(viewBox: CartesianViewBox, sign: number, sizeKey: string) {\n const isWidth = sizeKey === 'width';\n const { x, y, width, height } = viewBox;\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}\n\nexport function isVisible(\n sign: number,\n tickPosition: number,\n getSize: () => number,\n start: number,\n end: number,\n): boolean {\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\n const size = getSize();\n\n return sign * (tickPosition - (sign * size) / 2 - start) >= 0 && sign * (tickPosition + (sign * size) / 2 - end) <= 0;\n}\n\nexport function getNumberIntervalTicks(ticks: CartesianTickItem[], interval: number) {\n return getEveryNthWithCondition(ticks, interval + 1);\n}\n","import isFunction from 'lodash/isFunction';\nimport { CartesianTickItem, Size } from '../util/types';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Props as CartesianAxisProps } from './CartesianAxis';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\n\nexport type Sign = 0 | 1 | -1;\n\nfunction getTicksEnd(\n sign: Sign,\n boundaries: { start: number; end: number },\n getTickSize: (tick: CartesianTickItem, index: number) => number,\n ticks: CartesianTickItem[],\n minTickGap: number,\n): CartesianTickItem[] {\n const result = (ticks || []).slice();\n const len = result.length;\n\n const { start } = boundaries;\n let { end } = boundaries;\n\n for (let i = len - 1; i >= 0; i--) {\n let entry = result[i];\n let size: number | undefined;\n const getSize = () => {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n\n return size;\n };\n\n if (i === len - 1) {\n const gap = sign * (entry.coordinate + (sign * getSize()) / 2 - end);\n result[i] = entry = {\n ...entry,\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate,\n };\n } else {\n result[i] = entry = { ...entry, tickCoord: entry.coordinate };\n }\n\n const isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = { ...entry, isShow: true };\n }\n }\n\n return result;\n}\n\nfunction getTicksStart(\n sign: Sign,\n boundaries: { start: number; end: number },\n getTickSize: (tick: CartesianTickItem, index: number) => number,\n ticks: CartesianTickItem[],\n minTickGap: number,\n preserveEnd?: boolean,\n): CartesianTickItem[] {\n const result = (ticks || []).slice();\n const len = result.length;\n\n let { start, end } = boundaries;\n\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n let tail = ticks[len - 1];\n const tailSize = getTickSize(tail, len - 1);\n const tailGap = sign * (tail.coordinate + (sign * tailSize) / 2 - end);\n result[len - 1] = tail = {\n ...tail,\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate,\n };\n\n const isTailShow = isVisible(sign, tail.tickCoord, () => tailSize, start, end);\n\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = { ...tail, isShow: true };\n }\n }\n\n const count = preserveEnd ? len - 1 : len;\n for (let i = 0; i < count; i++) {\n let entry = result[i];\n let size: number | undefined;\n const getSize = () => {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n\n return size;\n };\n\n if (i === 0) {\n const gap = sign * (entry.coordinate - (sign * getSize()) / 2 - start);\n result[i] = entry = {\n ...entry,\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate,\n };\n } else {\n result[i] = entry = { ...entry, tickCoord: entry.coordinate };\n }\n\n const isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = { ...entry, isShow: true };\n }\n }\n\n return result;\n}\n\nexport function getTicks(props: CartesianAxisProps, fontSize?: string, letterSpacing?: string): any[] {\n const { tick, ticks, viewBox, minTickGap, orientation, interval, tickFormatter, unit, angle } = props;\n\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n\n if (isNumber(interval) || Global.isSsr) {\n return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n\n let candidates: CartesianTickItem[] = [];\n\n const sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n const unitSize: Size =\n unit && sizeKey === 'width' ? getStringSize(unit, { fontSize, letterSpacing }) : { width: 0, height: 0 };\n\n const getTickSize = (content: CartesianTickItem, index: number) => {\n const value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === 'width'\n ? getAngledTickWidth(getStringSize(value, { fontSize, letterSpacing }), unitSize, angle)\n : getStringSize(value, { fontSize, letterSpacing })[sizeKey];\n };\n\n const sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n const boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n\n if (interval === 'equidistantPreserveStart') {\n return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n }\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\n return candidates.filter(entry => entry.isShow);\n}\n","import { isVisible } from '../util/TickUtils';\nimport { CartesianTickItem } from '../util/types';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nimport { Sign } from './getTicks';\n\nexport function getEquidistantTicks(\n sign: Sign,\n boundaries: { start: number; end: number },\n getTickSize: (tick: CartesianTickItem, index: number) => number,\n ticks: CartesianTickItem[],\n minTickGap: number,\n): CartesianTickItem[] {\n const result = (ticks || []).slice();\n\n const { start: initialStart, end } = boundaries;\n let index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n let stepsize = 1;\n let start = initialStart;\n\n while (stepsize <= result.length) {\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 const entry = ticks?.[index];\n\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return getEveryNthWithCondition(ticks, stepsize);\n }\n\n // Check if the element collides with the next element\n const i = index;\n let size: number | undefined;\n const getSize = () => {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n\n return size;\n };\n\n const tickCoord = entry.coordinate;\n // We will always show the first tick.\n const isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\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\n return [];\n}\n","/**\n * @fileOverview Cartesian Axis\n */\nimport React, { ReactElement, ReactNode, Component, SVGProps } from 'react';\n\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 {\n CartesianViewBox,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n CartesianTickItem,\n AxisInterval,\n} from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\nexport type Orientation = 'top' | 'bottom' | 'left' | 'right';\n/** A unit to be appended to a value */\nexport type Unit = string | number;\n/** The formatter function of tick */\nexport type TickFormatter = (value: any, index: number) => string;\n\nexport interface CartesianAxisProps {\n className?: string;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n unit?: Unit;\n orientation?: Orientation;\n // The viewBox of svg\n viewBox?: CartesianViewBox;\n tick?: SVGProps<SVGTextElement> | ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | boolean;\n axisLine?: boolean | SVGProps<SVGLineElement>;\n tickLine?: boolean | SVGProps<SVGLineElement>;\n mirror?: boolean;\n tickMargin?: number;\n hide?: boolean;\n label?: any;\n\n minTickGap?: number;\n ticks?: CartesianTickItem[];\n tickSize?: number;\n tickFormatter?: TickFormatter;\n ticksGenerator?: (props?: CartesianAxisProps) => CartesianTickItem[];\n interval?: AxisInterval;\n /** Angle in which ticks will be rendered. */\n angle?: number;\n}\n\ninterface IState {\n fontSize: string;\n letterSpacing: string;\n}\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGElement>, 'viewBox'> & CartesianAxisProps;\n\nexport class CartesianAxis extends Component<Props, IState> {\n static displayName = 'CartesianAxis';\n\n static defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: { x: 0, y: 0, width: 0, height: 0 },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [] as CartesianAxisProps['ticks'],\n\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd',\n };\n\n private layerReference: any;\n\n constructor(props: Props) {\n super(props);\n this.state = { fontSize: '', letterSpacing: '' };\n }\n\n shouldComponentUpdate({ viewBox, ...restProps }: Props, nextState: IState) {\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n const { viewBox: viewBoxOld, ...restPropsOld } = this.props;\n return (\n !shallowEqual(viewBox, viewBoxOld) ||\n !shallowEqual(restProps, restPropsOld) ||\n !shallowEqual(nextState, this.state)\n );\n }\n\n componentDidMount() {\n const htmlLayer: SVGElement = this.layerReference;\n if (!htmlLayer) return;\n const tick: Element = 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 getTickLineCoord(data: CartesianTickItem) {\n const { x, y, width, height, orientation, tickSize, mirror, tickMargin } = this.props;\n let x1, x2, y1, y2, tx, ty;\n\n const sign = mirror ? -1 : 1;\n const finalTickSize = data.tickSize || tickSize;\n const tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n\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\n return { line: { x1, y1, x2, y2 }, tick: { x: tx, y: ty } };\n }\n\n getTickTextAnchor() {\n const { orientation, mirror } = this.props;\n let textAnchor;\n\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\n return textAnchor;\n }\n\n getTickVerticalAnchor() {\n const { orientation, mirror } = this.props;\n let verticalAnchor = 'end';\n\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\n return verticalAnchor;\n }\n\n renderAxisLine() {\n const { x, y, width, height, orientation, mirror, axisLine } = this.props;\n let props: SVGProps<SVGLineElement> = {\n ...filterProps(this.props, false),\n ...filterProps(axisLine, false),\n fill: 'none',\n };\n\n if (orientation === 'top' || orientation === 'bottom') {\n const needHeight = +((orientation === 'top' && !mirror) || (orientation === 'bottom' && mirror));\n props = {\n ...props,\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height,\n };\n } else {\n const needWidth = +((orientation === 'left' && !mirror) || (orientation === 'right' && mirror));\n props = {\n ...props,\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height,\n };\n }\n\n return <line {...props} className={clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))} />;\n }\n\n static renderTickItem(option: Props['tick'], props: any, value: ReactNode) {\n let tickItem;\n const combinedClassName = clsx(props.className, 'recharts-cartesian-axis-tick-value');\n\n if (React.isValidElement(option)) {\n tickItem = React.cloneElement(option, {\n ...props,\n className: combinedClassName,\n });\n } else if (isFunction(option)) {\n tickItem = option({\n ...props,\n className: combinedClassName,\n });\n } else {\n tickItem = (\n <Text {...props} className=\"recharts-cartesian-axis-tick-value\">\n {value}\n </Text>\n );\n }\n\n return tickItem;\n }\n\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 renderTicks(ticks: CartesianTickItem[], fontSize: string, letterSpacing: string) {\n const { tickLine, stroke, tick, tickFormatter, unit } = this.props;\n const finalTicks = getTicks({ ...this.props, ticks }, fontSize, letterSpacing);\n const textAnchor = this.getTickTextAnchor();\n const verticalAnchor = this.getTickVerticalAnchor();\n const axisProps = filterProps(this.props, false);\n const customTickProps = filterProps(tick, false);\n const tickLineProps = {\n ...axisProps,\n fill: 'none',\n ...filterProps(tickLine, false),\n };\n const items = finalTicks.map((entry, i) => {\n const { line: lineCoord, tick: tickCoord } = this.getTickLineCoord(entry);\n const tickProps = {\n textAnchor,\n verticalAnchor,\n ...axisProps,\n stroke: 'none',\n fill: stroke,\n ...customTickProps,\n ...tickCoord,\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter,\n };\n\n return (\n <Layer\n className=\"recharts-cartesian-axis-tick\"\n key={`tick-${entry.value}-${entry.coordinate}-${entry.tickCoord}`}\n {...adaptEventsOfChild(this.props, entry, i)}\n >\n {tickLine && (\n <line\n {...tickLineProps}\n {...lineCoord}\n className={clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))}\n />\n )}\n {tick &&\n CartesianAxis.renderTickItem(\n tick,\n tickProps,\n `${isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value}${unit || ''}`,\n )}\n </Layer>\n );\n });\n\n return <g className=\"recharts-cartesian-axis-ticks\">{items}</g>;\n }\n\n render() {\n const { axisLine, width, height, ticksGenerator, className, hide } = this.props;\n\n if (hide) {\n return null;\n }\n\n const { ticks, ...noTicksProps } = this.props;\n let finalTicks = ticks;\n\n if (isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n\n return (\n <Layer\n className={clsx('recharts-cartesian-axis', className)}\n ref={ref => {\n this.layerReference = ref;\n }}\n >\n {axisLine && this.renderAxisLine()}\n {this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing)}\n {Label.renderCallByParent(this.props)}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Cartesian Grid\n */\nimport React, { ReactElement, SVGProps } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport { warn } from '../util/LogUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { ChartOffset, D3Scale } from '../util/types';\n\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { filterProps } from '../util/ReactUtils';\nimport { getCoordinatesOfGrid, getTicksOfAxis } from '../util/ChartUtils';\nimport { getTicks } from './getTicks';\nimport { CartesianAxis } from './CartesianAxis';\nimport {\n useArbitraryXAxis,\n useChartHeight,\n useChartWidth,\n useOffset,\n useYAxisWithFiniteDomainOrRandom,\n} from '../context/chartLayoutContext';\n\ntype XAxisWithD3Scale = Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\ntype YAxisWithD3Scale = Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n\n/**\n * The <CartesianGrid horizontal\n */\nexport type GridLineTypeFunctionProps = Omit<LineItemProps, 'key'> & {\n // React does not pass the key through when calling cloneElement - so it might be undefined when cloning\n key: LineItemProps['key'] | undefined;\n // offset is not present in LineItemProps but it is read from context and then passed to the GridLineType function and element\n offset: ChartOffset;\n /**\n * The first available xAxis. This is rather arbitrary - if there's one XAxis then it's the first one,\n * if there are multiple then it's a random one.\n *\n * If there are no XAxis present then this will be null.\n */\n xAxis: null | XAxisWithD3Scale;\n /**\n * The first available yAxis. The axes with finite domain will be preferred.\n *\n * If there are no YAxis present then this will be null.\n */\n yAxis: null | YAxisWithD3Scale;\n};\n\ntype GridLineType =\n | SVGProps<SVGLineElement>\n | ReactElement<SVGElement>\n | ((props: GridLineTypeFunctionProps) => ReactElement<SVGElement>)\n | boolean;\n\nexport type HorizontalCoordinatesGenerator = (\n props: {\n yAxis: any;\n width: number;\n height: number;\n offset: ChartOffset;\n },\n syncWithTicks: boolean,\n) => number[];\n\nexport type VerticalCoordinatesGenerator = (\n props: {\n xAxis: any;\n width: number;\n height: number;\n offset: ChartOffset;\n },\n syncWithTicks: boolean,\n) => number[];\n\ninterface InternalCartesianGridProps {\n width?: number;\n height?: number;\n horizontalCoordinatesGenerator?: HorizontalCoordinatesGenerator;\n verticalCoordinatesGenerator?: VerticalCoordinatesGenerator;\n}\n\ninterface CartesianGridProps extends InternalCartesianGridProps {\n /**\n * The x-coordinate of grid.\n * If left undefined, it will be computed from the chart's offset and margins.\n */\n x?: number;\n /**\n * The y-coordinate of grid.\n * If left undefined, it will be computed from the chart's offset and margins.\n */\n y?: number;\n horizontal?: GridLineType;\n vertical?: GridLineType;\n /**\n * Array of coordinates in pixels where to draw horizontal grid lines.\n * Has priority over syncWithTicks and horizontalValues.\n */\n horizontalPoints?: number[];\n /**\n * Array of coordinates in pixels where to draw vertical grid lines.\n * Has priority over syncWithTicks and horizontalValues.\n */\n verticalPoints?: number[];\n /**\n * Defines background color of stripes.\n *\n * The values from this array will be passed in as the `fill` property in a `rect` SVG element.\n * For possible values see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill#rect\n *\n * In case there are more stripes than colors, the colors will start from beginning\n * So for example: verticalFill['yellow', 'black'] produces a pattern of yellow|black|yellow|black\n *\n * If this is undefined, or an empty array, then there is no background fill.\n */\n verticalFill?: string[];\n /**\n * Defines background color of stripes.\n *\n * The values from this array will be passed in as the `fill` property in a `rect` SVG element.\n * For possible values see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill#rect\n *\n * In case there are more stripes than colors, the colors will start from beginning\n * So for example: horizontalFill['yellow', 'black'] produces a pattern of yellow|black|yellow|black\n *\n * If this is undefined, or an empty array, then there is no background fill.\n */\n horizontalFill?: string[];\n /**\n * If true, only the lines that correspond to the axes ticks values will be drawn.\n * If false, extra lines could be added for each axis (at min and max coordinates), if there will not such ticks.\n * horizontalPoints, verticalPoints, horizontalValues, verticalValues have priority over syncWithTicks.\n */\n syncWithTicks?: boolean;\n /**\n * Array of values, where horizontal lines will be drawn. Numbers or strings, in dependence on axis type.\n * Has priority over syncWithTicks but not over horizontalValues.\n */\n horizontalValues?: number[] | string[];\n /**\n * Array of values, where vertical lines will be drawn. Numbers or strings, in dependence on axis type.\n * Has priority over syncWithTicks but not over verticalValues.\n */\n verticalValues?: number[] | string[];\n}\n\ntype AcceptedSvgProps = Omit<SVGProps<SVGRectElement>, 'offset'>;\n\nexport type Props = AcceptedSvgProps & CartesianGridProps;\n\nconst Background = (props: Pick<AcceptedSvgProps, 'fill' | 'fillOpacity' | 'x' | 'y' | 'width' | 'height' | 'ry'>) => {\n const { fill } = props;\n\n if (!fill || fill === 'none') {\n return null;\n }\n\n const { fillOpacity, x, y, width, height, ry } = props;\n\n return (\n <rect\n x={x}\n y={y}\n ry={ry}\n width={width}\n height={height}\n stroke=\"none\"\n fill={fill}\n fillOpacity={fillOpacity}\n className=\"recharts-cartesian-grid-bg\"\n />\n );\n};\n\ntype LineItemProps = Props & {\n offset: ChartOffset;\n xAxis: null | XAxisWithD3Scale;\n yAxis: null | YAxisWithD3Scale;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n key: string;\n index: number;\n};\n\nfunction renderLineItem(option: GridLineType, props: LineItemProps) {\n let lineItem;\n\n if (React.isValidElement(option)) {\n // @ts-expect-error typescript does not see the props type when cloning an element\n lineItem = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n lineItem = option(props);\n } else {\n const { x1, y1, x2, y2, key, ...others } = props;\n const { offset: __, ...restOfFilteredProps } = filterProps(others, false);\n lineItem = <line {...restOfFilteredProps} x1={x1} y1={y1} x2={x2} y2={y2} fill=\"none\" key={key} />;\n }\n\n return lineItem;\n}\n\ntype GridLinesProps = Props & {\n offset: GridLineTypeFunctionProps['offset'];\n xAxis: GridLineTypeFunctionProps['xAxis'];\n yAxis: GridLineTypeFunctionProps['yAxis'];\n};\n\nfunction HorizontalGridLines(props: GridLinesProps) {\n const { x, width, horizontal = true, horizontalPoints } = props;\n\n if (!horizontal || !horizontalPoints || !horizontalPoints.length) {\n return null;\n }\n\n const items = horizontalPoints.map((entry, i) => {\n const lineItemProps: LineItemProps = {\n ...props,\n x1: x,\n y1: entry,\n x2: x + width,\n y2: entry,\n key: `line-${i}`,\n index: i,\n };\n\n return renderLineItem(horizontal, lineItemProps);\n });\n\n return <g className=\"recharts-cartesian-grid-horizontal\">{items}</g>;\n}\n\nfunction VerticalGridLines(props: GridLinesProps) {\n const { y, height, vertical = true, verticalPoints } = props;\n\n if (!vertical || !verticalPoints || !verticalPoints.length) {\n return null;\n }\n\n const items = verticalPoints.map((entry, i) => {\n const lineItemProps: LineItemProps = {\n ...props,\n x1: entry,\n y1: y,\n x2: entry,\n y2: y + height,\n key: `line-${i}`,\n index: i,\n };\n\n return renderLineItem(vertical, lineItemProps);\n });\n\n return <g className=\"recharts-cartesian-grid-vertical\">{items}</g>;\n}\n\nfunction HorizontalStripes(props: Props) {\n const { horizontalFill, fillOpacity, x, y, width, height, horizontalPoints, horizontal = true } = props;\n if (!horizontal || !horizontalFill || !horizontalFill.length) {\n return null;\n }\n\n // Why =y -y? I was trying to find any difference that this makes, with floating point numbers and edge cases but ... nothing.\n const roundedSortedHorizontalPoints = horizontalPoints.map(e => Math.round(e + y - y)).sort((a, b) => a - b);\n // Why is this condition `!==` instead of `<=` ?\n if (y !== roundedSortedHorizontalPoints[0]) {\n roundedSortedHorizontalPoints.unshift(0);\n }\n\n const items = roundedSortedHorizontalPoints.map((entry, i) => {\n // Why do we strip only the last stripe if it is invisible, and not all invisible stripes?\n const lastStripe = !roundedSortedHorizontalPoints[i + 1];\n const lineHeight = lastStripe ? y + height - entry : roundedSortedHorizontalPoints[i + 1] - entry;\n if (lineHeight <= 0) {\n return null;\n }\n const colorIndex = i % horizontalFill.length;\n return (\n <rect\n key={`react-${i}`} // eslint-disable-line react/no-array-index-key\n y={entry}\n x={x}\n height={lineHeight}\n width={width}\n stroke=\"none\"\n fill={horizontalFill[colorIndex]}\n fillOpacity={fillOpacity}\n className=\"recharts-cartesian-grid-bg\"\n />\n );\n });\n\n return <g className=\"recharts-cartesian-gridstripes-horizontal\">{items}</g>;\n}\n\nfunction VerticalStripes(props: Props) {\n const { vertical = true, verticalFill, fillOpacity, x, y, width, height, verticalPoints } = props;\n if (!vertical || !verticalFill || !verticalFill.length) {\n return null;\n }\n\n const roundedSortedVerticalPoints = verticalPoints.map(e => Math.round(e + x - x)).sort((a, b) => a - b);\n\n if (x !== roundedSortedVerticalPoints[0]) {\n roundedSortedVerticalPoints.unshift(0);\n }\n\n const items = roundedSortedVerticalPoints.map((entry, i) => {\n const lastStripe = !roundedSortedVerticalPoints[i + 1];\n const lineWidth = lastStripe ? x + width - entry : roundedSortedVerticalPoints[i + 1] - entry;\n\n if (lineWidth <= 0) {\n return null;\n }\n const colorIndex = i % verticalFill.length;\n return (\n <rect\n key={`react-${i}`} // eslint-disable-line react/no-array-index-key\n x={entry}\n y={y}\n width={lineWidth}\n height={height}\n stroke=\"none\"\n fill={verticalFill[colorIndex]}\n fillOpacity={fillOpacity}\n className=\"recharts-cartesian-grid-bg\"\n />\n );\n });\n\n return <g className=\"recharts-cartesian-gridstripes-vertical\">{items}</g>;\n}\n\nconst defaultVerticalCoordinatesGenerator: VerticalCoordinatesGenerator = (\n { xAxis, width, height, offset },\n syncWithTicks,\n) =>\n getCoordinatesOfGrid(\n getTicks({\n ...CartesianAxis.defaultProps,\n ...xAxis,\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: { x: 0, y: 0, width, height },\n }),\n offset.left,\n offset.left + offset.width,\n syncWithTicks,\n );\n\nconst defaultHorizontalCoordinatesGenerator: HorizontalCoordinatesGenerator = (\n { yAxis, width, height, offset },\n syncWithTicks,\n) =>\n getCoordinatesOfGrid(\n getTicks({\n ...CartesianAxis.defaultProps,\n ...yAxis,\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: { x: 0, y: 0, width, height },\n }),\n offset.top,\n offset.top + offset.height,\n syncWithTicks,\n );\n\nconst defaultProps: Partial<Props> = {\n horizontal: true,\n vertical: true,\n // The ordinates of horizontal grid lines\n horizontalPoints: [],\n // The abscissas of vertical grid lines\n verticalPoints: [],\n\n stroke: '#ccc',\n fill: 'none',\n // The fill of colors of grid lines\n verticalFill: [],\n horizontalFill: [],\n};\n\nexport function CartesianGrid(props: Props) {\n const chartWidth = useChartWidth();\n const chartHeight = useChartHeight();\n const offset = useOffset();\n const propsIncludingDefaults: Props = {\n ...props,\n stroke: props.stroke ?? defaultProps.stroke,\n fill: props.fill ?? defaultProps.fill,\n horizontal: props.horizontal ?? defaultProps.horizontal,\n horizontalFill: props.horizontalFill ?? defaultProps.horizontalFill,\n vertical: props.vertical ?? defaultProps.vertical,\n verticalFill: props.verticalFill ?? defaultProps.verticalFill,\n x: isNumber(props.x) ? props.x : offset.left,\n y: isNumber(props.y) ? props.y : offset.top,\n width: isNumber(props.width) ? props.width : offset.width,\n height: isNumber(props.height) ? props.height : offset.height,\n };\n\n const { x, y, width, height, syncWithTicks, horizontalValues, verticalValues } = propsIncludingDefaults;\n\n // @ts-expect-error the scale prop is mixed up - we need to untagle this at some point\n const xAxis: XAxisWithD3Scale = useArbitraryXAxis();\n // @ts-expect-error the scale prop is mixed up - we need to untagle this at some point\n const yAxis: YAxisWithD3Scale = useYAxisWithFiniteDomainOrRandom();\n\n if (\n !isNumber(width) ||\n width <= 0 ||\n !isNumber(height) ||\n height <= 0 ||\n !isNumber(x) ||\n x !== +x ||\n !isNumber(y) ||\n y !== +y\n ) {\n return null;\n }\n\n /*\n * verticalCoordinatesGenerator and horizontalCoordinatesGenerator are defined\n * outside of the propsIncludingDefaults because they were never part of the original props\n * and they were never passed as a prop down to horizontal/vertical custom elements.\n * If we add these two to propsIncludingDefaults then we are changing public API.\n * Not a bad thing per se but also not necessary.\n */\n const verticalCoordinatesGenerator =\n propsIncludingDefaults.verticalCoordinatesGenerator || defaultVerticalCoordinatesGenerator;\n const horizontalCoordinatesGenerator =\n propsIncludingDefaults.horizontalCoordinatesGenerator || defaultHorizontalCoordinatesGenerator;\n\n let { horizontalPoints, verticalPoints } = propsIncludingDefaults;\n\n // No horizontal points are specified\n if ((!horizontalPoints || !horizontalPoints.length) && isFunction(horizontalCoordinatesGenerator)) {\n const isHorizontalValues = horizontalValues && horizontalValues.length;\n\n const generatorResult = horizontalCoordinatesGenerator(\n {\n yAxis: yAxis\n ? {\n ...yAxis,\n ticks: isHorizontalValues ? horizontalValues : yAxis.ticks,\n }\n : undefined,\n width: chartWidth,\n height: chartHeight,\n offset,\n },\n isHorizontalValues ? true : syncWithTicks,\n );\n warn(\n Array.isArray(generatorResult),\n `horizontalCoordinatesGenerator should return Array but instead it returned [${typeof generatorResult}]`,\n );\n if (Array.isArray(generatorResult)) {\n horizontalPoints = generatorResult;\n }\n }\n\n // No vertical points are specified\n if ((!verticalPoints || !verticalPoints.length) && isFunction(verticalCoordinatesGenerator)) {\n const isVerticalValues = verticalValues && verticalValues.length;\n const generatorResult = verticalCoordinatesGenerator(\n {\n xAxis: xAxis\n ? {\n ...xAxis,\n ticks: isVerticalValues ? verticalValues : xAxis.ticks,\n }\n : undefined,\n width: chartWidth,\n height: chartHeight,\n offset,\n },\n isVerticalValues ? true : syncWithTicks,\n );\n warn(\n Array.isArray(generatorResult),\n `verticalCoordinatesGenerator should return Array but instead it returned [${typeof generatorResult}]`,\n );\n if (Array.isArray(generatorResult)) {\n verticalPoints = generatorResult;\n }\n }\n\n return (\n <g className=\"recharts-cartesian-grid\">\n <Background\n fill={propsIncludingDefaults.fill}\n fillOpacity={propsIncludingDefaults.fillOpacity}\n x={propsIncludingDefaults.x}\n y={propsIncludingDefaults.y}\n width={propsIncludingDefaults.width}\n height={propsIncludingDefaults.height}\n ry={propsIncludingDefaults.ry}\n />\n <HorizontalGridLines\n {...propsIncludingDefaults}\n offset={offset}\n horizontalPoints={horizontalPoints}\n xAxis={xAxis}\n yAxis={yAxis}\n />\n\n <VerticalGridLines\n {...propsIncludingDefaults}\n offset={offset}\n verticalPoints={verticalPoints}\n xAxis={xAxis}\n yAxis={yAxis}\n />\n\n <HorizontalStripes {...propsIncludingDefaults} horizontalPoints={horizontalPoints} />\n\n <VerticalStripes {...propsIncludingDefaults} verticalPoints={verticalPoints} />\n </g>\n );\n}\n\nCartesianGrid.displayName = 'CartesianGrid';\n","/**\n * @fileOverview Line\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\n\nimport clsx from 'clsx';\nimport { Curve, CurveType, Props as CurveProps, Point as CurvePoint } from '../shape/Curve';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelType } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar, ErrorBarDataPointFormatter, Props as ErrorBarProps } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, filterProps, hasClipDot } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport {\n D3Scale,\n LegendType,\n TooltipType,\n AnimationTiming,\n ChartOffset,\n DataKey,\n TickItem,\n AnimationDuration,\n ActiveShape,\n} from '../util/types';\n\nexport type LineDot = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | DotProps | boolean;\n\nexport interface LinePointItem extends CurvePoint {\n value?: number;\n payload?: any;\n}\n\ninterface InternalLineProps {\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n points?: LinePointItem[];\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n}\n\ninterface LineProps extends InternalLineProps {\n className?: string;\n data?: any;\n type?: CurveType;\n unit?: string | number;\n name?: string | number;\n yAxisId?: string | number;\n xAxisId?: string | number;\n dataKey?: DataKey<any>;\n legendType?: LegendType;\n tooltipType?: TooltipType;\n layout?: 'horizontal' | 'vertical';\n connectNulls?: boolean;\n hide?: boolean;\n\n // whether have dot in line\n activeDot?: ActiveShape<DotProps> | DotProps;\n dot?: LineDot;\n\n onAnimationStart?: () => void;\n onAnimationEnd?: () => void;\n\n isAnimationActive?: boolean;\n animateNewValues?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n animationId?: number;\n id?: string;\n label?: ImplicitLabelType;\n}\n\nexport type Props = Omit<CurveProps, 'points' | 'pathRef'> & LineProps;\n\ninterface State {\n isAnimationFinished?: boolean;\n totalLength?: number;\n prevPoints?: LinePointItem[];\n curPoints?: LinePointItem[];\n prevAnimationId?: number;\n}\n\nexport class Line extends PureComponent<Props, State> {\n static displayName = 'Line';\n\n static defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [] as LinePointItem[],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n label: false,\n };\n\n /**\n * Compose the data of each group\n * @param {Object} props The props from the component\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n static getComposedData = ({\n props,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n dataKey,\n bandSize,\n displayedData,\n offset,\n }: {\n props: Props;\n xAxis: Props['xAxis'];\n yAxis: Props['yAxis'];\n xAxisTicks: TickItem[];\n yAxisTicks: TickItem[];\n dataKey: Props['dataKey'];\n bandSize: number;\n displayedData: any[];\n offset: ChartOffset;\n }) => {\n const { layout } = props;\n\n const points = displayedData.map((entry, index) => {\n const value = getValueByDataKey(entry, dataKey);\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({ axis: xAxis, ticks: xAxisTicks, bandSize, entry, index }),\n y: isNil(value) ? null : yAxis.scale(value),\n value,\n payload: entry,\n };\n }\n\n return {\n x: isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({ axis: yAxis, ticks: yAxisTicks, bandSize, entry, index }),\n value,\n payload: entry,\n };\n });\n\n return { points, layout, ...offset };\n };\n\n mainCurve?: SVGPathElement;\n\n state: State = {\n isAnimationFinished: true,\n totalLength: 0,\n };\n\n componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n\n const totalLength = this.getTotalLength();\n this.setState({ totalLength });\n }\n\n componentDidUpdate(): void {\n if (!this.props.isAnimationActive) {\n return;\n }\n\n const totalLength = this.getTotalLength();\n if (totalLength !== this.state.totalLength) {\n this.setState({ totalLength });\n }\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints,\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points,\n };\n }\n\n return null;\n }\n\n getTotalLength() {\n const curveDom = this.mainCurve;\n\n try {\n return (curveDom && curveDom.getTotalLength && curveDom.getTotalLength()) || 0;\n } catch (err) {\n return 0;\n }\n }\n\n generateSimpleStrokeDasharray = (totalLength: number, length: number): string => {\n return `${length}px ${totalLength - length}px`;\n };\n\n getStrokeDasharray = (length: number, totalLength: number, lines: number[]) => {\n const lineLength = lines.reduce((pre, next) => pre + next);\n\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return this.generateSimpleStrokeDasharray(totalLength, length);\n }\n\n const count = Math.floor(length / lineLength);\n const remainLength = length % lineLength;\n const restLength = totalLength - length;\n\n let remainLines: number[] = [];\n for (let i = 0, sum = 0; i < lines.length; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [...lines.slice(0, i), remainLength - sum];\n break;\n }\n }\n\n const emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n\n return [...Line.repeat(lines, count), ...remainLines, ...emptyLines].map(line => `${line}px`).join(', ');\n };\n\n id = uniqueId('recharts-line-');\n\n pathRef = (node: SVGPathElement): void => {\n this.mainCurve = node;\n };\n\n static repeat(lines: number[], count: number) {\n const linesUnit = lines.length % 2 !== 0 ? [...lines, 0] : lines;\n let result: number[] = [];\n\n for (let i = 0; i < count; ++i) {\n result = [...result, ...linesUnit];\n }\n\n return result;\n }\n\n handleAnimationEnd = () => {\n this.setState({ isAnimationFinished: true });\n\n if (this.props.onAnimationEnd) {\n this.props.onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n this.setState({ isAnimationFinished: false });\n\n if (this.props.onAnimationStart) {\n this.props.onAnimationStart();\n }\n };\n\n renderErrorBar(needClip: boolean, clipPathId: string) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n const { points, xAxis, yAxis, layout, children } = this.props;\n const errorBarItems = findAllByType(children, ErrorBar);\n\n if (!errorBarItems) {\n return null;\n }\n\n const dataPointFormatter: ErrorBarDataPointFormatter = (dataPoint: LinePointItem, dataKey) => {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey),\n };\n };\n\n const errorBarProps = {\n clipPath: needClip ? `url(#clipPath-${clipPathId})` : null,\n };\n\n return (\n <Layer {...errorBarProps}>\n {errorBarItems.map((item: ReactElement<ErrorBarProps>) =>\n React.cloneElement(item, {\n key: `bar-${item.props.dataKey}`,\n data: points,\n xAxis,\n yAxis,\n layout,\n dataPointFormatter,\n }),\n )}\n </Layer>\n );\n }\n\n static renderDotItem(option: LineDot, props: any) {\n let dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n const { key, ...dotProps } = props;\n const className = clsx('recharts-line-dot', typeof option !== 'boolean' ? option.className : '');\n dotItem = <Dot key={key} {...dotProps} className={className} />;\n }\n\n return dotItem;\n }\n\n renderDots(needClip: boolean, clipDot: boolean, clipPathId: string) {\n const { isAnimationActive } = this.props;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n const { dot, points, dataKey } = this.props;\n const lineProps = filterProps(this.props, false);\n const customDotProps = filterProps(dot, true);\n const dots = points.map((entry, i) => {\n const dotProps = {\n key: `dot-${i}`,\n r: 3,\n ...lineProps,\n ...customDotProps,\n index: i,\n cx: entry.x,\n cy: entry.y,\n value: entry.value,\n dataKey,\n payload: entry.payload,\n points,\n };\n\n return Line.renderDotItem(dot, dotProps);\n });\n const dotsProps = {\n clipPath: needClip ? `url(#clipPath-${clipDot ? '' : 'dots-'}${clipPathId})` : null,\n };\n\n return (\n <Layer className=\"recharts-line-dots\" key=\"dots\" {...dotsProps}>\n {dots}\n </Layer>\n );\n }\n\n renderCurveStatically(\n points: LinePointItem[],\n needClip: boolean,\n clipPathId: string,\n props?: { strokeDasharray: string },\n ) {\n const { type, layout, connectNulls, ref, ...others } = this.props;\n const curveProps = {\n ...filterProps(others, true),\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? `url(#clipPath-${clipPathId})` : null,\n points,\n ...props,\n type,\n layout,\n connectNulls,\n };\n\n return <Curve {...curveProps} pathRef={this.pathRef} />;\n }\n\n renderCurveWithAnimation(needClip: boolean, clipPathId: string) {\n const {\n points,\n strokeDasharray,\n isAnimationActive,\n animationBegin,\n animationDuration,\n animationEasing,\n animationId,\n animateNewValues,\n width,\n height,\n } = this.props;\n const { prevPoints, totalLength } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`line-${animationId}`}\n onAnimationEnd={this.handleAnimationEnd}\n onAnimationStart={this.handleAnimationStart}\n >\n {({ t }: { t: number }) => {\n if (prevPoints) {\n const prevPointsDiffFactor = prevPoints.length / points.length;\n const stepData = points.map((entry, index) => {\n const prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n const prev = prevPoints[prevPointIndex];\n const interpolatorX = interpolateNumber(prev.x, entry.x);\n const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n const interpolatorX = interpolateNumber(width * 2, entry.x);\n const interpolatorY = interpolateNumber(height / 2, entry.y);\n return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n }\n return { ...entry, x: entry.x, y: entry.y };\n });\n return this.renderCurveStatically(stepData, needClip, clipPathId);\n }\n const interpolator = interpolateNumber(0, totalLength);\n const curLength = interpolator(t);\n let currentStrokeDasharray;\n\n if (strokeDasharray) {\n const lines = `${strokeDasharray}`.split(/[,\\s]+/gim).map(num => parseFloat(num));\n currentStrokeDasharray = this.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = this.generateSimpleStrokeDasharray(totalLength, curLength);\n }\n\n return this.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray,\n });\n }}\n </Animate>\n );\n }\n\n renderCurve(needClip: boolean, clipPathId: string) {\n const { points, isAnimationActive } = this.props;\n const { prevPoints, totalLength } = this.state;\n\n if (\n isAnimationActive &&\n points &&\n points.length &&\n ((!prevPoints && totalLength > 0) || !isEqual(prevPoints, points))\n ) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n\n render() {\n const { hide, dot, points, className, xAxis, yAxis, top, left, width, height, isAnimationActive, id } = this.props;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n const { isAnimationFinished } = this.state;\n const hasSinglePoint = points.length === 1;\n const layerClass = clsx('recharts-line', className);\n const needClipX = xAxis && xAxis.allowDataOverflow;\n const needClipY = yAxis && yAxis.allowDataOverflow;\n const needClip = needClipX || needClipY;\n const clipPathId = isNil(id) ? this.id : id;\n const { r = 3, strokeWidth = 2 } = filterProps(dot, false) ?? { r: 3, strokeWidth: 2 };\n const { clipDot = true } = hasClipDot(dot) ? dot : {};\n const dotSize = r * 2 + strokeWidth;\n\n return (\n <Layer className={layerClass}>\n {needClipX || needClipY ? (\n <defs>\n <clipPath id={`clipPath-${clipPathId}`}>\n <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 />\n </clipPath>\n {!clipDot && (\n <clipPath id={`clipPath-dots-${clipPathId}`}>\n <rect x={left - dotSize / 2} y={top - dotSize / 2} width={width + dotSize} height={height + dotSize} />\n </clipPath>\n )}\n </defs>\n ) : null}\n {!hasSinglePoint && this.renderCurve(needClip, clipPathId)}\n {this.renderErrorBar(needClip, clipPathId)}\n {(hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId)}\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Area\n */\nimport React, { PureComponent, ReactElement, SVGProps } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport max from 'lodash/max';\nimport isNil from 'lodash/isNil';\nimport isNan from 'lodash/isNaN';\nimport isEqual from 'lodash/isEqual';\nimport { Curve, CurveType, Point as CurvePoint } from '../shape/Curve';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { Global } from '../util/Global';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport {\n D3Scale,\n LegendType,\n TooltipType,\n AnimationTiming,\n ChartOffset,\n Coordinate,\n DataKey,\n TickItem,\n AnimationDuration,\n} from '../util/types';\nimport { filterProps, hasClipDot } from '../util/ReactUtils';\n\nexport type AreaDot = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | DotProps | boolean;\ninterface AreaPointItem extends CurvePoint {\n value?: number | number[];\n payload?: any;\n}\n\ninterface InternalAreaProps {\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n points?: AreaPointItem[];\n baseLine?: number | Coordinate[];\n}\n\ninterface AreaProps extends InternalAreaProps {\n className?: string;\n dataKey: DataKey<any>;\n data?: any[];\n type?: CurveType;\n unit?: string | number;\n name?: string | number;\n xAxisId?: string | number;\n yAxisId?: string | number;\n\n stackId?: string | number;\n legendType?: LegendType;\n tooltipType?: TooltipType;\n connectNulls?: boolean;\n // whether have dot in line\n activeDot?: AreaDot;\n dot?: AreaDot;\n\n label?: any;\n layout?: 'horizontal' | 'vertical';\n hide?: boolean;\n baseValue?: number | 'dataMin' | 'dataMax';\n isRange?: boolean;\n\n onAnimationStart?: () => void;\n onAnimationEnd?: () => void;\n\n isAnimationActive?: boolean;\n animateNewValues?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n animationId?: number;\n id?: string;\n}\n\nexport type Props = Omit<SVGProps<SVGElement>, 'type' | 'points'> & AreaProps;\n\ninterface State {\n prevAnimationId?: number;\n prevPoints?: AreaPointItem[];\n prevBaseLine?: number | Coordinate[];\n curPoints?: AreaPointItem[];\n curBaseLine?: number | Coordinate[];\n isAnimationFinished?: boolean;\n totalLength?: number;\n}\n\nexport class Area extends PureComponent<Props, State> {\n static displayName = 'Area';\n\n static defaultProps = {\n stroke: '#3182bd',\n fill: '#3182bd',\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'line',\n connectNulls: false,\n // points of area\n points: [] as AreaPointItem[],\n dot: false,\n activeDot: true,\n hide: false,\n\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n };\n\n static getBaseValue = (props: Props, item: Area, xAxis: Props['xAxis'], yAxis: Props['yAxis']): number => {\n const { layout, baseValue: chartBaseValue } = props;\n const { baseValue: itemBaseValue } = item.props;\n\n // The baseValue can be defined both on the AreaChart as well as on the Area.\n // The value for the item takes precedence.\n const baseValue = itemBaseValue ?? chartBaseValue;\n\n if (isNumber(baseValue) && typeof baseValue === 'number') {\n return baseValue;\n }\n\n const numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n const domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n const domainMax = Math.max(domain[0], domain[1]);\n const domainMin = Math.min(domain[0], domain[1]);\n\n if (baseValue === 'dataMin') {\n return domainMin;\n }\n if (baseValue === 'dataMax') {\n return domainMax;\n }\n\n return domainMax < 0 ? domainMax : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n\n if (baseValue === 'dataMin') {\n return domain[0];\n }\n if (baseValue === 'dataMax') {\n return domain[1];\n }\n\n return domain[0];\n };\n\n static getComposedData = ({\n props,\n item,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n bandSize,\n dataKey,\n stackedData,\n dataStartIndex,\n displayedData,\n offset,\n }: {\n props: Props;\n item: Area;\n bandSize: number;\n xAxis: InternalAreaProps['xAxis'];\n yAxis: InternalAreaProps['yAxis'];\n xAxisTicks: TickItem[];\n yAxisTicks: TickItem[];\n stackedData: number[][];\n dataStartIndex: number;\n offset: ChartOffset;\n displayedData: any[];\n dataKey: Props['dataKey'];\n }) => {\n const { layout } = props;\n const hasStack = stackedData && stackedData.length;\n const baseValue = Area.getBaseValue(props, item, xAxis, yAxis);\n const isHorizontalLayout = layout === 'horizontal';\n let isRange = false;\n\n const points = displayedData.map((entry, index) => {\n let value;\n\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n } else {\n isRange = true;\n }\n }\n\n const isBreakPoint = value[1] == null || (hasStack && getValueByDataKey(entry, dataKey) == null);\n\n if (isHorizontalLayout) {\n return {\n x: getCateCoordinateOfLine({ axis: xAxis, ticks: xAxisTicks, bandSize, entry, index }),\n y: isBreakPoint ? null : yAxis.scale(value[1]),\n value,\n payload: entry,\n };\n }\n\n return {\n x: isBreakPoint ? null : xAxis.scale(value[1]),\n y: getCateCoordinateOfLine({ axis: yAxis, ticks: yAxisTicks, bandSize, entry, index }),\n value,\n payload: entry,\n };\n });\n\n let baseLine;\n if (hasStack || isRange) {\n baseLine = points.map((entry: AreaPointItem) => {\n const x = Array.isArray(entry.value) ? entry.value[0] : null;\n if (isHorizontalLayout) {\n return {\n x: entry.x,\n y: x != null && entry.y != null ? yAxis.scale(x) : null,\n };\n }\n return {\n x: x != null ? xAxis.scale(x) : null,\n y: entry.y,\n };\n });\n } else {\n baseLine = isHorizontalLayout ? yAxis.scale(baseValue) : xAxis.scale(baseValue);\n }\n\n return { points, baseLine, layout, isRange, ...offset };\n };\n\n static renderDotItem = (option: AreaDot, props: any) => {\n let dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n const className = clsx('recharts-area-dot', typeof option !== 'boolean' ? option.className : '');\n const { key, ...rest } = props;\n dotItem = <Dot {...rest} key={key} className={className} />;\n }\n\n return dotItem;\n };\n\n state: State = {\n isAnimationFinished: true,\n };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine,\n prevPoints: prevState.curPoints,\n prevBaseLine: prevState.curBaseLine,\n };\n }\n if (nextProps.points !== prevState.curPoints || nextProps.baseLine !== prevState.curBaseLine) {\n return {\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine,\n };\n }\n\n return null;\n }\n\n id = uniqueId('recharts-area-');\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n\n this.setState({ isAnimationFinished: true });\n\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n this.setState({ isAnimationFinished: false });\n\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n renderDots(needClip: boolean, clipDot: boolean, clipPathId: string) {\n const { isAnimationActive } = this.props;\n const { isAnimationFinished } = this.state;\n\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n\n const { dot, points, dataKey } = this.props;\n const areaProps = filterProps(this.props, false);\n const customDotProps = filterProps(dot, true);\n\n const dots = points.map((entry: AreaPointItem, i: number) => {\n const dotProps = {\n key: `dot-${i}`,\n r: 3,\n ...areaProps,\n ...customDotProps,\n index: i,\n cx: entry.x,\n cy: entry.y,\n dataKey,\n value: entry.value,\n payload: entry.payload,\n points,\n };\n\n return Area.renderDotItem(dot, dotProps);\n });\n const dotsProps = {\n clipPath: needClip ? `url(#clipPath-${clipDot ? '' : 'dots-'}${clipPathId})` : null,\n };\n return (\n <Layer className=\"recharts-area-dots\" {...dotsProps}>\n {dots}\n </Layer>\n );\n }\n\n renderHorizontalRect(alpha: number) {\n const { baseLine, points, strokeWidth } = this.props;\n const startX = points[0].x;\n const endX = points[points.length - 1].x;\n const width = alpha * Math.abs(startX - endX);\n let maxY = max(points.map(entry => entry.y || 0));\n\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxY = Math.max(max(baseLine.map(entry => entry.y || 0)), maxY);\n }\n\n if (isNumber(maxY)) {\n return (\n <rect\n x={startX < endX ? startX : startX - width}\n y={0}\n width={width}\n height={Math.floor(maxY + (strokeWidth ? parseInt(`${strokeWidth}`, 10) : 1))}\n />\n );\n }\n\n return null;\n }\n\n renderVerticalRect(alpha: number) {\n const { baseLine, points, strokeWidth } = this.props;\n const startY = points[0].y;\n const endY = points[points.length - 1].y;\n const height = alpha * Math.abs(startY - endY);\n let maxX = max(points.map(entry => entry.x || 0));\n\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxX = Math.max(max(baseLine.map(entry => entry.x || 0)), maxX);\n }\n\n if (isNumber(maxX)) {\n return (\n <rect\n x={0}\n y={startY < endY ? startY : startY - height}\n width={maxX + (strokeWidth ? parseInt(`${strokeWidth}`, 10) : 1)}\n height={Math.floor(height)}\n />\n );\n }\n\n return null;\n }\n\n renderClipRect(alpha: number) {\n const { layout } = this.props;\n\n if (layout === 'vertical') {\n return this.renderVerticalRect(alpha);\n }\n\n return this.renderHorizontalRect(alpha);\n }\n\n renderAreaStatically(points: AreaPointItem[], baseLine: Props['baseLine'], needClip: boolean, clipPathId: string) {\n const { layout, type, stroke, connectNulls, isRange, ref, ...others } = this.props;\n\n return (\n <Layer clipPath={needClip ? `url(#clipPath-${clipPathId})` : null}>\n <Curve\n {...filterProps(others, true)}\n points={points}\n connectNulls={connectNulls}\n type={type}\n baseLine={baseLine}\n layout={layout}\n stroke=\"none\"\n className=\"recharts-area-area\"\n />\n {stroke !== 'none' && (\n <Curve\n {...filterProps(this.props, false)}\n className=\"recharts-area-curve\"\n layout={layout}\n type={type}\n connectNulls={connectNulls}\n fill=\"none\"\n points={points}\n />\n )}\n {stroke !== 'none' && isRange && (\n <Curve\n {...filterProps(this.props, false)}\n className=\"recharts-area-curve\"\n layout={layout}\n type={type}\n connectNulls={connectNulls}\n fill=\"none\"\n points={baseLine as CurvePoint[]}\n />\n )}\n </Layer>\n );\n }\n\n renderAreaWithAnimation(needClip: boolean, clipPathId: string) {\n const { points, baseLine, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } =\n this.props;\n const { prevPoints, prevBaseLine } = this.state;\n // const clipPathId = isNil(id) ? this.id : id;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`area-${animationId}`}\n onAnimationEnd={this.handleAnimationEnd}\n onAnimationStart={this.handleAnimationStart}\n >\n {({ t }: { t: number }) => {\n if (prevPoints) {\n const prevPointsDiffFactor = prevPoints.length / points.length;\n // update animtaion\n const stepPoints = points.map((entry, index) => {\n const prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n const prev = prevPoints[prevPointIndex];\n const interpolatorX = interpolateNumber(prev.x, entry.x);\n const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n }\n\n return entry;\n });\n let stepBaseLine;\n\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n const interpolator = interpolateNumber(prevBaseLine as number, baseLine);\n stepBaseLine = interpolator(t);\n } else if (isNil(baseLine) || isNan(baseLine)) {\n const interpolator = interpolateNumber(prevBaseLine as number, 0);\n stepBaseLine = interpolator(t);\n } else {\n stepBaseLine = (baseLine as Coordinate[]).map((entry, index) => {\n const prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if ((prevBaseLine as Coordinate[])[prevPointIndex]) {\n const prev = (prevBaseLine as Coordinate[])[prevPointIndex];\n const interpolatorX = interpolateNumber(prev.x, entry.x);\n const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n }\n\n return entry;\n });\n }\n\n return this.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n\n return (\n <Layer>\n <defs>\n <clipPath id={`animationClipPath-${clipPathId}`}>{this.renderClipRect(t)}</clipPath>\n </defs>\n <Layer clipPath={`url(#animationClipPath-${clipPathId})`}>\n {this.renderAreaStatically(points, baseLine, needClip, clipPathId)}\n </Layer>\n </Layer>\n );\n }}\n </Animate>\n );\n }\n\n renderArea(needClip: boolean, clipPathId: string) {\n const { points, baseLine, isAnimationActive } = this.props;\n const { prevPoints, prevBaseLine, totalLength } = this.state;\n\n if (\n isAnimationActive &&\n points &&\n points.length &&\n ((!prevPoints && totalLength > 0) || !isEqual(prevPoints, points) || !isEqual(prevBaseLine, baseLine))\n ) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n\n render() {\n const { hide, dot, points, className, top, left, xAxis, yAxis, width, height, isAnimationActive, id } = this.props;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n const { isAnimationFinished } = this.state;\n const hasSinglePoint = points.length === 1;\n const layerClass = clsx('recharts-area', className);\n const needClipX = xAxis && xAxis.allowDataOverflow;\n const needClipY = yAxis && yAxis.allowDataOverflow;\n const needClip = needClipX || needClipY;\n const clipPathId = isNil(id) ? this.id : id;\n const { r = 3, strokeWidth = 2 } = filterProps(dot, false) ?? { r: 3, strokeWidth: 2 };\n const { clipDot = true } = hasClipDot(dot) ? dot : {};\n const dotSize = r * 2 + strokeWidth;\n\n return (\n <Layer className={layerClass}>\n {needClipX || needClipY ? (\n <defs>\n <clipPath id={`clipPath-${clipPathId}`}>\n <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 />\n </clipPath>\n {!clipDot && (\n <clipPath id={`clipPath-dots-${clipPathId}`}>\n <rect x={left - dotSize / 2} y={top - dotSize / 2} width={width + dotSize} height={height + dotSize} />\n </clipPath>\n )}\n </defs>\n ) : null}\n {!hasSinglePoint ? this.renderArea(needClip, clipPathId) : null}\n {(dot || hasSinglePoint) && this.renderDots(needClip, clipDot, clipPathId)}\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Z Axis\n */\nimport * as React from 'react';\nimport { ScaleType, DataKey, AxisDomain } from '../util/types';\n\nexport interface Props {\n type?: 'number' | 'category';\n /** The name of data displayed in the axis */\n name?: string | number;\n /** The unit of data displayed in the axis */\n unit?: string | number;\n /** The unique id of z-axis */\n zAxisId?: string | number;\n /** The key of data displayed in the axis */\n dataKey?: DataKey<any>;\n /** The range of axis */\n range?: number[];\n scale?: ScaleType | Function;\n /** The domain of scale in this axis */\n domain?: AxisDomain;\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ZAxis extends React.Component<Props> {\n static displayName = 'ZAxis';\n\n static defaultProps = {\n zAxisId: 0,\n range: [64, 64],\n scale: 'auto',\n type: 'number',\n };\n\n render(): React.ReactNode {\n return null;\n }\n}\n","import * as React from 'react';\nimport { ActiveShape, SymbolType } from './types';\nimport { ScatterPointItem } from '../cartesian/Scatter';\nimport { Symbols } from '../shape/Symbols';\nimport { Shape } from './ActiveShapeUtils';\n\nexport function ScatterSymbol({\n option,\n isActive,\n ...props\n}: {\n option: ActiveShape<ScatterPointItem> | SymbolType;\n isActive: boolean;\n} & ScatterPointItem) {\n if (typeof option === 'string') {\n return <Shape option={<Symbols type={option} {...props} />} isActive={isActive} shapeType=\"symbols\" {...props} />;\n }\n\n return <Shape option={option} isActive={isActive} shapeType=\"symbols\" {...props} />;\n}\n","/**\n * @fileOverview Render a group of scatters\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport Animate from 'react-smooth';\n\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelListType, LabelList } from '../component/LabelList';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { ZAxis, Props as ZAxisProps } from './ZAxis';\nimport { Curve, Props as CurveProps, CurveType } from '../shape/Curve';\nimport { ErrorBar, Props as ErrorBarProps } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { uniqueId, interpolateNumber, getLinearRegression } from '../util/DataUtils';\nimport { getValueByDataKey, getCateCoordinateOfLine } from '../util/ChartUtils';\nimport {\n LegendType,\n AnimationTiming,\n D3Scale,\n ChartOffset,\n DataKey,\n TickItem,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n AnimationDuration,\n ActiveShape,\n SymbolType,\n} from '../util/types';\nimport { TooltipType } from '../component/DefaultTooltipContent';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { ScatterSymbol } from '../util/ScatterUtils';\nimport { InnerSymbolsProp } from '../shape/Symbols';\n\ninterface ScattterPointNode {\n x?: number | string;\n y?: number | string;\n z?: number | string;\n}\n\nexport interface ScatterPointItem {\n cx?: number;\n cy?: number;\n size?: number;\n node?: ScattterPointNode;\n payload?: any;\n}\n\nexport type ScatterCustomizedShape = ActiveShape<ScatterPointItem, SVGPathElement & InnerSymbolsProp> | SymbolType;\n\ninterface ScatterProps {\n data?: any[];\n xAxisId?: string | number;\n yAxisId?: string | number;\n zAxisId?: string | number;\n\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n\n xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n zAxis?: Omit<ZAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n\n dataKey?: DataKey<any>;\n\n line?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | CurveProps | boolean;\n lineType?: 'fitting' | 'joint';\n lineJointType?: CurveType;\n legendType?: LegendType;\n tooltipType?: TooltipType;\n className?: string;\n name?: string | number;\n\n activeIndex?: number;\n activeShape?: ScatterCustomizedShape;\n shape?: ScatterCustomizedShape;\n points?: ScatterPointItem[];\n hide?: boolean;\n label?: ImplicitLabelListType<any>;\n\n isAnimationActive?: boolean;\n animationId?: number;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n}\n\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGElement> & ScatterProps;\n\ninterface State {\n isAnimationFinished?: boolean;\n prevPoints?: ScatterPointItem[];\n curPoints?: ScatterPointItem[];\n prevAnimationId?: number;\n}\n\nexport class Scatter extends PureComponent<Props, State> {\n static displayName = 'Scatter';\n\n static defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n zAxisId: 0,\n legendType: 'circle',\n lineType: 'joint',\n lineJointType: 'linear',\n data: [] as any[],\n shape: 'circle',\n hide: false,\n\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'linear',\n };\n\n /**\n * Compose the data of each group\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n static getComposedData = ({\n xAxis,\n yAxis,\n zAxis,\n item,\n displayedData,\n xAxisTicks,\n yAxisTicks,\n offset,\n }: {\n props: Props;\n xAxis: Props['xAxis'];\n yAxis: Props['yAxis'];\n zAxis: Props['zAxis'];\n xAxisTicks: TickItem[];\n yAxisTicks: TickItem[];\n item: Scatter;\n bandSize: number;\n displayedData: any[];\n offset: ChartOffset;\n }) => {\n const { tooltipType } = item.props;\n const cells = findAllByType(item.props.children, Cell);\n const xAxisDataKey = isNil(xAxis.dataKey) ? item.props.dataKey : xAxis.dataKey;\n const yAxisDataKey = isNil(yAxis.dataKey) ? item.props.dataKey : yAxis.dataKey;\n const zAxisDataKey = zAxis && zAxis.dataKey;\n const defaultRangeZ = zAxis ? zAxis.range : ZAxis.defaultProps.range;\n const defaultZ = defaultRangeZ && defaultRangeZ[0];\n const xBandSize = (xAxis.scale as any).bandwidth ? (xAxis.scale as any).bandwidth() : 0;\n const yBandSize = (yAxis.scale as any).bandwidth ? (yAxis.scale as any).bandwidth() : 0;\n const points = displayedData.map((entry, index) => {\n const x = getValueByDataKey(entry, xAxisDataKey);\n const y = getValueByDataKey(entry, yAxisDataKey);\n const z = (!isNil(zAxisDataKey) && getValueByDataKey(entry, zAxisDataKey)) || '-';\n const tooltipPayload = [\n {\n name: isNil(xAxis.dataKey) ? item.props.name : xAxis.name || xAxis.dataKey,\n unit: xAxis.unit || '',\n value: x,\n payload: entry,\n dataKey: xAxisDataKey,\n type: tooltipType,\n },\n {\n name: isNil(yAxis.dataKey) ? item.props.name : yAxis.name || yAxis.dataKey,\n unit: yAxis.unit || '',\n value: y,\n payload: entry,\n dataKey: yAxisDataKey,\n type: tooltipType,\n },\n ];\n\n if (z !== '-') {\n tooltipPayload.push({\n name: zAxis.name || zAxis.dataKey,\n unit: zAxis.unit || '',\n value: z,\n payload: entry,\n dataKey: zAxisDataKey,\n type: tooltipType,\n });\n }\n const cx = getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: xBandSize,\n entry,\n index,\n dataKey: xAxisDataKey,\n });\n const cy = getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: yBandSize,\n entry,\n index,\n dataKey: yAxisDataKey,\n });\n const size = z !== '-' ? zAxis.scale(z) : defaultZ;\n const radius = Math.sqrt(Math.max(size, 0) / Math.PI);\n\n return {\n ...entry,\n cx,\n cy,\n x: cx - radius,\n y: cy - radius,\n xAxis,\n yAxis,\n zAxis,\n width: 2 * radius,\n height: 2 * radius,\n size,\n node: { x, y, z },\n tooltipPayload,\n tooltipPosition: { x: cx, y: cy },\n payload: entry,\n ...(cells && cells[index] && cells[index].props),\n };\n });\n\n return {\n points,\n ...offset,\n };\n };\n\n state: State = { isAnimationFinished: false };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints,\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points,\n };\n }\n\n return null;\n }\n\n handleAnimationEnd = () => {\n this.setState({ isAnimationFinished: true });\n };\n\n handleAnimationStart = () => {\n this.setState({ isAnimationFinished: false });\n };\n\n id = uniqueId('recharts-scatter-');\n\n renderSymbolsStatically(points: ScatterPointItem[]) {\n const { shape, activeShape, activeIndex } = this.props;\n const baseProps = filterProps(this.props, false);\n\n return points.map((entry, i) => {\n const isActive = activeIndex === i;\n const option = isActive ? activeShape : shape;\n const props = { ...baseProps, ...entry };\n\n return (\n <Layer\n className=\"recharts-scatter-symbol\"\n // eslint-disable-next-line react/no-array-index-key\n key={`symbol-${entry?.cx}-${entry?.cy}-${entry?.size}-${i}`}\n {...adaptEventsOfChild(this.props, entry, i)}\n role=\"img\"\n >\n <ScatterSymbol\n option={option}\n isActive={isActive}\n // eslint-disable-next-line react/no-array-index-key\n key={`symbol-${i}`}\n {...props}\n />\n </Layer>\n );\n });\n }\n\n renderSymbolsWithAnimation() {\n const { points, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n const { prevPoints } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`pie-${animationId}`}\n onAnimationEnd={this.handleAnimationEnd}\n onAnimationStart={this.handleAnimationStart}\n >\n {({ t }: { t: number }) => {\n const stepData = points.map((entry, index) => {\n const prev = prevPoints && prevPoints[index];\n\n if (prev) {\n const interpolatorCx = interpolateNumber(prev.cx, entry.cx);\n const interpolatorCy = interpolateNumber(prev.cy, entry.cy);\n const interpolatorSize = interpolateNumber(prev.size, entry.size);\n\n return {\n ...entry,\n cx: interpolatorCx(t),\n cy: interpolatorCy(t),\n size: interpolatorSize(t),\n };\n }\n\n const interpolator = interpolateNumber(0, entry.size);\n\n return { ...entry, size: interpolator(t) };\n });\n\n return <Layer>{this.renderSymbolsStatically(stepData)}</Layer>;\n }}\n </Animate>\n );\n }\n\n renderSymbols() {\n const { points, isAnimationActive } = this.props;\n const { prevPoints } = this.state;\n\n if (isAnimationActive && points && points.length && (!prevPoints || !isEqual(prevPoints, points))) {\n return this.renderSymbolsWithAnimation();\n }\n\n return this.renderSymbolsStatically(points);\n }\n\n renderErrorBar() {\n const { isAnimationActive } = this.props;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n const { points, xAxis, yAxis, children } = this.props;\n const errorBarItems = findAllByType(children, ErrorBar);\n\n if (!errorBarItems) {\n return null;\n }\n\n return errorBarItems.map((item: ReactElement<ErrorBarProps>, i: number) => {\n const { direction, dataKey: errorDataKey } = item.props;\n return React.cloneElement(item, {\n key: `${direction}-${errorDataKey}-${points[i]}`,\n data: points,\n xAxis,\n yAxis,\n layout: direction === 'x' ? 'vertical' : 'horizontal',\n dataPointFormatter: (dataPoint: ScatterPointItem, dataKey: Props['dataKey']) => {\n return {\n x: dataPoint.cx,\n y: dataPoint.cy,\n value: direction === 'x' ? +dataPoint.node.x : +dataPoint.node.y,\n errorVal: getValueByDataKey(dataPoint, dataKey),\n };\n },\n });\n });\n }\n\n renderLine() {\n const { points, line, lineType, lineJointType } = this.props;\n const scatterProps = filterProps(this.props, false);\n const customLineProps = filterProps(line, false);\n let linePoints, lineItem;\n\n if (lineType === 'joint') {\n linePoints = points.map(entry => ({ x: entry.cx, y: entry.cy }));\n } else if (lineType === 'fitting') {\n const { xmin, xmax, a, b } = getLinearRegression(points);\n const linearExp = (x: number) => a * x + b;\n linePoints = [\n { x: xmin, y: linearExp(xmin) },\n { x: xmax, y: linearExp(xmax) },\n ];\n }\n const lineProps = {\n ...scatterProps,\n fill: 'none',\n stroke: scatterProps && scatterProps.fill,\n ...customLineProps,\n points: linePoints,\n };\n\n if (React.isValidElement(line)) {\n lineItem = React.cloneElement(line as any, lineProps);\n } else if (isFunction(line)) {\n lineItem = line(lineProps);\n } else {\n lineItem = <Curve {...lineProps} type={lineJointType} />;\n }\n\n return (\n <Layer className=\"recharts-scatter-line\" key=\"recharts-scatter-line\">\n {lineItem}\n </Layer>\n );\n }\n\n render() {\n const { hide, points, line, className, xAxis, yAxis, left, top, width, height, id, isAnimationActive } = this.props;\n if (hide || !points || !points.length) {\n return null;\n }\n const { isAnimationFinished } = this.state;\n const layerClass = clsx('recharts-scatter', className);\n const needClipX = xAxis && xAxis.allowDataOverflow;\n const needClipY = yAxis && yAxis.allowDataOverflow;\n const needClip = needClipX || needClipY;\n const clipPathId = isNil(id) ? this.id : id;\n\n return (\n <Layer className={layerClass} clipPath={needClip ? `url(#clipPath-${clipPathId})` : null}>\n {needClipX || needClipY ? (\n <defs>\n <clipPath id={`clipPath-${clipPathId}`}>\n <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 />\n </clipPath>\n </defs>\n ) : null}\n {line && this.renderLine()}\n {this.renderErrorBar()}\n <Layer key=\"recharts-scatter-symbols\">{this.renderSymbols()}</Layer>\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview X Axis\n */\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { BaseAxisProps, AxisInterval, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\ninterface XAxisProps extends BaseAxisProps {\n /** The unique id of x-axis */\n xAxisId?: string | number;\n /** The width of axis which is usually calculated internally */\n width?: number;\n /** The height of axis, which need to be set by the user */\n height?: number;\n mirror?: boolean;\n // The orientation of axis\n orientation?: 'top' | 'bottom';\n /**\n * Ticks can be any type when the axis is the type of category\n * Ticks must be numbers when the axis is the type of number\n */\n ticks?: (string | number)[];\n padding?: { left?: number; right?: number } | 'gap' | 'no-gap';\n minTickGap?: number;\n interval?: AxisInterval;\n reversed?: boolean;\n /** the rotate angle of tick */\n angle?: number;\n tickMargin?: number;\n}\n\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGElement>, 'scale' | 'ref'> & XAxisProps;\n\nfunction XAxisImpl({ xAxisId }: Props) {\n const width = useChartWidth();\n const height = useChartHeight();\n const axisOptions = useXAxisOrThrow(xAxisId);\n\n if (axisOptions == null) {\n return null;\n }\n\n return (\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n <CartesianAxis\n {...axisOptions}\n className={clsx(`recharts-${axisOptions.axisType} ${axisOptions.axisType}`, axisOptions.className)}\n viewBox={{ x: 0, y: 0, width, height }}\n ticksGenerator={(axis: any) => getTicksOfAxis(axis, true)}\n />\n );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class XAxis extends React.Component<Props> {\n static displayName = 'XAxis';\n\n static 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: { left: 0, right: 0 },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true,\n };\n\n render() {\n return <XAxisImpl {...this.props} />;\n }\n}\n","/**\n * @fileOverview Y Axis\n */\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { BaseAxisProps, AxisInterval, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\ninterface YAxisProps extends BaseAxisProps {\n /** The unique id of y-axis */\n yAxisId?: string | number;\n /**\n * Ticks can be any type when the axis is the type of category\n * Ticks must be numbers when the axis is the type of number\n */\n ticks?: (string | number)[];\n /** The width of axis, which need to be set by the user */\n width?: number;\n /** The height of axis which is usually calculated in Chart */\n height?: number;\n mirror?: boolean;\n /** The orientation of axis */\n orientation?: 'left' | 'right';\n padding?: {\n top?: number;\n bottom?: number;\n };\n minTickGap?: number;\n interval?: AxisInterval;\n reversed?: boolean;\n tickMargin?: number;\n}\n\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGElement>, 'scale' | 'ref'> & YAxisProps;\n\nconst YAxisImpl = ({ yAxisId }: Props) => {\n const width = useChartWidth();\n const height = useChartHeight();\n const axisOptions = useYAxisOrThrow(yAxisId);\n\n if (axisOptions == null) {\n return null;\n }\n\n return (\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n <CartesianAxis\n {...axisOptions}\n className={clsx(`recharts-${axisOptions.axisType} ${axisOptions.axisType}`, axisOptions.className)}\n viewBox={{ x: 0, y: 0, width, height }}\n ticksGenerator={(axis: any) => getTicksOfAxis(axis, true)}\n />\n );\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class YAxis extends React.Component<Props> {\n static displayName = 'YAxis';\n\n static 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: { top: 0, bottom: 0 },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n };\n\n render() {\n return <YAxisImpl {...this.props} />;\n }\n}\n","import { ReactNode } from 'react';\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';\n\nexport const detectReferenceElementsDomain = (\n children: ReactNode[],\n domain: number[],\n axisId: string,\n axisType: string,\n specifiedTicks?: any[],\n) => {\n const lines = findAllByType(children, ReferenceLine);\n const dots = findAllByType(children, ReferenceDot);\n const elements = [...lines, ...dots];\n const areas = findAllByType(children, ReferenceArea);\n const idKey = `${axisType}Id`;\n const valueKey = axisType[0];\n let finalDomain = domain;\n\n if (elements.length) {\n finalDomain = elements.reduce((result: number[], el: any) => {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n const value = el.props[valueKey];\n\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n return result;\n }, finalDomain);\n }\n\n if (areas.length) {\n const key1 = `${valueKey}1`;\n const key2 = `${valueKey}2`;\n\n finalDomain = areas.reduce((result: number[], el: any) => {\n if (\n el.props[idKey] === axisId &&\n ifOverflowMatches(el.props, 'extendDomain') &&\n isNumber(el.props[key1]) &&\n isNumber(el.props[key2])\n ) {\n const value1 = el.props[key1];\n const value2 = el.props[key2];\n\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n return result;\n }, finalDomain);\n }\n\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce((result, tick) => {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n\n return result;\n }, finalDomain);\n }\n\n return finalDomain;\n};\n","import EventEmitter from 'eventemitter3';\nimport { CategoricalChartState } from '../chart/types';\n\nconst eventCenter: EventEmitter<EventTypes> = new EventEmitter();\n\nexport { eventCenter };\nexport const SYNC_EVENT = 'recharts.syncMouseEvents';\n\ninterface EventTypes {\n [SYNC_EVENT](syncId: number | string, data: CategoricalChartState, emitter: Symbol): void;\n}\n","import type { LayoutType, TickItem } from '../util/types';\n\ninterface ContainerOffset {\n top: number;\n left: number;\n}\n\ninterface InitiableOptions {\n coordinateList?: TickItem[];\n mouseHandlerCallback?: (e: Partial<MouseEvent>) => void;\n container?: HTMLElement;\n layout?: LayoutType;\n offset?: ContainerOffset;\n}\n\nexport class AccessibilityManager {\n private activeIndex = 0;\n\n private coordinateList: InitiableOptions['coordinateList'] = [];\n\n private mouseHandlerCallback: InitiableOptions['mouseHandlerCallback'];\n\n private container: InitiableOptions['container'];\n\n private layout: InitiableOptions['layout'] = 'horizontal';\n\n private offset: InitiableOptions['offset'];\n\n public setDetails({\n coordinateList = null,\n container = null,\n layout = null,\n offset = null,\n mouseHandlerCallback = null,\n }: InitiableOptions) {\n this.coordinateList = coordinateList ?? this.coordinateList ?? [];\n this.container = container ?? this.container;\n this.layout = layout ?? this.layout;\n this.offset = offset ?? this.offset;\n this.mouseHandlerCallback = 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 public focus() {\n this.spoofMouse();\n }\n\n public keyboardEvent(e: any) {\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\n switch (e.key) {\n case 'ArrowRight': {\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 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 break;\n }\n }\n }\n\n public setIndex(newIndex: number) {\n this.activeIndex = newIndex;\n }\n\n private spoofMouse() {\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\n const { x, y, height } = this.container.getBoundingClientRect();\n const { coordinate } = this.coordinateList[this.activeIndex];\n\n const scrollOffsetX = window?.scrollX || 0;\n const scrollOffsetY = window?.scrollY || 0;\n\n const pageX = x + coordinate + scrollOffsetX;\n const pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n\n this.mouseHandlerCallback({ pageX, pageY });\n }\n}\n","import { polarToCartesian } from '../PolarUtils';\nimport { ChartCoordinate, Coordinate } from '../types';\n\nexport type RadialCursorPoints = {\n points: [startPoint: Coordinate, endPoint: Coordinate];\n cx?: number;\n cy?: number;\n radius?: number;\n startAngle?: number;\n endAngle?: number;\n};\n\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate: ChartCoordinate): RadialCursorPoints {\n const { cx, cy, radius, startAngle, endAngle } = activeCoordinate;\n const startPoint = polarToCartesian(cx, cy, radius, startAngle);\n const endPoint = polarToCartesian(cx, cy, radius, endAngle);\n\n return {\n points: [startPoint, endPoint],\n cx,\n cy,\n radius,\n startAngle,\n endAngle,\n };\n}\n","import { polarToCartesian } from '../PolarUtils';\nimport { ChartCoordinate, Coordinate, ChartOffset, LayoutType } from '../types';\nimport { RadialCursorPoints, getRadialCursorPoints } from './getRadialCursorPoints';\n\nexport function getCursorPoints(\n layout: LayoutType,\n activeCoordinate: ChartCoordinate,\n offset: ChartOffset,\n): [Coordinate, Coordinate] | RadialCursorPoints {\n let x1, y1, x2, y2;\n\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 const { cx, cy, innerRadius, outerRadius, angle } = activeCoordinate;\n const innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n const 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\n return [\n { x: x1, y: y1 },\n { x: x2, y: y2 },\n ];\n}\n","import React, { ReactElement, cloneElement, createElement, isValidElement } from 'react';\nimport clsx from 'clsx';\nimport { ChartCoordinate, ChartOffset, LayoutType, TooltipEventType } from '../util/types';\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\nexport type CursorProps = {\n activeCoordinate: ChartCoordinate;\n activePayload: any[];\n activeTooltipIndex: number;\n chartName: string;\n element: ReactElement;\n isActive: boolean;\n layout: LayoutType;\n offset: ChartOffset;\n tooltipAxisBandSize: number;\n tooltipEventType: TooltipEventType;\n};\n\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: CursorProps) {\n const {\n element,\n tooltipEventType,\n isActive,\n activeCoordinate,\n activePayload,\n offset,\n activeTooltipIndex,\n tooltipAxisBandSize,\n layout,\n chartName,\n } = props;\n const elementPropsCursor = element.props.cursor ?? (element.type as any).defaultProps?.cursor;\n if (\n !element ||\n !elementPropsCursor ||\n !isActive ||\n !activeCoordinate ||\n (chartName !== 'ScatterChart' && tooltipEventType !== 'axis')\n ) {\n return null;\n }\n let restProps;\n let cursorComp: React.ComponentType<any> = Curve;\n\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 const { cx, cy, radius, startAngle, endAngle } = getRadialCursorPoints(activeCoordinate);\n restProps = {\n cx,\n cy,\n startAngle,\n endAngle,\n innerRadius: radius,\n outerRadius: radius,\n };\n cursorComp = Sector;\n } else {\n restProps = { points: getCursorPoints(layout, activeCoordinate, offset) };\n cursorComp = Curve;\n }\n\n const cursorProps = {\n stroke: '#ccc',\n pointerEvents: 'none',\n ...offset,\n ...restProps,\n ...filterProps(elementPropsCursor, false),\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: clsx('recharts-tooltip-cursor', elementPropsCursor.className),\n };\n\n return isValidElement(elementPropsCursor)\n ? cloneElement(elementPropsCursor, cursorProps)\n : createElement(cursorComp, cursorProps);\n}\n","import { ChartCoordinate, ChartOffset, LayoutType } from '../types';\n\nexport type CursorRectangle = {\n stroke: string;\n fill: string;\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport function getCursorRectangle(\n layout: LayoutType,\n activeCoordinate: ChartCoordinate,\n offset: ChartOffset,\n tooltipAxisBandSize: number,\n): CursorRectangle {\n const halfSize = tooltipAxisBandSize / 2;\n\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}\n","import React, { Component, cloneElement, isValidElement, ReactElement, 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';\n\nimport clsx from 'clsx';\n// eslint-disable-next-line no-restricted-imports\nimport type { DebouncedFunc } from 'lodash';\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';\n\nimport {\n filterProps,\n findAllByType,\n findChildByType,\n getDisplayName,\n getReactEventByType,\n isChildrenEqual,\n parseChildIndex,\n renderByOrder,\n validateWidthHeight,\n} from '../util/ReactUtils';\n\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset } from '../util/DOMUtils';\nimport { findEntryInArray, getAnyElementOfObject, hasDuplicate, isNumber, uniqueId } from '../util/DataUtils';\nimport {\n appendOffsetOfLegend,\n AxisStackGroups,\n BarPosition,\n calculateActiveTickIndex,\n combineEventHandlers,\n getBandSizeOfAxis,\n getBarPosition,\n getBarSizeList,\n getDomainOfDataByKey,\n getDomainOfItemsWithSameAxis,\n getDomainOfStackGroups,\n getLegendProps,\n getMainColorOfGraphicItem,\n getStackedDataOfItem,\n getStackGroupsByAxisId,\n getTicksOfAxis,\n getTooltipItem,\n isCategoricalAxis,\n parseDomainOfCategoryAxis,\n parseErrorBarsOfAxis,\n parseSpecifiedDomain,\n} 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 {\n adaptEventHandlers,\n AxisType,\n BaseAxisProps,\n CartesianViewBox,\n CategoricalChartOptions,\n ChartCoordinate,\n ChartOffset,\n Coordinate,\n DataKey,\n GeometrySector,\n LayoutType,\n Margin,\n StackOffsetType,\n TickItem,\n TooltipEventType,\n XAxisMap,\n YAxisMap,\n} 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';\nimport { AxisMap, CategoricalChartState } from './types';\nimport { XAxisProps, YAxisProps, ZAxisProps } from '../index';\nimport { AngleAxisProps, RadiusAxisProps } from '../polar/types';\n\nexport interface MousePointer {\n pageX: number;\n pageY: number;\n}\n\nexport type GraphicalItem<Props = Record<string, any>> = ReactElement<\n Props,\n string | React.JSXElementConstructor<Props>\n> & {\n item: ReactElement<Props, string | React.JSXElementConstructor<Props>>;\n};\n\nconst ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right'],\n};\n\nconst FULL_WIDTH_AND_HEIGHT = { width: '100%', height: '100%' };\n\nconst originCoordinate: Coordinate = { x: 0, y: 0 };\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: React.ReactElement): React.ReactElement {\n return element;\n}\n\nconst calculateTooltipPos = (rangeObj: any, layout: LayoutType): any => {\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\n return rangeObj.radius;\n};\n\nconst getActiveCoordinate = (\n layout: LayoutType,\n tooltipTicks: TickItem[],\n activeIndex: number,\n rangeObj: any,\n): ChartCoordinate => {\n const entry = tooltipTicks.find(tick => tick && tick.index === activeIndex);\n\n if (entry) {\n if (layout === 'horizontal') {\n return { x: entry.coordinate, y: rangeObj.y };\n }\n if (layout === 'vertical') {\n return { x: rangeObj.x, y: entry.coordinate };\n }\n if (layout === 'centric') {\n const angle = entry.coordinate;\n const { radius } = rangeObj;\n\n return {\n ...rangeObj,\n ...polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle),\n angle,\n radius,\n };\n }\n\n const radius = entry.coordinate;\n const { angle } = rangeObj;\n\n return {\n ...rangeObj,\n ...polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle),\n angle,\n radius,\n };\n }\n\n return originCoordinate;\n};\n\nconst getDisplayedData = (\n data: any[],\n {\n graphicalItems,\n dataStartIndex,\n dataEndIndex,\n }: Pick<CategoricalChartState, 'graphicalItems' | 'dataStartIndex' | 'dataEndIndex'>,\n): any[] => {\n const itemsData = (graphicalItems ?? []).reduce<any[]>((result, child) => {\n const itemData = child.props.data;\n\n if (itemData && itemData.length) {\n return [...result, ...itemData];\n }\n\n return result;\n }, []);\n if (itemsData.length > 0) {\n return itemsData;\n }\n\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n\n return [];\n};\n\nfunction getDefaultDomainByAxisType(axisType: 'number' | string) {\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 */\nconst getTooltipContent = (\n state: CategoricalChartState,\n chartData: any[],\n activeIndex: number,\n activeLabel?: string,\n): any[] => {\n const { graphicalItems, tooltipAxis } = state;\n const displayedData = getDisplayedData(chartData, state);\n\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((result, child) => {\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 let data = child.props.data ?? chartData;\n\n if (\n data &&\n 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 ) {\n data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n }\n\n let payload;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n const entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = (data && data[activeIndex]) || displayedData[activeIndex];\n }\n\n if (!payload) {\n return result;\n }\n\n return [...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 */\nconst getTooltipData = (state: CategoricalChartState, chartData: any[], layout: LayoutType, rangeObj?: any) => {\n const rangeData = rangeObj || { x: state.chartX, y: state.chartY };\n\n const pos = calculateTooltipPos(rangeData, layout);\n const { orderedTooltipTicks: ticks, tooltipAxis: axis, tooltipTicks } = state;\n\n const activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n if (activeIndex >= 0 && tooltipTicks) {\n const activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n const activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n const activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n\n return {\n activeTooltipIndex: activeIndex,\n activeLabel,\n activePayload,\n activeCoordinate,\n };\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 const getAxisMapByAxes = (\n props: CategoricalChartProps,\n {\n axes,\n graphicalItems,\n axisType,\n axisIdKey,\n stackGroups,\n dataStartIndex,\n dataEndIndex,\n }: {\n axes: ReadonlyArray<ReactElement>;\n graphicalItems: ReadonlyArray<ReactElement>;\n axisType: AxisType;\n axisIdKey: string;\n stackGroups: AxisStackGroups;\n dataStartIndex: number;\n dataEndIndex: number;\n },\n): AxisMap => {\n const { layout, children, stackOffset } = props;\n const isCategorical = isCategoricalAxis(layout, axisType);\n\n // Eliminate duplicated axes\n return axes.reduce((result: AxisMap, child: ReactElement): AxisMap => {\n const childProps =\n (child.type as any).defaultProps !== undefined\n ? { ...(child.type as any).defaultProps, ...child.props }\n : child.props;\n const { type, dataKey, allowDataOverflow, allowDuplicatedCategory, scale, ticks, includeHidden } = childProps;\n const axisId = childProps[axisIdKey];\n\n if (result[axisId]) {\n return result;\n }\n\n const displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(item => {\n const itemAxisId =\n axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps?.[axisIdKey];\n return itemAxisId === axisId;\n }),\n dataStartIndex,\n dataEndIndex,\n });\n const len = displayedData.length;\n\n let 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 const 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 const childDomain = childProps.domain ?? defaultDomain;\n\n if (dataKey) {\n // has dataKey in <Axis />\n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is categorical axis\n const duplicate = hasDuplicate(domain);\n\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(\n (finalDomain: any, entry: any) =>\n finalDomain.indexOf(entry) >= 0 ? finalDomain : [...finalDomain, entry],\n [],\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(\n (finalDomain: any, entry: any) =>\n finalDomain.indexOf(entry) >= 0 || entry === '' || isNil(entry) ? finalDomain : [...finalDomain, entry],\n [],\n );\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter((entry: any) => entry !== '' && !isNil(entry));\n }\n } else if (type === 'number') {\n // the field type is numerical\n const errorBarsDomain = parseErrorBarsOfAxis(\n displayedData,\n graphicalItems.filter(item => {\n const itemAxisId =\n axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps?.[axisIdKey];\n const itemHide = 'hide' in item.props ? item.props.hide : (item.type as any).defaultProps?.hide;\n return itemAxisId === axisId && (includeHidden || !itemHide);\n }),\n dataKey,\n axisType,\n layout,\n );\n\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\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 =\n stackOffset === 'expand'\n ? [0, 1]\n : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(\n displayedData,\n graphicalItems.filter(item => {\n const itemAxisId =\n axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps[axisIdKey];\n const itemHide = 'hide' in item.props ? item.props.hide : (item.type as any).defaultProps.hide;\n return itemAxisId === axisId && (includeHidden || !itemHide);\n }),\n type,\n layout,\n true,\n );\n }\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\n if (childDomain) {\n domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && childDomain) {\n const axisDomain = childDomain;\n const isDomainValid = domain.every((entry: string | number) => axisDomain.indexOf(entry) >= 0);\n\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n\n return {\n ...result,\n [axisId]: {\n ...childProps,\n axisType,\n domain,\n categoricalDomain,\n duplicateDomain,\n originalDomain: childProps.domain ?? defaultDomain,\n isCategorical,\n layout,\n },\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 */\nconst getAxisMapByItems = (\n props: CategoricalChartProps,\n {\n graphicalItems,\n Axis,\n axisType,\n axisIdKey,\n stackGroups,\n dataStartIndex,\n dataEndIndex,\n }: {\n axisIdKey: string;\n axisType?: AxisType;\n Axis?: React.ComponentType<BaseAxisProps>;\n graphicalItems: ReadonlyArray<ReactElement>;\n stackGroups: AxisStackGroups;\n dataStartIndex: number;\n dataEndIndex: number;\n },\n): AxisMap => {\n const { layout, children } = props;\n const displayedData = getDisplayedData(props.data, {\n graphicalItems,\n dataStartIndex,\n dataEndIndex,\n });\n const len = displayedData.length;\n const isCategorical = isCategoricalAxis(layout, axisType);\n let 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((result: AxisMap, child: ReactElement): AxisMap => {\n const childProps =\n (child.type as any).defaultProps !== undefined\n ? { ...(child.type as any).defaultProps, ...child.props }\n : child.props;\n const axisId = childProps[axisIdKey];\n\n const originalDomain = getDefaultDomainByAxisType('number');\n\n if (!result[axisId]) {\n index++;\n let domain;\n\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(\n originalDomain,\n getDomainOfItemsWithSameAxis(\n displayedData,\n graphicalItems.filter((item: ReactElement) => {\n const itemAxisId =\n axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps?.[axisIdKey];\n const itemHide = 'hide' in item.props ? item.props.hide : (item.type as any).defaultProps?.hide;\n return itemAxisId === axisId && !itemHide;\n }),\n 'number',\n layout,\n ),\n Axis.defaultProps.allowDataOverflow,\n );\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n\n return {\n ...result,\n [axisId]: {\n axisType,\n ...Axis.defaultProps,\n hide: true,\n orientation: get(ORIENT_MAP, `${axisType}.${index % 2}`, null),\n domain,\n originalDomain,\n isCategorical,\n layout,\n // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n },\n };\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 */\nconst getAxisMap = (\n props: CategoricalChartProps,\n {\n axisType = 'xAxis',\n AxisComp,\n graphicalItems,\n stackGroups,\n dataStartIndex,\n dataEndIndex,\n }: {\n axisType?: AxisType;\n AxisComp?: React.ComponentType;\n graphicalItems: ReadonlyArray<ReactElement>;\n stackGroups: AxisStackGroups;\n dataStartIndex: number;\n dataEndIndex: number;\n },\n): AxisMap => {\n const { children } = props;\n const axisIdKey = `${axisType}Id`;\n // Get all the instance of Axis\n const axes = findAllByType(children, AxisComp);\n\n let axisMap: AxisMap = {};\n\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes,\n graphicalItems,\n axisType,\n axisIdKey,\n stackGroups,\n dataStartIndex,\n dataEndIndex,\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems,\n axisType,\n axisIdKey,\n stackGroups,\n dataStartIndex,\n dataEndIndex,\n });\n }\n\n return axisMap;\n};\n\nconst tooltipTicksGenerator = (axisMap: AxisMap) => {\n const axis: BaseAxisProps = getAnyElementOfObject(axisMap);\n const tooltipTicks = getTicksOfAxis(axis, false, true);\n\n return {\n tooltipTicks,\n orderedTooltipTicks: sortBy(tooltipTicks, o => o.coordinate),\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 const createDefaultState = (props: CategoricalChartProps): CategoricalChartState => {\n const { children, defaultShowTooltip } = props;\n const brushItem = findChildByType(children, Brush);\n let startIndex = 0;\n let endIndex = 0;\n\n if (props.data && props.data.length !== 0) {\n endIndex = props.data.length - 1;\n }\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\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: Boolean(defaultShowTooltip),\n };\n};\n\nconst hasGraphicalBarItem = (graphicalItems: ReadonlyArray<ReactElement>): boolean => {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n\n return graphicalItems.some(item => {\n const name = getDisplayName(item && item.type);\n\n return name && name.indexOf('Bar') >= 0;\n });\n};\n\nconst getAxisNameByLayout = (layout: LayoutType) => {\n if (layout === 'horizontal') {\n return { numericAxisName: 'yAxis', cateAxisName: 'xAxis' } as const;\n }\n if (layout === 'vertical') {\n return { numericAxisName: 'xAxis', cateAxisName: 'yAxis' } as const;\n }\n if (layout === 'centric') {\n return { numericAxisName: 'radiusAxis', cateAxisName: 'angleAxis' } as const;\n }\n\n return { numericAxisName: 'angleAxis', cateAxisName: 'radiusAxis' } as const;\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 */\nconst calculateOffset = (\n {\n props,\n graphicalItems,\n xAxisMap = {},\n yAxisMap = {},\n }: {\n props: CategoricalChartProps;\n graphicalItems: Array<ReactElement>;\n xAxisMap?: XAxisMap;\n yAxisMap?: YAxisMap;\n },\n prevLegendBBox?: DOMRect | null,\n): ChartOffset => {\n const { width, height, children } = props;\n const margin = props.margin || {};\n const brushItem = findChildByType(children, Brush);\n const legendItem = findChildByType(children, Legend);\n\n const offsetH = Object.keys(yAxisMap).reduce(\n (result, id) => {\n const entry = yAxisMap[id];\n const { orientation } = entry;\n\n if (!entry.mirror && !entry.hide) {\n return { ...result, [orientation]: result[orientation] + entry.width };\n }\n\n return result;\n },\n { left: margin.left || 0, right: margin.right || 0 },\n );\n\n const offsetV = Object.keys(xAxisMap).reduce(\n (result, id) => {\n const entry = xAxisMap[id];\n const { orientation } = entry;\n\n if (!entry.mirror && !entry.hide) {\n return { ...result, [orientation]: get(result, `${orientation}`) + entry.height };\n }\n\n return result;\n },\n { top: margin.top || 0, bottom: margin.bottom || 0 },\n );\n\n let offset: ChartOffset = { ...offsetV, ...offsetH };\n\n const brushBottom = offset.bottom;\n\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\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\n const offsetWidth = width - offset.left - offset.right;\n const offsetHeight = height - offset.top - offset.bottom;\n\n return {\n 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\ntype AxisMapMap = {\n [axisMapId: string]: AxisMap;\n};\n\nexport type CategoricalChartFunc = (nextState: CategoricalChartState, event: any) => void;\n\nexport interface CategoricalChartProps {\n syncId?: number | string;\n syncMethod?: 'index' | 'value' | Function;\n compact?: boolean;\n width?: number;\n height?: number;\n dataKey?: DataKey<any>;\n data?: any[];\n layout?: LayoutType;\n stackOffset?: StackOffsetType;\n throttleDelay?: number;\n margin?: Margin;\n barCategoryGap?: number | string;\n barGap?: number | string;\n barSize?: number | string;\n maxBarSize?: number;\n style?: any;\n className?: string;\n children?: any;\n defaultShowTooltip?: boolean;\n onClick?: CategoricalChartFunc;\n onMouseLeave?: CategoricalChartFunc;\n onMouseEnter?: CategoricalChartFunc;\n onMouseMove?: CategoricalChartFunc;\n onMouseDown?: CategoricalChartFunc;\n onMouseUp?: CategoricalChartFunc;\n onContextMenu?: CategoricalChartFunc;\n onDoubleClick?: CategoricalChartFunc;\n reverseStackOrder?: boolean;\n id?: string;\n\n startAngle?: number;\n endAngle?: number;\n cx?: number | string;\n cy?: number | string;\n innerRadius?: number | string;\n outerRadius?: number | string;\n title?: string;\n desc?: string;\n accessibilityLayer?: boolean;\n role?: string;\n tabIndex?: number;\n}\n\ntype AxisObj = {\n xAxis?: XAxisProps;\n xAxisTicks?: Array<TickItem>;\n\n yAxis?: YAxisProps;\n yAxisTicks?: Array<TickItem>;\n\n zAxis?: ZAxisProps;\n zAxisTicks?: Array<TickItem>;\n\n angleAxis?: AngleAxisProps;\n angleAxisTicks?: Array<TickItem>;\n\n radiusAxis?: RadiusAxisProps;\n radiusAxisTicks?: Array<TickItem>;\n};\n\n// Determine the size of the axis, used for calculation of relative bar sizes\nconst getCartesianAxisSize = (axisObj: AxisObj, axisName: 'xAxis' | 'yAxis' | 'angleAxis' | 'radiusAxis') => {\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};\n\nexport const generateCategoricalChart = ({\n chartName,\n GraphicalChild,\n defaultTooltipEventType = 'axis',\n validateTooltipEventTypes = ['axis'],\n axisComponents,\n legendContent,\n formatAxisMap,\n defaultProps,\n}: CategoricalChartOptions) => {\n const getFormatItems = (props: CategoricalChartProps, currentState: CategoricalChartState): any[] => {\n const { graphicalItems, stackGroups, offset, updateId, dataStartIndex, dataEndIndex } = currentState;\n const { barSize, layout, barGap, barCategoryGap, maxBarSize: globalMaxBarSize } = props;\n const { numericAxisName, cateAxisName } = getAxisNameByLayout(layout);\n const hasBar = hasGraphicalBarItem(graphicalItems);\n\n const formattedItems = [] as any[];\n\n graphicalItems.forEach((item: ReactElement, index: number) => {\n const displayedData = getDisplayedData(props.data, { graphicalItems: [item], dataStartIndex, dataEndIndex });\n const itemProps =\n (item.type as any).defaultProps !== undefined\n ? { ...(item.type as any).defaultProps, ...item.props }\n : item.props;\n const { dataKey, maxBarSize: childMaxBarSize } = itemProps;\n // axisId of the numerical axis\n const numericAxisId = itemProps[`${numericAxisName}Id`];\n // axisId of the categorical axis\n const cateAxisId = itemProps[`${cateAxisName}Id`];\n\n const axisObjInitialValue: AxisObj = {};\n\n const axisObj: AxisObj = axisComponents.reduce((result: AxisObj, entry: BaseAxisProps): AxisObj => {\n // map of axisId to axis for a specific axis type\n const axisMap: AxisMap | undefined = currentState[`${entry.axisType}Map` as const];\n // axisId of axis we are currently computing\n const id: string = itemProps[`${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 invariant(\n (axisMap && axisMap[id]) || entry.axisType === 'zAxis',\n `Specifying a(n) ${entry.axisType}Id requires a corresponding ${\n entry.axisType\n // @ts-expect-error we should stop reading data from ReactElements\n }Id on the targeted graphical component ${item?.type?.displayName ?? ''}`,\n );\n\n // the axis we are currently formatting\n const axis = axisMap[id];\n\n return {\n ...result,\n [entry.axisType]: axis,\n [`${entry.axisType}Ticks`]: getTicksOfAxis(axis),\n };\n }, axisObjInitialValue);\n const cateAxis = axisObj[cateAxisName];\n const cateTicks = axisObj[`${cateAxisName}Ticks` as const];\n const stackedData =\n stackGroups &&\n stackGroups[numericAxisId] &&\n stackGroups[numericAxisId].hasStack &&\n getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n const itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n const bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n let barPosition: ReadonlyArray<BarPosition> = [];\n const sizeList =\n hasBar && getBarSizeList({ barSize, stackGroups, totalSize: getCartesianAxisSize(axisObj, cateAxisName) });\n\n if (itemIsBar) {\n // If it is bar, calculate the position of bar\n const maxBarSize: number = isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n const barBandSize: number = getBandSizeOfAxis(cateAxis, cateTicks, true) ?? maxBarSize ?? 0;\n barPosition = getBarPosition({\n barGap,\n barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize,\n });\n\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(pos => ({\n ...pos,\n position: { ...pos.position, offset: pos.position.offset - barBandSize / 2 },\n }));\n }\n }\n // @ts-expect-error we should stop reading data from ReactElements\n const composedFn = item && item.type && item.type.getComposedData;\n\n if (composedFn) {\n formattedItems.push({\n props: {\n ...composedFn({\n ...axisObj,\n displayedData,\n props,\n dataKey,\n item,\n bandSize,\n barPosition,\n offset,\n stackedData,\n layout,\n dataStartIndex,\n dataEndIndex,\n }),\n key: item.key || `item-${index}`,\n [numericAxisName]: axisObj[numericAxisName],\n [cateAxisName]: axisObj[cateAxisName],\n animationId: updateId,\n },\n childIndex: parseChildIndex(item, props.children),\n item,\n });\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 const updateStateOfAxisMapsOffsetAndStackGroups = (\n { props, dataStartIndex, dataEndIndex, updateId }: any,\n prevState?: CategoricalChartState,\n ): any => {\n if (!validateWidthHeight({ props })) {\n return null;\n }\n\n const { children, layout, stackOffset, data, reverseStackOrder } = props;\n const { numericAxisName, cateAxisName } = getAxisNameByLayout(layout);\n const graphicalItems = findAllByType(children, GraphicalChild);\n const stackGroups: AxisStackGroups = getStackGroupsByAxisId(\n data,\n graphicalItems,\n `${numericAxisName}Id`,\n `${cateAxisName}Id`,\n stackOffset,\n reverseStackOrder,\n );\n const axisObj: AxisMapMap = axisComponents.reduce((result: AxisMapMap, entry: BaseAxisProps): AxisMapMap => {\n const name = `${entry.axisType}Map`;\n\n return {\n ...result,\n [name]: getAxisMap(props, {\n ...entry,\n graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex,\n dataEndIndex,\n }),\n };\n }, {});\n\n const offset: ChartOffset = calculateOffset({ ...axisObj, props, graphicalItems }, prevState?.legendBBox);\n\n Object.keys(axisObj).forEach(key => {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n const cateAxisMap = axisObj[`${cateAxisName}Map`];\n const ticksObj = tooltipTicksGenerator(cateAxisMap);\n\n const formattedGraphicalItems = getFormatItems(props, {\n ...axisObj,\n dataStartIndex,\n dataEndIndex,\n updateId,\n graphicalItems,\n stackGroups,\n offset,\n });\n\n return {\n formattedGraphicalItems,\n graphicalItems,\n offset,\n stackGroups,\n ...ticksObj,\n ...axisObj,\n };\n };\n\n class CategoricalChartWrapper extends Component<CategoricalChartProps, CategoricalChartState> {\n static displayName = chartName;\n\n readonly eventEmitterSymbol: Symbol = Symbol('rechartsEventEmitter');\n\n clipPathId: string;\n\n accessibilityManager = new AccessibilityManager();\n\n throttleTriggeredAfterMouseMove: DebouncedFunc<typeof CategoricalChartWrapper.prototype.triggeredAfterMouseMove>;\n\n // todo join specific chart propTypes\n static defaultProps: CategoricalChartProps = {\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: { top: 5, right: 5, bottom: 5, left: 5 } as Margin,\n reverseStackOrder: false,\n syncMethod: 'index',\n ...defaultProps,\n };\n\n container?: HTMLElement;\n\n constructor(props: CategoricalChartProps) {\n super(props);\n\n this.clipPathId = `${props.id ?? uniqueId('recharts')}-clip`;\n\n // trigger 60fps\n this.throttleTriggeredAfterMouseMove = throttle(this.triggeredAfterMouseMove, props.throttleDelay ?? 1000 / 60);\n\n this.state = {};\n }\n\n componentDidMount() {\n this.addListener();\n\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: this.props.margin.left ?? 0,\n top: this.props.margin.top ?? 0,\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.triggeredAfterMouseMove,\n layout: this.props.layout,\n });\n this.displayDefaultTooltip();\n }\n\n displayDefaultTooltip() {\n const { children, data, height, layout } = this.props;\n\n const 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\n const { defaultIndex } = tooltipElem.props;\n\n // Protect against runtime errors\n if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length - 1) {\n return;\n }\n\n const activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n let activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n\n const independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n const dependentAxisCoord = (this.state.offset.top + height) / 2;\n\n const isHorizontal = layout === 'horizontal';\n let activeCoordinate = isHorizontal\n ? {\n x: independentAxisCoord,\n y: dependentAxisCoord,\n }\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 const scatterPlotElement = this.state.formattedGraphicalItems.find(\n ({ item }: { item: any }) => item.type.name === 'Scatter',\n );\n if (scatterPlotElement) {\n activeCoordinate = {\n ...activeCoordinate,\n ...scatterPlotElement.props.points[defaultIndex].tooltipPosition,\n };\n activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n }\n\n const nextState = {\n activeTooltipIndex: defaultIndex,\n isTooltipActive: true,\n activeLabel,\n activePayload,\n activeCoordinate,\n };\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 getSnapshotBeforeUpdate(\n prevProps: Readonly<CategoricalChartProps>,\n prevState: Readonly<CategoricalChartState>,\n ): null {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks,\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout,\n });\n }\n\n if (this.props.margin !== prevProps.margin) {\n this.accessibilityManager.setDetails({\n offset: {\n left: this.props.margin.left ?? 0,\n top: this.props.margin.top ?? 0,\n },\n });\n }\n\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n\n static getDerivedStateFromProps = (\n nextProps: CategoricalChartProps,\n prevState: CategoricalChartState,\n ): CategoricalChartState => {\n const { dataKey, data, children, width, height, layout, stackOffset, margin } = nextProps;\n const { dataStartIndex, dataEndIndex } = prevState;\n\n if (prevState.updateId === undefined) {\n const defaultState = createDefaultState(nextProps);\n return {\n ...defaultState,\n updateId: 0,\n ...updateStateOfAxisMapsOffsetAndStackGroups(\n {\n props: nextProps,\n ...defaultState,\n updateId: 0,\n },\n prevState,\n ),\n\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 (\n dataKey !== prevState.prevDataKey ||\n data !== prevState.prevData ||\n width !== prevState.prevWidth ||\n height !== prevState.prevHeight ||\n layout !== prevState.prevLayout ||\n stackOffset !== prevState.prevStackOffset ||\n !shallowEqual(margin, prevState.prevMargin)\n ) {\n const defaultState = createDefaultState(nextProps);\n\n // Fixes https://github.com/recharts/recharts/issues/2143\n const 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\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\n const updatesToState = {\n // Update the current tooltip data (in case it changes without mouse interaction)\n ...getTooltipData(prevState, data, layout),\n updateId: prevState.updateId + 1,\n };\n\n const newState = {\n ...defaultState,\n ...keepFromPrevState,\n ...updatesToState,\n };\n\n return {\n ...newState,\n ...updateStateOfAxisMapsOffsetAndStackGroups(\n {\n props: nextProps,\n ...newState,\n },\n prevState,\n ),\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 // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n const brush = findChildByType(children, Brush);\n\n const startIndex = brush ? brush.props?.startIndex ?? dataStartIndex : dataStartIndex;\n const endIndex = brush ? brush.props?.endIndex ?? dataEndIndex : dataEndIndex;\n const hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n\n // update configuration in children\n const hasGlobalData = !isNil(data);\n const newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n\n return {\n updateId: newUpdateId,\n ...updateStateOfAxisMapsOffsetAndStackGroups(\n {\n props: nextProps,\n ...prevState,\n updateId: newUpdateId,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n },\n prevState,\n ),\n prevChildren: children,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n };\n }\n\n return null;\n };\n\n componentDidUpdate(prevProps: CategoricalChartProps) {\n // Check to see if the Tooltip updated. If so, re-check default tooltip position\n if (\n !isChildrenEqual(\n [findChildByType(prevProps.children, Tooltip)],\n [findChildByType(this.props.children, Tooltip)],\n )\n ) {\n this.displayDefaultTooltip();\n }\n }\n\n componentWillUnmount() {\n this.removeListener();\n this.throttleTriggeredAfterMouseMove.cancel();\n }\n\n getTooltipEventType(): TooltipEventType {\n const tooltipItem = findChildByType(this.props.children, Tooltip);\n\n if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n const eventType = tooltipItem.props.shared ? 'axis' : 'item';\n\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\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 getMouseInfo(event: MousePointer) {\n if (!this.container) {\n return null;\n }\n\n const element = this.container;\n const boundingRect = element.getBoundingClientRect();\n const containerOffset = getOffset(boundingRect);\n const e = {\n chartX: Math.round(event.pageX - containerOffset.left),\n chartY: Math.round(event.pageY - containerOffset.top),\n };\n\n const scale = boundingRect.width / element.offsetWidth || 1;\n\n const rangeObj = this.inRange(e.chartX, e.chartY, scale);\n if (!rangeObj) {\n return null;\n }\n\n const { xAxisMap, yAxisMap } = this.state;\n const tooltipEventType = this.getTooltipEventType();\n const toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n const xScale = getAnyElementOfObject(xAxisMap).scale;\n const yScale = getAnyElementOfObject(yAxisMap).scale;\n const xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n const yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n\n return { ...e, xValue, yValue, ...toolTipData };\n }\n\n if (toolTipData) {\n return {\n ...e,\n ...toolTipData,\n };\n }\n\n return null;\n }\n\n inRange(x: number, y: number, scale = 1): any {\n const { layout } = this.props;\n\n const [scaledX, scaledY] = [x / scale, y / scale];\n\n if (layout === 'horizontal' || layout === 'vertical') {\n const { offset } = this.state;\n\n const isInRange =\n scaledX >= offset.left &&\n scaledX <= offset.left + offset.width &&\n scaledY >= offset.top &&\n scaledY <= offset.top + offset.height;\n\n return isInRange ? { x: scaledX, y: scaledY } : null;\n }\n\n const { angleAxisMap, radiusAxisMap } = this.state;\n\n if (angleAxisMap && radiusAxisMap) {\n const angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({ x: scaledX, y: scaledY }, angleAxis);\n }\n\n return null;\n }\n\n parseEventsOfWrapper() {\n const { children } = this.props;\n const tooltipEventType = this.getTooltipEventType();\n const tooltipItem = findChildByType(children, Tooltip);\n let tooltipEvents: any = {};\n\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 onDoubleClick: this.handleDoubleClick,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd,\n onContextMenu: this.handleContextMenu,\n };\n }\n }\n\n // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n const outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n\n return {\n ...outerEvents,\n ...tooltipEvents,\n };\n }\n\n addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n\n removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n\n handleLegendBBoxUpdate = (box: DOMRect | null) => {\n if (box) {\n const { dataStartIndex, dataEndIndex, updateId } = this.state;\n\n this.setState({\n legendBBox: box,\n ...updateStateOfAxisMapsOffsetAndStackGroups(\n {\n props: this.props,\n dataStartIndex,\n dataEndIndex,\n updateId,\n },\n { ...this.state, legendBBox: box },\n ),\n });\n }\n };\n\n handleReceiveSyncEvent = (cId: number | string, data: CategoricalChartState, emitter: Symbol) => {\n if (this.props.syncId === cId) {\n if (emitter === this.eventEmitterSymbol && typeof this.props.syncMethod !== 'function') {\n return;\n }\n\n this.applySyncEvent(data);\n }\n };\n\n handleBrushChange = ({ startIndex, endIndex }: { startIndex: number; endIndex: number }) => {\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== this.state.dataStartIndex || endIndex !== this.state.dataEndIndex) {\n const { updateId } = this.state;\n\n this.setState(() => ({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n ...updateStateOfAxisMapsOffsetAndStackGroups(\n {\n props: this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId,\n },\n this.state,\n ),\n }));\n\n this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n });\n }\n };\n\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */\n handleMouseEnter = (e: React.MouseEvent) => {\n const mouse = this.getMouseInfo(e);\n\n if (mouse) {\n const nextState: CategoricalChartState = { ...mouse, isTooltipActive: true };\n this.setState(nextState);\n this.triggerSyncEvent(nextState);\n\n const { onMouseEnter } = this.props;\n if (isFunction(onMouseEnter)) {\n onMouseEnter(nextState, e);\n }\n }\n };\n\n triggeredAfterMouseMove = (e: MousePointer): any => {\n const mouse = this.getMouseInfo(e);\n const nextState: CategoricalChartState = mouse ? { ...mouse, isTooltipActive: true } : { isTooltipActive: false };\n\n this.setState(nextState);\n this.triggerSyncEvent(nextState);\n\n const { onMouseMove } = this.props;\n if (isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\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 handleItemMouseEnter = (el: any) => {\n this.setState(() => ({\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || { x: el.cx, y: el.cy },\n }));\n };\n\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */\n handleItemMouseLeave = () => {\n this.setState(() => ({\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\n handleMouseMove = (e: MousePointer & Partial<Omit<React.MouseEvent, keyof MousePointer>>): void => {\n e.persist();\n this.throttleTriggeredAfterMouseMove(e);\n };\n\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */\n handleMouseLeave = (e: any) => {\n this.throttleTriggeredAfterMouseMove.cancel();\n const nextState: CategoricalChartState = { isTooltipActive: false };\n\n this.setState(nextState);\n this.triggerSyncEvent(nextState);\n\n const { onMouseLeave } = this.props;\n if (isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n };\n\n handleOuterEvent = (e: React.MouseEvent | React.TouchEvent) => {\n const eventName = getReactEventByType(e);\n\n const event = get(this.props, `${eventName}`);\n if (eventName && isFunction(event)) {\n let mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = this.getMouseInfo((e as React.TouchEvent).changedTouches[0]);\n } else {\n mouse = this.getMouseInfo(e as React.MouseEvent);\n }\n\n event(mouse ?? {}, e);\n }\n };\n\n handleClick = (e: React.MouseEvent) => {\n const mouse = this.getMouseInfo(e);\n\n if (mouse) {\n const nextState: CategoricalChartState = { ...mouse, isTooltipActive: true };\n this.setState(nextState);\n this.triggerSyncEvent(nextState);\n\n const { onClick } = this.props;\n if (isFunction(onClick)) {\n onClick(nextState, e);\n }\n }\n };\n\n handleMouseDown = (e: React.MouseEvent | React.Touch) => {\n const { onMouseDown } = this.props;\n\n if (isFunction(onMouseDown)) {\n const nextState: CategoricalChartState = this.getMouseInfo(e);\n onMouseDown(nextState, e);\n }\n };\n\n handleMouseUp = (e: React.MouseEvent | React.Touch) => {\n const { onMouseUp } = this.props;\n\n if (isFunction(onMouseUp)) {\n const nextState: CategoricalChartState = this.getMouseInfo(e);\n onMouseUp(nextState, e);\n }\n };\n\n handleTouchMove = (e: React.TouchEvent) => {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n }\n };\n\n handleTouchStart = (e: React.TouchEvent) => {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n this.handleMouseDown(e.changedTouches[0]);\n }\n };\n\n handleTouchEnd = (e: React.TouchEvent) => {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n this.handleMouseUp(e.changedTouches[0]);\n }\n };\n\n handleDoubleClick = (e: React.MouseEvent) => {\n const { onDoubleClick } = this.props;\n\n if (isFunction(onDoubleClick)) {\n const nextState: CategoricalChartState = this.getMouseInfo(e);\n onDoubleClick(nextState, e);\n }\n };\n\n handleContextMenu = (e: React.MouseEvent) => {\n const { onContextMenu } = this.props;\n\n if (isFunction(onContextMenu)) {\n const nextState: CategoricalChartState = this.getMouseInfo(e);\n onContextMenu(nextState, e);\n }\n };\n\n triggerSyncEvent = (data: CategoricalChartState) => {\n if (this.props.syncId !== undefined) {\n eventCenter.emit(SYNC_EVENT, this.props.syncId, data, this.eventEmitterSymbol);\n }\n };\n\n applySyncEvent = (data: CategoricalChartState) => {\n const { layout, syncMethod } = this.props;\n const { updateId } = this.state;\n const { dataStartIndex, dataEndIndex } = data;\n\n if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n this.setState({\n dataStartIndex,\n dataEndIndex,\n ...updateStateOfAxisMapsOffsetAndStackGroups(\n {\n props: this.props,\n dataStartIndex,\n dataEndIndex,\n updateId,\n },\n this.state,\n ),\n });\n } else if (data.activeTooltipIndex !== undefined) {\n const { chartX, chartY } = data;\n let { activeTooltipIndex } = data;\n const { offset, tooltipTicks } = this.state;\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 (let i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n const viewBox: CartesianViewBox = { ...offset, x: offset.left, y: offset.top };\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n const validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n const validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n const activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n const activePayload: any = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n const activeCoordinate = tooltipTicks[activeTooltipIndex]\n ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate,\n }\n : originCoordinate;\n\n this.setState({\n ...data,\n activeLabel,\n activeCoordinate,\n activePayload,\n activeTooltipIndex,\n });\n } else {\n this.setState(data);\n }\n };\n\n filterFormatItem(item: any, displayName: any, childIndex: any) {\n const { formattedGraphicalItems } = this.state;\n\n for (let i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n const entry = formattedGraphicalItems[i];\n\n if (\n entry.item === item ||\n entry.props.key === item.key ||\n (displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex)\n ) {\n return entry;\n }\n }\n\n return null;\n }\n\n renderCursor = (element: ReactElement) => {\n const { isTooltipActive, activeCoordinate, activePayload, offset, activeTooltipIndex, tooltipAxisBandSize } =\n this.state;\n const 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 const isActive: boolean = element.props.active ?? isTooltipActive;\n const { layout } = this.props;\n const key = element.key || '_recharts-cursor';\n\n return (\n <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 };\n\n renderPolarAxis = (element: React.ReactElement<any>, displayName: string, index: number) => {\n const axisType = get(element, 'type.axisType');\n const axisMap = get(this.state, `${axisType}Map`);\n const elementDefaultProps = (element.type as any).defaultProps;\n const elementProps =\n elementDefaultProps !== undefined ? { ...elementDefaultProps, ...element.props } : element.props;\n const axisOption: BaseAxisProps | undefined = axisMap && axisMap[elementProps[`${axisType}Id`]];\n\n return cloneElement(element, {\n ...axisOption,\n className: clsx(axisType, axisOption.className),\n key: element.key || `${displayName}-${index}`,\n ticks: getTicksOfAxis(axisOption, true),\n });\n };\n\n renderPolarGrid = (element: React.ReactElement): React.ReactElement => {\n const { radialLines, polarAngles, polarRadius } = element.props;\n const { radiusAxisMap, angleAxisMap } = this.state;\n const radiusAxis = getAnyElementOfObject(radiusAxisMap);\n const angleAxis = getAnyElementOfObject(angleAxisMap);\n const { cx, cy, innerRadius, outerRadius } = angleAxis;\n\n return cloneElement(element, {\n polarAngles: Array.isArray(polarAngles)\n ? polarAngles\n : getTicksOfAxis(angleAxis, true).map((entry: any) => entry.coordinate),\n polarRadius: Array.isArray(polarRadius)\n ? polarRadius\n : getTicksOfAxis(radiusAxis, true).map((entry: any) => entry.coordinate),\n cx,\n cy,\n innerRadius,\n outerRadius,\n key: element.key || 'polar-grid',\n radialLines,\n });\n };\n\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */\n renderLegend = (): React.ReactElement => {\n const { formattedGraphicalItems } = this.state;\n const { children, width, height } = this.props;\n const margin = this.props.margin || {};\n const legendWidth: number = width - (margin.left || 0) - (margin.right || 0);\n const props = getLegendProps({\n children,\n formattedGraphicalItems,\n legendWidth,\n legendContent,\n });\n\n if (!props) {\n return null;\n }\n\n const { item, ...otherProps } = props;\n\n return cloneElement(item, {\n ...otherProps,\n chartWidth: width,\n chartHeight: height,\n margin,\n onBBoxUpdate: this.handleLegendBBoxUpdate,\n });\n };\n\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */\n renderTooltip = (): React.ReactElement => {\n const { children, accessibilityLayer } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (!tooltipItem) {\n return null;\n }\n\n const { isTooltipActive, activeCoordinate, activePayload, activeLabel, offset } = this.state;\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 const isActive = tooltipItem.props.active ?? isTooltipActive;\n\n return cloneElement(tooltipItem, {\n viewBox: { ...offset, x: offset.left, y: offset.top },\n active: isActive,\n label: activeLabel,\n payload: isActive ? activePayload : [],\n coordinate: activeCoordinate,\n accessibilityLayer,\n });\n };\n\n renderBrush = (element: React.ReactElement) => {\n const { margin, data } = this.props;\n const { offset, dataStartIndex, dataEndIndex, updateId } = this.state;\n\n // TODO: update brush when children update\n return cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(this.handleBrushChange, element.props.onChange),\n data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y)\n ? element.props.y\n : 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-${updateId}`,\n });\n };\n\n renderReferenceElement = (element: React.ReactElement, displayName: string, index: number): React.ReactElement => {\n if (!element) {\n return null;\n }\n const { clipPathId } = this;\n const { xAxisMap, yAxisMap, offset } = this.state;\n const elementDefaultProps = (element.type as any).defaultProps || {};\n const { xAxisId = elementDefaultProps.xAxisId, yAxisId = elementDefaultProps.yAxisId } = element.props;\n\n return cloneElement(element, {\n key: element.key || `${displayName}-${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,\n });\n };\n\n static renderActiveDot = (option: any, props: any, key: string): React.ReactElement => {\n let dot;\n\n if (isValidElement(option)) {\n dot = cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = <Dot {...props} />;\n }\n\n return (\n <Layer className=\"recharts-active-dot\" key={key}>\n {dot}\n </Layer>\n );\n };\n\n renderActivePoints = ({ item, activePoint, basePoint, childIndex, isRange }: any) => {\n const result = [];\n // item is not a React Element so we don't need to resolve defaultProps.\n const { key } = item.props;\n const itemItemProps =\n item.item.type.defaultProps !== undefined\n ? { ...item.item.type.defaultProps, ...item.item.props }\n : item.item.props;\n const { activeDot, dataKey } = itemItemProps;\n const dotProps = {\n index: childIndex,\n 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),\n ...adaptEventHandlers(activeDot),\n };\n\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps, `${key}-activePoint-${childIndex}`));\n\n if (basePoint) {\n result.push(\n CategoricalChartWrapper.renderActiveDot(\n activeDot,\n {\n ...dotProps,\n cx: basePoint.x,\n cy: basePoint.y,\n },\n `${key}-basePoint-${childIndex}`,\n ),\n );\n } else if (isRange) {\n result.push(null);\n }\n\n return result;\n };\n\n renderGraphicChild = (element: React.ReactElement, displayName: string, index: number): any[] => {\n const item = this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n const tooltipEventType = this.getTooltipEventType();\n const { isTooltipActive, tooltipAxis, activeTooltipIndex, activeLabel } = this.state;\n const { children } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n // item is not a React Element so we don't need to resolve defaultProps\n const { points, isRange, baseLine } = item.props;\n const itemItemProps =\n item.item.type.defaultProps !== undefined\n ? { ...item.item.type.defaultProps, ...item.item.props }\n : item.item.props;\n const { activeDot, hide, activeBar, activeShape } = itemItemProps;\n const hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n let itemEvents = {};\n\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\n const graphicalItem = cloneElement(element, {\n // item is not a React Element so we don't need to resolve defaultProps\n ...item.props,\n ...itemEvents,\n });\n\n function findWithPayload(entry: any) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n\n if (hasActive) {\n if (activeTooltipIndex >= 0) {\n let activePoint, basePoint;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n const specifiedKey =\n typeof tooltipAxis.dataKey === 'function'\n ? findWithPayload\n : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points?.[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n\n if (activeShape || activeBar) {\n const activeIndex =\n element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n\n return [\n cloneElement(element, {\n // item is not a React Element so we don't need to resolve defaultProps\n ...item.props,\n ...itemEvents,\n activeIndex,\n }),\n null,\n null,\n ];\n }\n\n if (!isNil(activePoint)) {\n return [\n graphicalItem,\n ...this.renderActivePoints({\n item,\n activePoint,\n basePoint,\n childIndex: activeTooltipIndex,\n isRange,\n }),\n ];\n }\n } else {\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 const {\n graphicalItem: { item: xyItem = element, childIndex },\n } = this.getItemByXY(this.state.activeCoordinate) ?? { graphicalItem };\n\n const elementProps = {\n // `item` is not a React Element so we don't need to resolve defaultProps\n ...item.props,\n ...itemEvents,\n activeIndex: childIndex,\n };\n\n return [cloneElement(xyItem, elementProps), null, null];\n }\n }\n\n if (isRange) {\n return [graphicalItem, null, null];\n }\n\n return [graphicalItem, null];\n };\n\n renderCustomized = (element: React.ReactElement, displayName: string, index: number): React.ReactElement =>\n cloneElement(element, {\n key: `recharts-customized-${index}`,\n ...this.props,\n ...this.state,\n });\n\n renderClipPath() {\n const { clipPathId } = this;\n const {\n offset: { left, top, height, width },\n } = this.state;\n\n return (\n <defs>\n <clipPath id={clipPathId}>\n <rect x={left} y={top} height={height} width={width} />\n </clipPath>\n </defs>\n );\n }\n\n public getXScales() {\n const { xAxisMap } = this.state;\n\n return xAxisMap\n ? Object.entries(xAxisMap).reduce(\n (res: Record<string, Function>, [axisId, axisProps]: [string, BaseAxisProps]) => {\n return { ...res, [axisId]: (axisProps as BaseAxisProps).scale };\n },\n {},\n )\n : null;\n }\n\n public getYScales() {\n const { yAxisMap } = this.state;\n\n return yAxisMap\n ? Object.entries(yAxisMap).reduce(\n (res: Record<string, Function>, [axisId, axisProps]: [string, BaseAxisProps]) => {\n return { ...res, [axisId]: (axisProps as BaseAxisProps).scale };\n },\n {},\n )\n : null;\n }\n\n public getXScaleByAxisId(axisId: string) {\n return this.state.xAxisMap?.[axisId]?.scale;\n }\n\n public getYScaleByAxisId(axisId: string) {\n return this.state.yAxisMap?.[axisId]?.scale;\n }\n\n public getItemByXY(chartXY: { x: number; y: number }) {\n const { formattedGraphicalItems, activeItem } = this.state;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (let i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n const graphicalItem = formattedGraphicalItems[i];\n // graphicalItem is not a React Element so we don't need to resolve defaultProps\n const { props, item } = graphicalItem;\n const itemProps =\n item.type.defaultProps !== undefined ? { ...item.type.defaultProps, ...item.props } : item.props;\n const itemDisplayName = getDisplayName(item.type);\n\n if (itemDisplayName === 'Bar') {\n const activeBarItem = (props.data || []).find(\n (entry: { x: number; y: number; width: number; height: number }) => {\n return isInRectangle(chartXY, entry);\n },\n );\n\n if (activeBarItem) {\n return { graphicalItem, payload: activeBarItem };\n }\n } else if (itemDisplayName === 'RadialBar') {\n const activeBarItem = (props.data || []).find((entry: GeometrySector) => {\n return inRangeOfSector(chartXY, entry);\n });\n\n if (activeBarItem) {\n return { graphicalItem, payload: activeBarItem };\n }\n } else if (\n isFunnel(graphicalItem, activeItem) ||\n isPie(graphicalItem, activeItem) ||\n isScatter(graphicalItem, activeItem)\n ) {\n const activeIndex = getActiveShapeIndexForTooltip({\n graphicalItem,\n activeTooltipItem: activeItem,\n itemData: itemProps.data,\n });\n\n const childIndex = itemProps.activeIndex === undefined ? activeIndex : itemProps.activeIndex;\n\n return {\n graphicalItem: { ...graphicalItem, childIndex },\n payload: isScatter(graphicalItem, activeItem)\n ? itemProps.data[activeIndex]\n : graphicalItem.props.data[activeIndex],\n };\n }\n }\n }\n\n return null;\n }\n\n renderMap = {\n CartesianGrid: { handler: renderAsIs, once: true },\n ReferenceArea: { handler: this.renderReferenceElement },\n ReferenceLine: { handler: renderAsIs },\n ReferenceDot: { handler: this.renderReferenceElement },\n XAxis: { handler: renderAsIs },\n YAxis: { handler: renderAsIs },\n Brush: { handler: this.renderBrush, once: true },\n Bar: { handler: this.renderGraphicChild },\n Line: { handler: this.renderGraphicChild },\n Area: { handler: this.renderGraphicChild },\n Radar: { handler: this.renderGraphicChild },\n RadialBar: { handler: this.renderGraphicChild },\n Scatter: { handler: this.renderGraphicChild },\n Pie: { handler: this.renderGraphicChild },\n Funnel: { handler: this.renderGraphicChild },\n Tooltip: { handler: this.renderCursor, once: true },\n PolarGrid: { handler: this.renderPolarGrid, once: true },\n PolarAngleAxis: { handler: this.renderPolarAxis },\n PolarRadiusAxis: { handler: this.renderPolarAxis },\n Customized: { handler: this.renderCustomized },\n };\n\n render() {\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n const { children, className, width, height, style, compact, title, desc, ...others } = this.props;\n const attrs = filterProps(others, false);\n\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return (\n <ChartLayoutContextProvider\n state={this.state}\n width={this.props.width}\n height={this.props.height}\n clipPathId={this.clipPathId}\n >\n <Surface {...attrs} width={width} height={height} title={title} desc={desc}>\n {this.renderClipPath()}\n {renderByOrder(children, this.renderMap)}\n </Surface>\n </ChartLayoutContextProvider>\n );\n }\n\n if (this.props.accessibilityLayer) {\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = this.props.tabIndex ?? 0;\n // Set role to img by default (can be overwritten)\n attrs.role = this.props.role ?? 'application';\n attrs.onKeyDown = (e: any) => {\n this.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 = () => {\n this.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\n const events = this.parseEventsOfWrapper();\n return (\n <ChartLayoutContextProvider\n state={this.state}\n width={this.props.width}\n height={this.props.height}\n clipPathId={this.clipPathId}\n >\n <div\n className={clsx('recharts-wrapper', className)}\n style={{ position: 'relative', cursor: 'default', width, height, ...style }}\n {...events}\n ref={(node: HTMLDivElement) => {\n this.container = node;\n }}\n >\n <Surface {...attrs} width={width} height={height} title={title} desc={desc} style={FULL_WIDTH_AND_HEIGHT}>\n {this.renderClipPath()}\n {renderByOrder(children, this.renderMap)}\n </Surface>\n {this.renderLegend()}\n {this.renderTooltip()}\n </div>\n </ChartLayoutContextProvider>\n );\n }\n }\n\n const CategoricalChart = forwardRef<CategoricalChartWrapper, CategoricalChartProps>(function CategoricalChart(\n props: CategoricalChartProps,\n ref,\n ) {\n return <CategoricalChartWrapper {...props} ref={ref} />;\n });\n\n CategoricalChart.displayName = CategoricalChartWrapper.displayName;\n\n return CategoricalChart;\n};\n","import { isNumber } from './DataUtils';\nimport { AxisDomain, BaseAxisProps } from './types';\n\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(\n domain: AxisDomain,\n allowDataOverflow: boolean,\n axisType: BaseAxisProps['type'],\n): boolean {\n if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n const domainStart: unknown | null | undefined = domain?.[0];\n const domainEnd: unknown | null | undefined = 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\n return false;\n}\n","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const LineChart = generateCategoricalChart({\n chartName: 'LineChart',\n GraphicalChild: Line,\n axisComponents: [\n { axisType: 'xAxis', AxisComp: XAxis },\n { axisType: 'yAxis', AxisComp: YAxis },\n ],\n formatAxisMap,\n});\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [\n { axisType: 'xAxis', AxisComp: XAxis },\n { axisType: 'yAxis', AxisComp: YAxis },\n ],\n formatAxisMap,\n});\n","/**\n * @fileOverview Pie Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { Pie } from '../polar/Pie';\n\nexport const PieChart = generateCategoricalChart({\n chartName: 'PieChart',\n GraphicalChild: Pie,\n validateTooltipEventTypes: ['item'],\n defaultTooltipEventType: 'item',\n legendContent: 'children',\n axisComponents: [\n { axisType: 'angleAxis', AxisComp: PolarAngleAxis },\n { axisType: 'radiusAxis', AxisComp: PolarRadiusAxis },\n ],\n formatAxisMap,\n defaultProps: {\n layout: 'centric',\n startAngle: 0,\n endAngle: 360,\n cx: '50%',\n cy: '50%',\n innerRadius: 0,\n outerRadius: '80%',\n },\n});\n","export const COLOR_PANEL = [\n '#1890FF',\n '#66B5FF',\n '#41D9C7',\n '#2FC25B',\n '#6EDB8F',\n '#9AE65C',\n '#FACC14',\n '#E6965C',\n '#57AD71',\n '#223273',\n '#738AE6',\n '#7564CC',\n '#8543E0',\n '#A877ED',\n '#5C8EE6',\n '#13C2C2',\n '#70E0E0',\n '#5CA3E6',\n '#3436C7',\n '#8082FF',\n '#DD81E6',\n '#F04864',\n '#FA7D92',\n '#D598D9',\n];\n","import isNan from 'lodash/isNaN';\nimport isFunction from 'lodash/isFunction';\nimport omit from 'lodash/omit';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\n/**\n * @fileOverview TreemapChart\n */\nimport React, { PureComponent } from 'react';\nimport Smooth from 'react-smooth';\n\nimport { Tooltip } from '../component/Tooltip';\nimport { Layer } from '../container/Layer';\nimport { Surface } from '../container/Surface';\nimport { Polygon } from '../shape/Polygon';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { COLOR_PANEL } from '../util/Constants';\nimport { uniqueId } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { filterSvgElements, findChildByType, validateWidthHeight, filterProps } from '../util/ReactUtils';\nimport { AnimationDuration, AnimationTiming, DataKey, TreemapNode } from '../util/types';\n\nconst NODE_VALUE_KEY = 'value';\n\nconst computeNode = ({\n depth,\n node,\n index,\n valueKey,\n}: {\n depth: number;\n node: TreemapNode;\n index: number;\n valueKey: DataKey<any>;\n}) => {\n const { children } = node;\n const childDepth = depth + 1;\n const computedChildren =\n children && children.length\n ? children.map((child: TreemapNode, i: number) =>\n computeNode({ depth: childDepth, node: child, index: i, valueKey }),\n )\n : null;\n let nodeValue;\n\n if (children && children.length) {\n nodeValue = computedChildren.reduce((result: any, child: TreemapNode) => result + child[NODE_VALUE_KEY], 0);\n } else {\n // TODO need to verify valueKey\n nodeValue = isNan(node[valueKey as string]) || node[valueKey as string] <= 0 ? 0 : node[valueKey as string];\n }\n\n return {\n ...node,\n children: computedChildren,\n [NODE_VALUE_KEY]: nodeValue,\n depth,\n index,\n };\n};\n\nconst filterRect = (node: TreemapNode) => ({ x: node.x, y: node.y, width: node.width, height: node.height });\n\n// Compute the area for each child based on value & scale.\nconst getAreaOfChildren = (children: TreemapNode[], areaValueRatio: number) => {\n const ratio = areaValueRatio < 0 ? 0 : areaValueRatio;\n\n return children.map((child: TreemapNode) => {\n const area = child[NODE_VALUE_KEY] * ratio;\n\n return {\n ...child,\n area: isNan(area) || area <= 0 ? 0 : area,\n };\n });\n};\n\n// Computes the score for the specified row, as the worst aspect ratio.\nconst getWorstScore = (row: any, parentSize: number, aspectRatio: number) => {\n const parentArea = parentSize * parentSize;\n const rowArea = row.area * row.area;\n const { min, max } = row.reduce(\n (result: any, child: any) => ({\n min: Math.min(result.min, child.area),\n max: Math.max(result.max, child.area),\n }),\n { min: Infinity, max: 0 },\n );\n\n return rowArea\n ? Math.max((parentArea * max * aspectRatio) / rowArea, rowArea / (parentArea * min * aspectRatio))\n : Infinity;\n};\n\nconst horizontalPosition = (row: any, parentSize: number, parentRect: TreemapNode, isFlush: boolean) => {\n let rowHeight = parentSize ? Math.round(row.area / parentSize) : 0;\n\n if (isFlush || rowHeight > parentRect.height) {\n rowHeight = parentRect.height;\n }\n\n let curX = parentRect.x;\n let child;\n for (let i = 0, len = row.length; i < len; i++) {\n child = row[i];\n child.x = curX;\n child.y = parentRect.y;\n child.height = rowHeight;\n child.width = Math.min(rowHeight ? Math.round(child.area / rowHeight) : 0, parentRect.x + parentRect.width - curX);\n curX += child.width;\n }\n // add the remain x to the last one of row\n child.width += parentRect.x + parentRect.width - curX;\n\n return {\n ...parentRect,\n y: parentRect.y + rowHeight,\n height: parentRect.height - rowHeight,\n };\n};\n\nconst verticalPosition = (row: any, parentSize: number, parentRect: TreemapNode, isFlush: boolean): TreemapNode => {\n let rowWidth = parentSize ? Math.round(row.area / parentSize) : 0;\n\n if (isFlush || rowWidth > parentRect.width) {\n rowWidth = parentRect.width;\n }\n\n let curY = parentRect.y;\n let child;\n for (let i = 0, len = row.length; i < len; i++) {\n child = row[i];\n child.x = parentRect.x;\n child.y = curY;\n child.width = rowWidth;\n child.height = Math.min(rowWidth ? Math.round(child.area / rowWidth) : 0, parentRect.y + parentRect.height - curY);\n curY += child.height;\n }\n if (child) {\n child.height += parentRect.y + parentRect.height - curY;\n }\n\n return {\n ...parentRect,\n x: parentRect.x + rowWidth,\n width: parentRect.width - rowWidth,\n };\n};\n\nconst position = (row: any, parentSize: number, parentRect: TreemapNode, isFlush: boolean): TreemapNode => {\n if (parentSize === parentRect.width) {\n return horizontalPosition(row, parentSize, parentRect, isFlush);\n }\n\n return verticalPosition(row, parentSize, parentRect, isFlush);\n};\n\n// Recursively arranges the specified node's children into squarified rows.\nconst squarify = (node: TreemapNode, aspectRatio: number): TreemapNode => {\n const { children } = node;\n\n if (children && children.length) {\n let rect = filterRect(node) as any;\n // maybe a bug\n const row = [] as any;\n let best = Infinity; // the best row score so far\n let child, score; // the current row score\n let size = Math.min(rect.width, rect.height); // initial orientation\n const scaleChildren = getAreaOfChildren(children, (rect.width * rect.height) / node[NODE_VALUE_KEY]);\n const tempChildren = scaleChildren.slice();\n\n row.area = 0;\n\n while (tempChildren.length > 0) {\n // row first\n // eslint-disable-next-line prefer-destructuring\n row.push((child = tempChildren[0]));\n row.area += child.area;\n\n score = getWorstScore(row, size, aspectRatio);\n if (score <= best) {\n // continue with this orientation\n tempChildren.shift();\n best = score;\n } else {\n // abort, and try a different orientation\n row.area -= row.pop().area;\n rect = position(row, size, rect, false);\n size = Math.min(rect.width, rect.height);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n\n if (row.length) {\n rect = position(row, size, rect, true);\n row.length = row.area = 0;\n }\n\n return {\n ...node,\n children: scaleChildren.map(c => squarify(c, aspectRatio)),\n };\n }\n\n return node;\n};\n\nexport interface Props {\n width?: number;\n\n height?: number;\n\n data?: any[];\n\n animationId?: number;\n\n style?: any;\n\n aspectRatio?: number;\n\n content?: React.ReactElement;\n\n fill?: string;\n\n stroke?: string;\n\n className?: string;\n\n nameKey?: DataKey<any>;\n\n dataKey?: DataKey<any>;\n\n children?: any;\n\n // optional values flat/nest, flat show whole treemap, nest only show depth=1 node\n type?: 'flat' | 'nest';\n\n colorPanel?: [];\n\n // customize nest index content\n nestIndexContent?: React.ReactElement | ((item: any, i: number) => any);\n\n onAnimationStart?: () => void;\n\n onAnimationEnd?: () => void;\n\n onMouseEnter?: (node: TreemapNode, e: any) => void;\n\n onMouseLeave?: (node: TreemapNode, e: any) => void;\n\n onClick?: (node: TreemapNode) => void;\n\n isAnimationActive?: boolean;\n\n isUpdateAnimationActive?: boolean;\n\n animationBegin?: number;\n\n animationDuration?: AnimationDuration;\n\n animationEasing?: AnimationTiming;\n}\n\ninterface State {\n isTooltipActive: boolean;\n\n isAnimationFinished: boolean;\n\n activeNode?: TreemapNode;\n\n formatRoot?: TreemapNode;\n\n currentRoot?: TreemapNode;\n\n nestIndex?: TreemapNode[];\n\n prevData?: any[];\n\n prevType?: 'flat' | 'nest';\n\n prevWidth?: number;\n\n prevHeight?: number;\n\n prevDataKey?: DataKey<any>;\n\n prevAspectRatio?: number;\n}\n\nconst defaultState: State = {\n isTooltipActive: false,\n\n isAnimationFinished: false,\n\n activeNode: null as TreemapNode,\n\n formatRoot: null as TreemapNode,\n\n currentRoot: null as TreemapNode,\n\n nestIndex: [] as TreemapNode[],\n};\n\nexport class Treemap extends PureComponent<Props, State> {\n static displayName = 'Treemap';\n\n static defaultProps = {\n aspectRatio: 0.5 * (1 + Math.sqrt(5)),\n dataKey: 'value',\n type: 'flat',\n isAnimationActive: !Global.isSsr,\n isUpdateAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'linear',\n };\n\n state = {\n ...defaultState,\n };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n if (\n nextProps.data !== prevState.prevData ||\n nextProps.type !== prevState.prevType ||\n nextProps.width !== prevState.prevWidth ||\n nextProps.height !== prevState.prevHeight ||\n nextProps.dataKey !== prevState.prevDataKey ||\n nextProps.aspectRatio !== prevState.prevAspectRatio\n ) {\n const root = computeNode({\n depth: 0,\n node: { children: nextProps.data, x: 0, y: 0, width: nextProps.width, height: nextProps.height } as TreemapNode,\n index: 0,\n valueKey: nextProps.dataKey,\n });\n const formatRoot = squarify(root, nextProps.aspectRatio);\n\n return {\n ...prevState,\n formatRoot,\n currentRoot: root,\n nestIndex: [root],\n prevAspectRatio: nextProps.aspectRatio,\n prevData: nextProps.data,\n prevWidth: nextProps.width,\n prevHeight: nextProps.height,\n prevDataKey: nextProps.dataKey,\n prevType: nextProps.type,\n };\n }\n\n return null;\n }\n\n handleMouseEnter(node: TreemapNode, e: any) {\n e.persist();\n const { onMouseEnter, children } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (tooltipItem) {\n this.setState(\n {\n isTooltipActive: true,\n activeNode: node,\n },\n () => {\n if (onMouseEnter) {\n onMouseEnter(node, e);\n }\n },\n );\n } else if (onMouseEnter) {\n onMouseEnter(node, e);\n }\n }\n\n handleMouseLeave(node: TreemapNode, e: any) {\n e.persist();\n const { onMouseLeave, children } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (tooltipItem) {\n this.setState(\n {\n isTooltipActive: false,\n activeNode: null,\n },\n () => {\n if (onMouseLeave) {\n onMouseLeave(node, e);\n }\n },\n );\n } else if (onMouseLeave) {\n onMouseLeave(node, e);\n }\n }\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n this.setState({ isAnimationFinished: true });\n\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n this.setState({ isAnimationFinished: false });\n\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n handleClick(node: TreemapNode) {\n const { onClick, type } = this.props;\n if (type === 'nest' && node.children) {\n const { width, height, dataKey, aspectRatio } = this.props;\n const root = computeNode({\n depth: 0,\n node: { ...node, x: 0, y: 0, width, height },\n index: 0,\n valueKey: dataKey,\n });\n\n const formatRoot = squarify(root, aspectRatio);\n\n const { nestIndex } = this.state;\n nestIndex.push(node);\n\n this.setState({\n formatRoot,\n currentRoot: root,\n nestIndex,\n });\n }\n if (onClick) {\n onClick(node);\n }\n }\n\n handleNestIndex(node: TreemapNode, i: number) {\n let { nestIndex } = this.state;\n const { width, height, dataKey, aspectRatio } = this.props;\n const root = computeNode({\n depth: 0,\n node: { ...node, x: 0, y: 0, width, height },\n index: 0,\n valueKey: dataKey,\n });\n\n const formatRoot = squarify(root, aspectRatio);\n\n nestIndex = nestIndex.slice(0, i + 1);\n this.setState({\n formatRoot,\n currentRoot: node,\n nestIndex,\n });\n }\n\n renderItem(content: any, nodeProps: TreemapNode, isLeaf: boolean): React.ReactElement {\n const {\n isAnimationActive,\n animationBegin,\n animationDuration,\n animationEasing,\n isUpdateAnimationActive,\n type,\n animationId,\n colorPanel,\n } = this.props;\n const { isAnimationFinished } = this.state;\n const { width, height, x, y, depth } = nodeProps;\n const translateX = parseInt(`${(Math.random() * 2 - 1) * width}`, 10);\n let event = {} as any;\n if (isLeaf || type === 'nest') {\n event = {\n onMouseEnter: this.handleMouseEnter.bind(this, nodeProps),\n onMouseLeave: this.handleMouseLeave.bind(this, nodeProps),\n onClick: this.handleClick.bind(this, nodeProps),\n };\n }\n\n if (!isAnimationActive) {\n return (\n <Layer {...event}>\n {(this.constructor as any).renderContentItem(\n content,\n {\n ...nodeProps,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n width,\n height,\n x,\n y,\n },\n type,\n colorPanel,\n )}\n </Layer>\n );\n }\n\n return (\n <Smooth\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n key={`treemap-${animationId}`}\n from={{ x, y, width, height }}\n to={{ x, y, width, height }}\n onAnimationStart={this.handleAnimationStart}\n onAnimationEnd={this.handleAnimationEnd}\n >\n {({ x: currX, y: currY, width: currWidth, height: currHeight }: TreemapNode) => (\n <Smooth\n from={`translate(${translateX}px, ${translateX}px)`}\n to=\"translate(0, 0)\"\n attributeName=\"transform\"\n begin={animationBegin}\n easing={animationEasing}\n isActive={isAnimationActive}\n duration={animationDuration}\n >\n <Layer {...event}>\n {(() => {\n // when animation Duration , only render depth=1 nodes\n if (depth > 2 && !isAnimationFinished) {\n return null;\n }\n return (this.constructor as any).renderContentItem(\n content,\n {\n ...nodeProps,\n isAnimationActive,\n isUpdateAnimationActive: !isUpdateAnimationActive,\n width: currWidth,\n height: currHeight,\n x: currX,\n y: currY,\n },\n type,\n colorPanel,\n );\n })()}\n </Layer>\n </Smooth>\n )}\n </Smooth>\n );\n }\n\n static renderContentItem(\n content: any,\n nodeProps: TreemapNode,\n type: string,\n colorPanel: string[],\n ): React.ReactElement {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, nodeProps);\n }\n if (isFunction(content)) {\n return content(nodeProps);\n }\n // optimize default shape\n const { x, y, width, height, index } = nodeProps;\n let arrow = null;\n if (width > 10 && height > 10 && nodeProps.children && type === 'nest') {\n arrow = (\n <Polygon\n points={[\n { x: x + 2, y: y + height / 2 },\n { x: x + 6, y: y + height / 2 + 3 },\n { x: x + 2, y: y + height / 2 + 6 },\n ]}\n />\n );\n }\n let text = null;\n const nameSize = getStringSize(nodeProps.name);\n if (width > 20 && height > 20 && nameSize.width < width && nameSize.height < height) {\n text = (\n <text x={x + 8} y={y + height / 2 + 7} fontSize={14}>\n {nodeProps.name}\n </text>\n );\n }\n\n const colors = colorPanel || COLOR_PANEL;\n return (\n <g>\n <Rectangle\n fill={nodeProps.depth < 2 ? colors[index % colors.length] : 'rgba(255,255,255,0)'}\n stroke=\"#fff\"\n {...omit(nodeProps, 'children')}\n role=\"img\"\n />\n {arrow}\n {text}\n </g>\n );\n }\n\n renderNode(root: TreemapNode, node: TreemapNode): React.ReactElement {\n const { content, type } = this.props;\n const nodeProps = { ...filterProps(this.props, false), ...node, root };\n const isLeaf = !node.children || !node.children.length;\n\n const { currentRoot } = this.state;\n const isCurrentRootChild = (currentRoot.children || []).filter(\n (item: TreemapNode) => item.depth === node.depth && item.name === node.name,\n );\n\n if (!isCurrentRootChild.length && root.depth && type === 'nest') {\n return null;\n }\n\n return (\n <Layer\n key={`recharts-treemap-node-${nodeProps.x}-${nodeProps.y}-${nodeProps.name}`}\n className={`recharts-treemap-depth-${node.depth}`}\n >\n {this.renderItem(content, nodeProps, isLeaf)}\n {node.children && node.children.length\n ? node.children.map((child: TreemapNode) => this.renderNode(node, child))\n : null}\n </Layer>\n );\n }\n\n renderAllNodes(): React.ReactElement {\n const { formatRoot } = this.state;\n\n if (!formatRoot) {\n return null;\n }\n\n return this.renderNode(formatRoot, formatRoot);\n }\n\n renderTooltip(): React.ReactElement {\n const { children, nameKey } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (!tooltipItem) {\n return null;\n }\n\n const { width, height } = this.props;\n const { isTooltipActive, activeNode } = this.state;\n const viewBox = { x: 0, y: 0, width, height };\n const coordinate = activeNode\n ? {\n x: activeNode.x + activeNode.width / 2,\n y: activeNode.y + activeNode.height / 2,\n }\n : null;\n const payload =\n isTooltipActive && activeNode\n ? [\n {\n payload: activeNode,\n name: getValueByDataKey(activeNode, nameKey, ''),\n value: getValueByDataKey(activeNode, NODE_VALUE_KEY),\n },\n ]\n : [];\n\n return React.cloneElement(tooltipItem as React.DetailedReactHTMLElement<any, HTMLElement>, {\n viewBox,\n active: isTooltipActive,\n coordinate,\n label: '',\n payload,\n });\n }\n\n // render nest treemap\n renderNestIndex(): React.ReactElement {\n const { nameKey, nestIndexContent } = this.props;\n const { nestIndex } = this.state;\n\n return (\n <div className=\"recharts-treemap-nest-index-wrapper\" style={{ marginTop: '8px', textAlign: 'center' }}>\n {nestIndex.map((item: TreemapNode, i: number) => {\n // TODO need to verify nameKey type\n const name = get(item, nameKey as string, 'root');\n let content = null;\n if (React.isValidElement(nestIndexContent)) {\n content = React.cloneElement(nestIndexContent, item, i);\n }\n if (isFunction(nestIndexContent)) {\n content = nestIndexContent(item, i);\n } else {\n content = name;\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n onClick={this.handleNestIndex.bind(this, item, i)}\n key={`nest-index-${uniqueId()}`}\n className=\"recharts-treemap-nest-index-box\"\n style={{\n cursor: 'pointer',\n display: 'inline-block',\n padding: '0 7px',\n background: '#000',\n color: '#fff',\n marginRight: '3px',\n }}\n >\n {content}\n </div>\n );\n })}\n </div>\n );\n }\n\n render() {\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n const { width, height, className, style, children, type, ...others } = this.props;\n const attrs = filterProps(others, false);\n\n return (\n <div\n className={clsx('recharts-wrapper', className)}\n style={{ ...style, position: 'relative', cursor: 'default', width, height }}\n role=\"region\"\n >\n <Surface {...attrs} width={width} height={type === 'nest' ? height - 30 : height}>\n {this.renderAllNodes()}\n {filterSvgElements(children)}\n </Surface>\n {this.renderTooltip()}\n {type === 'nest' && this.renderNestIndex()}\n </div>\n );\n }\n}\n","/**\n * @file TreemapChart\n */\nimport React, { PureComponent, ReactElement, SVGProps } from 'react';\nimport maxBy from 'lodash/maxBy';\nimport min from 'lodash/min';\nimport get from 'lodash/get';\nimport sumBy from 'lodash/sumBy';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Rectangle, Props as RectangleProps } from '../shape/Rectangle';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { filterSvgElements, validateWidthHeight, findChildByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { Margin, DataKey, SankeyLink, SankeyNode } from '../util/types';\n\nconst defaultCoordinateOfTooltip = { x: 0, y: 0 };\n\nconst interpolationGenerator = (a: number, b: number) => {\n const ka = +a;\n const kb = b - ka;\n return (t: any) => ka + kb * t;\n};\nconst centerY = (node: SankeyNode) => node.y + node.dy / 2;\nconst getValue = (entry: LinkDataItem) => (entry && entry.value) || 0;\nconst getSumOfIds = (links: LinkDataItem[], ids: number[]) =>\n ids.reduce((result: any, id: any) => result + getValue(links[id]), 0);\nconst getSumWithWeightedSource = (tree: any, links: SankeyLink[], ids: number[]) =>\n ids.reduce((result: any, id: any) => {\n const link = links[id];\n const sourceNode = tree[link.source];\n\n return result + centerY(sourceNode) * getValue(links[id]);\n }, 0);\nconst getSumWithWeightedTarget = (tree: any, links: SankeyLink[], ids: number[]) =>\n ids.reduce((result: number, id: number) => {\n const link = links[id];\n const targetNode = tree[link.target];\n\n return result + centerY(targetNode) * getValue(links[id]);\n }, 0);\nconst ascendingY = (a: any, b: any) => a.y - b.y;\n\nconst searchTargetsAndSources = (links: LinkDataItem[], id: number) => {\n const sourceNodes: number[] = [];\n const sourceLinks: number[] = [];\n const targetNodes: number[] = [];\n const targetLinks: number[] = [];\n\n for (let i = 0, len = links.length; i < len; i++) {\n const link = links[i];\n\n if (link.source === id) {\n targetNodes.push(link.target);\n targetLinks.push(i);\n }\n\n if (link.target === id) {\n sourceNodes.push(link.source);\n sourceLinks.push(i);\n }\n }\n\n return { sourceNodes, sourceLinks, targetLinks, targetNodes };\n};\n\nconst updateDepthOfTargets = (tree: any, curNode: any) => {\n const { targetNodes } = curNode;\n\n for (let i = 0, len = targetNodes.length; i < len; i++) {\n const target = tree[targetNodes[i]];\n\n if (target) {\n target.depth = Math.max(curNode.depth + 1, target.depth);\n\n updateDepthOfTargets(tree, target);\n }\n }\n};\n\nconst getNodesTree = ({ nodes, links }: SankeyData, width: number, nodeWidth: number): any => {\n const tree = nodes.map((entry: any, index: number) => {\n const result = searchTargetsAndSources(links, index);\n\n return {\n ...entry,\n ...result,\n value: Math.max(getSumOfIds(links, result.sourceLinks), getSumOfIds(links, result.targetLinks)),\n depth: 0,\n };\n });\n\n for (let i = 0, len = tree.length; i < len; i++) {\n const node = tree[i];\n\n if (!node.sourceNodes.length) {\n updateDepthOfTargets(tree, node);\n }\n }\n const maxDepth = maxBy(tree, (entry: SankeyNode) => entry.depth).depth;\n\n if (maxDepth >= 1) {\n const childWidth = (width - nodeWidth) / maxDepth;\n for (let i = 0, len = tree.length; i < len; i++) {\n const node = tree[i];\n\n if (!node.targetNodes.length) {\n node.depth = maxDepth;\n }\n node.x = node.depth * childWidth;\n node.dx = nodeWidth;\n }\n }\n\n return { tree, maxDepth };\n};\n\nconst getDepthTree = (tree: any): any[] => {\n const result = [];\n\n for (let i = 0, len = tree.length; i < len; i++) {\n const node = tree[i];\n\n if (!result[node.depth]) {\n result[node.depth] = [];\n }\n\n result[node.depth].push(node);\n }\n\n return result;\n};\n\nconst updateYOfTree = (depthTree: any, height: number, nodePadding: number, links: any) => {\n const yRatio: number = min(\n depthTree.map((nodes: any) => (height - (nodes.length - 1) * nodePadding) / sumBy(nodes, getValue)),\n );\n\n for (let d = 0, maxDepth = depthTree.length; d < maxDepth; d++) {\n for (let i = 0, len = depthTree[d].length; i < len; i++) {\n const node = depthTree[d][i];\n\n node.y = i;\n node.dy = node.value * yRatio;\n }\n }\n\n return links.map((link: any) => ({ ...link, dy: getValue(link) * yRatio }));\n};\n\nconst resolveCollisions = (depthTree: any[], height: number, nodePadding: number, sort = true) => {\n for (let i = 0, len = depthTree.length; i < len; i++) {\n const nodes = depthTree[i];\n const n = nodes.length;\n\n // Sort by the value of y\n if (sort) {\n nodes.sort(ascendingY);\n }\n\n let y0 = 0;\n for (let j = 0; j < n; j++) {\n const node = nodes[j];\n const dy = y0 - node.y;\n\n if (dy > 0) {\n node.y += dy;\n }\n\n y0 = node.y + node.dy + nodePadding;\n }\n\n y0 = height + nodePadding;\n for (let j = n - 1; j >= 0; j--) {\n const node = nodes[j];\n const dy = node.y + node.dy + nodePadding - y0;\n\n if (dy > 0) {\n node.y -= dy;\n y0 = node.y;\n } else {\n break;\n }\n }\n }\n};\n\nconst relaxLeftToRight = (tree: any, depthTree: any, links: any, alpha: any) => {\n for (let i = 0, maxDepth = depthTree.length; i < maxDepth; i++) {\n const nodes = depthTree[i];\n\n for (let j = 0, len = nodes.length; j < len; j++) {\n const node = nodes[j];\n\n if (node.sourceLinks.length) {\n const sourceSum = getSumOfIds(links, node.sourceLinks);\n const weightedSum = getSumWithWeightedSource(tree, links, node.sourceLinks);\n const y = weightedSum / sourceSum;\n\n node.y += (y - centerY(node)) * alpha;\n }\n }\n }\n};\nconst relaxRightToLeft = (tree: any, depthTree: any, links: any, alpha: any) => {\n for (let i = depthTree.length - 1; i >= 0; i--) {\n const nodes = depthTree[i];\n\n for (let j = 0, len = nodes.length; j < len; j++) {\n const node = nodes[j];\n\n if (node.targetLinks.length) {\n const targetSum = getSumOfIds(links, node.targetLinks);\n const weightedSum = getSumWithWeightedTarget(tree, links, node.targetLinks);\n const y = weightedSum / targetSum;\n\n node.y += (y - centerY(node)) * alpha;\n }\n }\n }\n};\nconst updateYOfLinks = (tree: any, links: any) => {\n for (let i = 0, len = tree.length; i < len; i++) {\n const node = tree[i];\n let sy = 0;\n let ty = 0;\n\n node.targetLinks.sort((a: any, b: any) => tree[links[a].target].y - tree[links[b].target].y);\n node.sourceLinks.sort((a: any, b: any) => tree[links[a].source].y - tree[links[b].source].y);\n\n for (let j = 0, tLen = node.targetLinks.length; j < tLen; j++) {\n const link = links[node.targetLinks[j]];\n\n if (link) {\n link.sy = sy;\n sy += link.dy;\n }\n }\n\n for (let j = 0, sLen = node.sourceLinks.length; j < sLen; j++) {\n const link = links[node.sourceLinks[j]];\n\n if (link) {\n link.ty = ty;\n ty += link.dy;\n }\n }\n }\n};\n\nconst computeData = ({\n data,\n width,\n height,\n iterations,\n nodeWidth,\n nodePadding,\n sort,\n}: {\n data: SankeyData;\n width: number;\n height: number;\n iterations: any;\n nodeWidth: number;\n nodePadding: number;\n sort: boolean;\n}): {\n nodes: SankeyNode[];\n links: SankeyLink[];\n} => {\n const { links } = data;\n const { tree } = getNodesTree(data, width, nodeWidth);\n const depthTree = getDepthTree(tree);\n const newLinks = updateYOfTree(depthTree, height, nodePadding, links);\n\n resolveCollisions(depthTree, height, nodePadding, sort);\n\n let alpha = 1;\n for (let i = 1; i <= iterations; i++) {\n relaxRightToLeft(tree, depthTree, newLinks, (alpha *= 0.99));\n\n resolveCollisions(depthTree, height, nodePadding, sort);\n\n relaxLeftToRight(tree, depthTree, newLinks, alpha);\n\n resolveCollisions(depthTree, height, nodePadding, sort);\n }\n\n updateYOfLinks(tree, newLinks);\n\n return { nodes: tree, links: newLinks };\n};\n\nconst getCoordinateOfTooltip = (el: any, type: string) => {\n if (type === 'node') {\n return { x: el.x + el.width / 2, y: el.y + el.height / 2 };\n }\n\n return {\n x: (el.sourceX + el.targetX) / 2,\n y: (el.sourceY + el.targetY) / 2,\n };\n};\n\nconst getPayloadOfTooltip = (el: any, type: string, nameKey: DataKey<any>) => {\n const { payload } = el;\n if (type === 'node') {\n return [\n {\n payload: el,\n name: getValueByDataKey(payload, nameKey, ''),\n value: getValueByDataKey(payload, 'value'),\n },\n ];\n }\n if (payload.source && payload.target) {\n const sourceName = getValueByDataKey(payload.source, nameKey, '');\n const targetName = getValueByDataKey(payload.target, nameKey, '');\n\n return [\n {\n payload: el,\n name: `${sourceName} - ${targetName}`,\n value: getValueByDataKey(payload, 'value'),\n },\n ];\n }\n\n return [];\n};\n\ninterface LinkDataItem {\n source: number;\n target: number;\n [key: string]: any;\n}\n\ninterface SankeyData {\n nodes: any[];\n links: LinkDataItem[];\n}\n\ntype SankeyNodeOptions = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | RectangleProps;\n\ntype SankeyLinkOptions =\n | ReactElement<SVGElement>\n | ((props: any) => ReactElement<SVGElement>)\n | SVGProps<SVGPathElement>;\n\ninterface SankeyProps {\n nameKey?: DataKey<any>;\n\n dataKey?: DataKey<any>;\n\n width?: number;\n\n height?: number;\n\n data: SankeyData;\n\n nodePadding?: number;\n\n nodeWidth?: number;\n\n linkCurvature?: number;\n\n iterations?: number;\n\n // TODO object func\n node?: SankeyNodeOptions;\n\n link?: SankeyLinkOptions;\n\n style?: any;\n\n className?: string;\n\n children?: any;\n\n margin?: Margin;\n\n onClick?: any;\n\n onMouseEnter?: any;\n\n onMouseLeave?: any;\n\n sort?: boolean;\n}\n\ntype Props = SVGProps<SVGElement> & SankeyProps;\n\ninterface State {\n activeElement?: any;\n activeElementType?: any;\n isTooltipActive: boolean;\n nodes: SankeyNode[];\n links: SankeyLink[];\n sort?: boolean;\n\n prevData?: SankeyData;\n prevWidth?: number;\n prevHeight?: number;\n prevMargin?: Margin;\n prevIterations?: number;\n prevNodeWidth?: number;\n prevNodePadding?: number;\n prevSort?: boolean;\n}\n\nexport class Sankey extends PureComponent<Props, State> {\n static displayName = 'Sankey';\n\n static defaultProps = {\n nameKey: 'name',\n dataKey: 'value',\n nodePadding: 10,\n nodeWidth: 10,\n linkCurvature: 0.5,\n iterations: 32,\n margin: { top: 5, right: 5, bottom: 5, left: 5 },\n sort: true,\n };\n\n state = {\n activeElement: null as any,\n activeElementType: null as any,\n isTooltipActive: false,\n nodes: [] as SankeyNode[],\n links: [] as SankeyLink[],\n };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n const { data, width, height, margin, iterations, nodeWidth, nodePadding, sort } = nextProps;\n\n if (\n data !== prevState.prevData ||\n width !== prevState.prevWidth ||\n height !== prevState.prevHeight ||\n !shallowEqual(margin, prevState.prevMargin) ||\n iterations !== prevState.prevIterations ||\n nodeWidth !== prevState.prevNodeWidth ||\n nodePadding !== prevState.prevNodePadding ||\n sort !== prevState.sort\n ) {\n const contentWidth = width - ((margin && margin.left) || 0) - ((margin && margin.right) || 0);\n const contentHeight = height - ((margin && margin.top) || 0) - ((margin && margin.bottom) || 0);\n const { links, nodes } = computeData({\n data,\n width: contentWidth,\n height: contentHeight,\n iterations,\n nodeWidth,\n nodePadding,\n sort,\n });\n\n return {\n ...prevState,\n nodes,\n links,\n\n prevData: data,\n prevWidth: iterations,\n prevHeight: height,\n prevMargin: margin,\n prevNodePadding: nodePadding,\n prevNodeWidth: nodeWidth,\n prevIterations: iterations,\n prevSort: sort,\n };\n }\n\n return null;\n }\n\n handleMouseEnter(el: React.ReactElement, type: string, e: any) {\n const { onMouseEnter, children } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (tooltipItem) {\n this.setState(\n prev => {\n if (tooltipItem.props.trigger === 'hover') {\n return { ...prev, activeElement: el, activeElementType: type, isTooltipActive: true };\n }\n return prev;\n },\n () => {\n if (onMouseEnter) {\n onMouseEnter(el, type, e);\n }\n },\n );\n } else if (onMouseEnter) {\n onMouseEnter(el, type, e);\n }\n }\n\n handleMouseLeave(el: React.ReactElement, type: string, e: any) {\n const { onMouseLeave, children } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (tooltipItem) {\n this.setState(\n prev => {\n if (tooltipItem.props.trigger === 'hover') {\n return { ...prev, activeElement: undefined, activeElementType: undefined, isTooltipActive: false };\n }\n return prev;\n },\n () => {\n if (onMouseLeave) {\n onMouseLeave(el, type, e);\n }\n },\n );\n } else if (onMouseLeave) {\n onMouseLeave(el, type, e);\n }\n }\n\n handleClick(el: React.ReactElement, type: string, e: any) {\n const { onClick, children } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (tooltipItem && tooltipItem.props.trigger === 'click') {\n if (this.state.isTooltipActive) {\n this.setState(prev => {\n return {\n ...prev,\n activeElement: undefined as any,\n activeElementType: undefined as any,\n isTooltipActive: false,\n };\n });\n } else {\n this.setState(prev => {\n return {\n ...prev,\n activeElement: el,\n activeElementType: type,\n isTooltipActive: true,\n };\n });\n }\n }\n\n if (onClick) onClick(el, type, e);\n }\n\n static renderLinkItem(option: any, props: any) {\n if (React.isValidElement(option)) {\n return React.cloneElement(option, props);\n }\n if (isFunction(option)) {\n return option(props);\n }\n\n const { sourceX, sourceY, sourceControlX, targetX, targetY, targetControlX, linkWidth, ...others } = props;\n\n return (\n <path\n className=\"recharts-sankey-link\"\n d={`\n M${sourceX},${sourceY}\n C${sourceControlX},${sourceY} ${targetControlX},${targetY} ${targetX},${targetY}\n `}\n fill=\"none\"\n stroke=\"#333\"\n strokeWidth={linkWidth}\n strokeOpacity=\"0.2\"\n {...filterProps(others, false)}\n />\n );\n }\n\n renderLinks(links: SankeyLink[], nodes: SankeyNode[]) {\n const { linkCurvature, link: linkContent, margin } = this.props;\n const top = get(margin, 'top') || 0;\n const left = get(margin, 'left') || 0;\n\n return (\n <Layer className=\"recharts-sankey-links\" key=\"recharts-sankey-links\">\n {links.map((link: SankeyLink, i: number) => {\n const { sy: sourceRelativeY, ty: targetRelativeY, dy: linkWidth } = link;\n const source = nodes[link.source];\n const target = nodes[link.target];\n const sourceX = source.x + source.dx + left;\n const targetX = target.x + left;\n const interpolationFunc = interpolationGenerator(sourceX, targetX);\n const sourceControlX = interpolationFunc(linkCurvature);\n const targetControlX = interpolationFunc(1 - linkCurvature);\n const sourceY = source.y + sourceRelativeY + linkWidth / 2 + top;\n const targetY = target.y + targetRelativeY + linkWidth / 2 + top;\n\n const linkProps = {\n sourceX,\n targetX,\n sourceY,\n targetY,\n sourceControlX,\n targetControlX,\n sourceRelativeY,\n targetRelativeY,\n linkWidth,\n index: i,\n payload: { ...link, source, target },\n ...filterProps(linkContent, false),\n };\n const events = {\n onMouseEnter: this.handleMouseEnter.bind(this, linkProps, 'link'),\n onMouseLeave: this.handleMouseLeave.bind(this, linkProps, 'link'),\n onClick: this.handleClick.bind(this, linkProps, 'link'),\n };\n\n return (\n <Layer key={`link-${link.source}-${link.target}-${link.value}`} {...events}>\n {(this.constructor as any).renderLinkItem(linkContent, linkProps)}\n </Layer>\n );\n })}\n </Layer>\n );\n }\n\n static renderNodeItem(option: any, props: Props) {\n if (React.isValidElement(option)) {\n return React.cloneElement(option, props);\n }\n if (isFunction(option)) {\n return option(props);\n }\n\n return (\n <Rectangle\n className=\"recharts-sankey-node\"\n fill=\"#0088fe\"\n fillOpacity=\"0.8\"\n {...filterProps(props, false)}\n role=\"img\"\n />\n );\n }\n\n renderNodes(nodes: SankeyNode[]) {\n const { node: nodeContent, margin } = this.props;\n const top = get(margin, 'top') || 0;\n const left = get(margin, 'left') || 0;\n\n return (\n <Layer className=\"recharts-sankey-nodes\" key=\"recharts-sankey-nodes\">\n {nodes.map((node, i) => {\n const { x, y, dx, dy } = node;\n const nodeProps = {\n ...filterProps(nodeContent, false),\n x: x + left,\n y: y + top,\n width: dx,\n height: dy,\n index: i,\n payload: node,\n };\n const events = {\n onMouseEnter: this.handleMouseEnter.bind(this, nodeProps, 'node'),\n onMouseLeave: this.handleMouseLeave.bind(this, nodeProps, 'node'),\n onClick: this.handleClick.bind(this, nodeProps, 'node'),\n };\n\n return (\n <Layer key={`node-${node.x}-${node.y}-${node.value}`} {...events}>\n {(this.constructor as any).renderNodeItem(nodeContent, nodeProps)}\n </Layer>\n );\n })}\n </Layer>\n );\n }\n\n renderTooltip(): ReactElement {\n const { children, width, height, nameKey } = this.props;\n const tooltipItem = findChildByType(children, Tooltip);\n\n if (!tooltipItem) {\n return null;\n }\n\n const { isTooltipActive, activeElement, activeElementType } = this.state;\n const viewBox = { x: 0, y: 0, width, height };\n const coordinate = activeElement\n ? getCoordinateOfTooltip(activeElement, activeElementType)\n : defaultCoordinateOfTooltip;\n const payload = activeElement ? getPayloadOfTooltip(activeElement, activeElementType, nameKey) : [];\n\n return React.cloneElement(tooltipItem, {\n viewBox,\n active: isTooltipActive,\n coordinate,\n label: '',\n payload,\n });\n }\n\n render() {\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n const { width, height, className, style, children, ...others } = this.props;\n const { links, nodes } = this.state;\n const attrs = filterProps(others, false);\n\n return (\n <div\n className={clsx('recharts-wrapper', className)}\n style={{ ...style, position: 'relative', cursor: 'default', width, height }}\n role=\"region\"\n >\n <Surface {...attrs} width={width} height={height}>\n {filterSvgElements(children)}\n {this.renderLinks(links, nodes)}\n {this.renderNodes(nodes)}\n </Surface>\n {this.renderTooltip()}\n </div>\n );\n }\n}\n","/**\n * @fileOverview Radar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Radar } from '../polar/Radar';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\n\nexport const RadarChart = generateCategoricalChart({\n chartName: 'RadarChart',\n GraphicalChild: Radar,\n axisComponents: [\n { axisType: 'angleAxis', AxisComp: PolarAngleAxis },\n { axisType: 'radiusAxis', AxisComp: PolarRadiusAxis },\n ],\n formatAxisMap,\n defaultProps: {\n layout: 'centric',\n startAngle: 90,\n endAngle: -270,\n cx: '50%',\n cy: '50%',\n innerRadius: 0,\n outerRadius: '80%',\n },\n});\n","/**\n * @fileOverview Scatter Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Scatter } from '../cartesian/Scatter';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { ZAxis } from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const ScatterChart = generateCategoricalChart({\n chartName: 'ScatterChart',\n GraphicalChild: Scatter,\n defaultTooltipEventType: 'item',\n validateTooltipEventTypes: ['item'],\n axisComponents: [\n { axisType: 'xAxis', AxisComp: XAxis },\n { axisType: 'yAxis', AxisComp: YAxis },\n { axisType: 'zAxis', AxisComp: ZAxis },\n ],\n formatAxisMap,\n});\n","/**\n * @fileOverview Area Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const AreaChart = generateCategoricalChart({\n chartName: 'AreaChart',\n GraphicalChild: Area,\n axisComponents: [\n { axisType: 'xAxis', AxisComp: XAxis },\n { axisType: 'yAxis', AxisComp: YAxis },\n ],\n formatAxisMap,\n});\n","/**\n * @fileOverview Radar Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { RadialBar } from '../polar/RadialBar';\n\nexport const RadialBarChart = generateCategoricalChart({\n chartName: 'RadialBarChart',\n GraphicalChild: RadialBar,\n legendContent: 'children',\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [\n { axisType: 'angleAxis', AxisComp: PolarAngleAxis },\n { axisType: 'radiusAxis', AxisComp: PolarRadiusAxis },\n ],\n formatAxisMap,\n defaultProps: {\n layout: 'radial',\n startAngle: 0,\n endAngle: 360,\n cx: '50%',\n cy: '50%',\n innerRadius: 0,\n outerRadius: '80%',\n },\n});\n","/**\n * @fileOverview Composed Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { Bar } from '../cartesian/Bar';\nimport { Line } from '../cartesian/Line';\nimport { Scatter } from '../cartesian/Scatter';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { ZAxis } from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const ComposedChart = generateCategoricalChart({\n chartName: 'ComposedChart',\n GraphicalChild: [Line, Area, Bar, Scatter],\n axisComponents: [\n { axisType: 'xAxis', AxisComp: XAxis },\n { axisType: 'yAxis', AxisComp: YAxis },\n { axisType: 'zAxis', AxisComp: ZAxis },\n ],\n formatAxisMap,\n});\n","import React, { useState } from 'react';\nimport { scaleLinear } from 'victory-vendor/d3-scale';\nimport clsx from 'clsx';\nimport { findChildByType } from '../util/ReactUtils';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Sector } from '../shape/Sector';\nimport { Text } from '../component/Text';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { Tooltip } from '../component/Tooltip';\n\nexport interface SunburstData {\n [key: string]: any;\n name: string;\n value?: number;\n fill?: string;\n children?: SunburstData[];\n}\n\ninterface TextOptions {\n fontFamily?: string;\n fontWeight?: string;\n paintOrder?: string;\n stroke?: string;\n fill?: string;\n fontSize?: string;\n pointerEvents?: string;\n}\n\nexport interface SunburstChartProps {\n className?: string;\n data?: SunburstData;\n width?: number;\n height?: number;\n padding?: number;\n dataKey?: string;\n /* Padding between each hierarchical level. */\n ringPadding?: number;\n /* The radius of the inner circle at the center of the chart. */\n innerRadius?: number;\n /* Outermost edge of the chart. Defaults to the max possible radius for a circle inscribed in the chart container */\n outerRadius?: number;\n /** The abscissa of pole in polar coordinate */\n cx?: number;\n /** The ordinate of pole in polar coordinate */\n cy?: number;\n /** Angle in degrees from which the chart should start. */\n startAngle?: number;\n /** Angle, in degrees, at which the chart should end. Can be used to generate partial sunbursts. */\n endAngle?: number;\n children?: React.ReactNode;\n fill?: string;\n stroke?: string;\n /* an object with svg text options to control the appearance of the chart labels. */\n textOptions?: TextOptions;\n\n onMouseEnter?: (node: SunburstData, e: React.MouseEvent) => void;\n\n onMouseLeave?: (node: SunburstData, e: React.MouseEvent) => void;\n\n onClick?: (node: SunburstData) => void;\n}\n\ninterface DrawArcOptions {\n radius: number;\n innerR: number;\n initialAngle: number;\n childColor?: string;\n}\n\nconst defaultTextProps = {\n fontWeight: 'bold',\n paintOrder: 'stroke fill',\n fontSize: '.75rem',\n stroke: '#FFF',\n fill: 'black',\n pointerEvents: 'none',\n};\n\nfunction getMaxDepthOf(node: SunburstData): number {\n if (!node.children || node.children.length === 0) return 1;\n\n // Calculate depth for each child and find the maximum\n const childDepths = node.children.map(d => getMaxDepthOf(d));\n return 1 + Math.max(...childDepths);\n}\n\nexport const SunburstChart = ({\n className,\n data,\n children,\n width,\n height,\n padding = 2,\n dataKey = 'value',\n ringPadding = 2,\n innerRadius = 50,\n fill = '#333',\n stroke = '#FFF',\n textOptions = defaultTextProps,\n outerRadius = Math.min(width, height) / 2,\n cx = width / 2,\n cy = height / 2,\n startAngle = 0,\n endAngle = 360,\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: SunburstChartProps) => {\n const [isTooltipActive, setIsTooltipActive] = useState(false);\n const [activeNode, setActiveNode] = useState<SunburstData | null>(null);\n\n const rScale = scaleLinear([0, data[dataKey]], [0, endAngle]);\n const treeDepth = getMaxDepthOf(data);\n const thickness = (outerRadius - innerRadius) / treeDepth;\n\n const sectors: React.ReactNode[] = [];\n const positions = new Map([]);\n\n // event handlers\n function handleMouseEnter(node: SunburstData, e: React.MouseEvent) {\n if (onMouseEnter) onMouseEnter(node, e);\n setActiveNode(node);\n\n setIsTooltipActive(true);\n }\n\n function handleMouseLeave(node: SunburstData, e: React.MouseEvent) {\n if (onMouseLeave) onMouseLeave(node, e);\n setActiveNode(null);\n setIsTooltipActive(false);\n }\n\n function handleClick(node: SunburstData) {\n if (onClick) onClick(node);\n }\n\n // recursively add nodes for each data point and its children\n function drawArcs(childNodes: SunburstData[] | undefined, options: DrawArcOptions): any {\n const { radius, innerR, initialAngle, childColor } = options;\n\n let currentAngle = initialAngle;\n\n if (!childNodes) return; // base case: no children of this node\n\n childNodes.forEach(d => {\n const arcLength = rScale(d[dataKey]);\n const start = currentAngle;\n // color priority - if there's a color on the individual point use that, otherwise use parent color or default\n const fillColor = d?.fill ?? childColor ?? fill;\n const { x: textX, y: textY } = polarToCartesian(0, 0, innerR + radius / 2, -(start + arcLength - arcLength / 2));\n currentAngle += arcLength;\n sectors.push(\n // TODO: Missing key warning. Can we use `key={d.name}`?\n <g aria-label={d.name} tabIndex={0}>\n <Sector\n onClick={() => handleClick(d)}\n onMouseEnter={e => handleMouseEnter(d, e)}\n onMouseLeave={e => handleMouseLeave(d, e)}\n fill={fillColor}\n stroke={stroke}\n strokeWidth={padding}\n startAngle={start}\n endAngle={start + arcLength}\n innerRadius={innerR}\n outerRadius={innerR + radius}\n cx={cx}\n cy={cy}\n />\n <Text {...textOptions} alignmentBaseline=\"middle\" textAnchor=\"middle\" x={textX + cx} y={cy - textY}>\n {d[dataKey]}\n </Text>\n </g>,\n );\n\n const { x: tooltipX, y: tooltipY } = polarToCartesian(cx, cy, innerR + radius / 2, start);\n positions.set(d.name, { x: tooltipX, y: tooltipY });\n\n return drawArcs(d.children, {\n radius,\n innerR: innerR + radius + ringPadding,\n initialAngle: start,\n childColor: fillColor,\n });\n });\n }\n\n drawArcs(data.children, { radius: thickness, innerR: innerRadius, initialAngle: startAngle });\n\n const layerClass = clsx('recharts-sunburst', className);\n\n function renderTooltip() {\n const tooltipComponent = findChildByType([children], Tooltip);\n\n if (!tooltipComponent || !activeNode) return null;\n\n const viewBox = { x: 0, y: 0, width, height };\n\n return React.cloneElement(tooltipComponent as React.DetailedReactHTMLElement<any, HTMLElement>, {\n viewBox,\n coordinate: positions.get(activeNode.name),\n payload: [activeNode],\n active: isTooltipActive,\n });\n }\n\n return (\n <div className={clsx('recharts-wrapper', className)} style={{ position: 'relative', width, height }} role=\"region\">\n <Surface width={width} height={height}>\n {children}\n <Layer className={layerClass}>{sectors}</Layer>\n </Surface>\n {renderTooltip()}\n </div>\n );\n};\n","import React, { SVGProps } from 'react';\nimport { FunnelProps, FunnelTrapezoidItem } from '../numberAxis/Funnel';\nimport { Props as TrapezoidProps } from '../shape/Trapezoid';\nimport { Shape, getPropsFromShapeOption } from './ActiveShapeUtils';\n\n// Trapezoid props is expecting x, y, height as numbers.\n// When props are being spread in from a user defined component in Funnel,\n// the prop types of an SVGElement have these typed as string | number.\n// This function will return the passed in props along with x, y, height as numbers.\nexport function typeGuardTrapezoidProps(option: SVGProps<SVGPathElement>, props: FunnelTrapezoidItem): TrapezoidProps {\n const xValue = `${props.x || option.x}`;\n const x = parseInt(xValue, 10);\n const yValue = `${props.y || option.y}`;\n const y = parseInt(yValue, 10);\n const heightValue = `${props?.height || option?.height}`;\n const height = parseInt(heightValue, 10);\n return {\n ...props,\n ...getPropsFromShapeOption(option),\n height,\n x,\n y,\n };\n}\n\ntype FunnelTrapezoidProps = { option: FunnelProps['activeShape'] } & FunnelTrapezoidItem;\n\nexport function FunnelTrapezoid(props: FunnelTrapezoidProps) {\n return <Shape shapeType=\"trapezoid\" propTransformer={typeGuardTrapezoidProps} {...props} />;\n}\n","/**\n * @fileOverview Render sectors of a funnel\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\nimport omit from 'lodash/omit';\nimport isEqual from 'lodash/isEqual';\n\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Props as TrapezoidProps } from '../shape/Trapezoid';\nimport { LabelList } from '../component/LabelList';\nimport { Cell, Props as CellProps } from '../component/Cell';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { interpolateNumber } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport {\n LegendType,\n TooltipType,\n AnimationTiming,\n ChartOffset,\n DataKey,\n adaptEventsOfChild,\n PresentationAttributesAdaptChildEvent,\n AnimationDuration,\n ActiveShape,\n} from '../util/types';\nimport { FunnelTrapezoid } from '../util/FunnelUtils';\n\nexport interface FunnelTrapezoidItem extends TrapezoidProps {\n value?: number | string;\n payload?: any;\n isActive: boolean;\n}\n\ninterface InternalFunnelProps {\n className?: string;\n dataKey: DataKey<any>;\n nameKey?: DataKey<any>;\n data?: any[];\n hide?: boolean;\n shape?: ActiveShape<FunnelTrapezoidItem, SVGPathElement>;\n activeShape?: ActiveShape<FunnelTrapezoidItem, SVGPathElement>;\n legendType?: LegendType;\n tooltipType?: TooltipType;\n activeIndex?: number | number[];\n lastShapeType?: 'triangle' | 'rectangle';\n reversed?: boolean;\n\n onAnimationStart?: () => void;\n onAnimationEnd?: () => void;\n\n isAnimationActive?: boolean;\n animateNewValues?: boolean;\n animationBegin?: number;\n animationDuration?: AnimationDuration;\n animationEasing?: AnimationTiming;\n id?: string;\n trapezoids?: FunnelTrapezoidItem[];\n animationId?: number;\n}\n\nexport type FunnelProps = PresentationAttributesAdaptChildEvent<any, SVGElement> & TrapezoidProps & InternalFunnelProps;\n\ninterface State {\n readonly prevTrapezoids?: FunnelTrapezoidItem[];\n readonly curTrapezoids?: FunnelTrapezoidItem[];\n readonly prevAnimationId?: number;\n readonly isAnimationFinished?: boolean;\n}\n\nexport class Funnel extends PureComponent<FunnelProps, State> {\n static displayName = 'Funnel';\n\n static defaultProps = {\n stroke: '#fff',\n fill: '#808080',\n legendType: 'rect',\n labelLine: true,\n hide: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 400,\n animationDuration: 1500,\n animationEasing: 'ease',\n nameKey: 'name',\n lastShapeType: 'triangle',\n };\n\n static getRealFunnelData = (item: Funnel) => {\n const { data, children } = item.props;\n const presentationProps = filterProps(item.props, false);\n const cells = findAllByType(children, Cell);\n\n if (data && data.length) {\n return data.map((entry: any, index: number) => ({\n payload: entry,\n ...presentationProps,\n ...entry,\n ...(cells && cells[index] && cells[index].props),\n }));\n }\n\n if (cells && cells.length) {\n return cells.map((cell: ReactElement<CellProps>) => ({ ...presentationProps, ...cell.props }));\n }\n\n return [];\n };\n\n static getRealWidthHeight = (item: Funnel, offset: ChartOffset) => {\n const customWidth = item.props.width;\n const { width, height, left, right, top, bottom } = offset;\n const realHeight = height;\n let realWidth = width;\n\n if (isNumber(customWidth)) {\n realWidth = customWidth;\n } else if (isString(customWidth)) {\n realWidth = (realWidth * parseFloat(customWidth)) / 100;\n }\n\n return {\n realWidth: realWidth - left - right - 50,\n realHeight: realHeight - bottom - top,\n offsetX: (width - realWidth) / 2,\n offsetY: (height - realHeight) / 2,\n };\n };\n\n static getComposedData = ({ item, offset }: { item: Funnel; offset: ChartOffset }) => {\n const funnelData = Funnel.getRealFunnelData(item);\n const { dataKey, nameKey, tooltipType, lastShapeType, reversed } = item.props;\n const { left, top } = offset;\n const { realHeight, realWidth, offsetX, offsetY } = Funnel.getRealWidthHeight(item, offset);\n const maxValue = Math.max.apply(\n null,\n funnelData.map((entry: any) => getValueByDataKey(entry, dataKey, 0)),\n );\n const len = funnelData.length;\n const rowHeight = realHeight / len;\n const parentViewBox = { x: offset.left, y: offset.top, width: offset.width, height: offset.height };\n\n let trapezoids = funnelData.map((entry: any, i: number) => {\n const rawVal = getValueByDataKey(entry, dataKey, 0);\n const name = getValueByDataKey(entry, nameKey, i);\n let val = rawVal;\n let nextVal;\n\n if (i !== len - 1) {\n nextVal = getValueByDataKey(funnelData[i + 1], dataKey, 0);\n\n if (nextVal instanceof Array) {\n [nextVal] = nextVal;\n }\n } else if (rawVal instanceof Array && rawVal.length === 2) {\n [val, nextVal] = rawVal;\n } else if (lastShapeType === 'rectangle') {\n nextVal = val;\n } else {\n nextVal = 0;\n }\n\n const x = ((maxValue - val) * realWidth) / (2 * maxValue) + top + 25 + offsetX;\n const y = rowHeight * i + left + offsetY;\n const upperWidth = (val / maxValue) * realWidth;\n const lowerWidth = (nextVal / maxValue) * realWidth;\n\n const tooltipPayload = [{ name, value: val, payload: entry, dataKey, type: tooltipType }];\n const tooltipPosition = {\n x: x + upperWidth / 2,\n y: y + rowHeight / 2,\n };\n\n return {\n x,\n y,\n width: Math.max(upperWidth, lowerWidth),\n upperWidth,\n lowerWidth,\n height: rowHeight,\n name,\n val,\n tooltipPayload,\n tooltipPosition,\n ...omit(entry, 'width'),\n payload: entry,\n parentViewBox,\n labelViewBox: {\n x: x + (upperWidth - lowerWidth) / 4,\n y,\n width: Math.abs(upperWidth - lowerWidth) / 2 + Math.min(upperWidth, lowerWidth),\n height: rowHeight,\n },\n };\n });\n\n if (reversed) {\n trapezoids = trapezoids.map((entry: any, index: number) => {\n const newY = entry.y - index * rowHeight + (len - 1 - index) * rowHeight;\n return {\n ...entry,\n upperWidth: entry.lowerWidth,\n lowerWidth: entry.upperWidth,\n x: entry.x - (entry.lowerWidth - entry.upperWidth) / 2,\n y: entry.y - index * rowHeight + (len - 1 - index) * rowHeight,\n tooltipPosition: { ...entry.tooltipPosition, y: newY + rowHeight / 2 },\n labelViewBox: {\n ...entry.labelViewBox,\n y: newY,\n },\n };\n });\n }\n\n return {\n trapezoids,\n data: funnelData,\n };\n };\n\n state: State = { isAnimationFinished: false };\n\n static getDerivedStateFromProps(nextProps: FunnelProps, prevState: State): State {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curTrapezoids: nextProps.trapezoids,\n prevTrapezoids: prevState.curTrapezoids,\n };\n }\n if (nextProps.trapezoids !== prevState.curTrapezoids) {\n return {\n curTrapezoids: nextProps.trapezoids,\n };\n }\n\n return null;\n }\n\n handleAnimationEnd = () => {\n const { onAnimationEnd } = this.props;\n this.setState({ isAnimationFinished: true });\n\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n handleAnimationStart = () => {\n const { onAnimationStart } = this.props;\n this.setState({ isAnimationFinished: false });\n\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n isActiveIndex(i: number) {\n const { activeIndex } = this.props;\n\n if (Array.isArray(activeIndex)) {\n return activeIndex.indexOf(i) !== -1;\n }\n\n return i === activeIndex;\n }\n\n renderTrapezoidsStatically(trapezoids: FunnelTrapezoidItem[]) {\n const { shape, activeShape } = this.props;\n\n return trapezoids.map((entry, i) => {\n const trapezoidOptions = this.isActiveIndex(i) ? activeShape : shape;\n const trapezoidProps = {\n ...entry,\n isActive: this.isActiveIndex(i),\n stroke: entry.stroke,\n };\n\n return (\n <Layer\n className=\"recharts-funnel-trapezoid\"\n {...adaptEventsOfChild(this.props, entry, i)}\n key={`trapezoid-${entry?.x}-${entry?.y}-${entry?.name}-${entry?.value}`}\n role=\"img\"\n >\n <FunnelTrapezoid option={trapezoidOptions} {...trapezoidProps} />\n </Layer>\n );\n });\n }\n\n renderTrapezoidsWithAnimation() {\n const { trapezoids, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } =\n this.props;\n const { prevTrapezoids } = this.state;\n\n return (\n <Animate\n begin={animationBegin}\n duration={animationDuration}\n isActive={isAnimationActive}\n easing={animationEasing}\n from={{ t: 0 }}\n to={{ t: 1 }}\n key={`funnel-${animationId}`}\n onAnimationStart={this.handleAnimationStart}\n onAnimationEnd={this.handleAnimationEnd}\n >\n {({ t }: { t: number }) => {\n const stepData = trapezoids.map((entry: any, index: number) => {\n const prev = prevTrapezoids && prevTrapezoids[index];\n\n if (prev) {\n const interpolatorX = interpolateNumber(prev.x, entry.x);\n const interpolatorY = interpolateNumber(prev.y, entry.y);\n const interpolatorUpperWidth = interpolateNumber(prev.upperWidth, entry.upperWidth);\n const interpolatorLowerWidth = interpolateNumber(prev.lowerWidth, entry.lowerWidth);\n const interpolatorHeight = interpolateNumber(prev.height, entry.height);\n\n return {\n ...entry,\n x: interpolatorX(t),\n y: interpolatorY(t),\n upperWidth: interpolatorUpperWidth(t),\n lowerWidth: interpolatorLowerWidth(t),\n height: interpolatorHeight(t),\n };\n }\n\n const interpolatorX = interpolateNumber(entry.x + entry.upperWidth / 2, entry.x);\n const interpolatorY = interpolateNumber(entry.y + entry.height / 2, entry.y);\n const interpolatorUpperWidth = interpolateNumber(0, entry.upperWidth);\n const interpolatorLowerWidth = interpolateNumber(0, entry.lowerWidth);\n const interpolatorHeight = interpolateNumber(0, entry.height);\n\n return {\n ...entry,\n x: interpolatorX(t),\n y: interpolatorY(t),\n upperWidth: interpolatorUpperWidth(t),\n lowerWidth: interpolatorLowerWidth(t),\n height: interpolatorHeight(t),\n };\n });\n return <Layer>{this.renderTrapezoidsStatically(stepData)}</Layer>;\n }}\n </Animate>\n );\n }\n\n renderTrapezoids() {\n const { trapezoids, isAnimationActive } = this.props;\n const { prevTrapezoids } = this.state;\n\n if (\n isAnimationActive &&\n trapezoids &&\n trapezoids.length &&\n (!prevTrapezoids || !isEqual(prevTrapezoids, trapezoids))\n ) {\n return this.renderTrapezoidsWithAnimation();\n }\n return this.renderTrapezoidsStatically(trapezoids);\n }\n\n render() {\n const { hide, trapezoids, className, isAnimationActive } = this.props;\n const { isAnimationFinished } = this.state;\n\n if (hide || !trapezoids || !trapezoids.length) {\n return null;\n }\n\n const layerClass = clsx('recharts-trapezoids', className);\n\n return (\n <Layer className={layerClass}>\n {this.renderTrapezoids()}\n {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, trapezoids)}\n </Layer>\n );\n }\n}\n","/**\n * @fileOverview Funnel Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Funnel } from '../numberAxis/Funnel';\n\nexport const FunnelChart = generateCategoricalChart({\n chartName: 'FunnelChart',\n GraphicalChild: Funnel,\n validateTooltipEventTypes: ['item'],\n defaultTooltipEventType: 'item',\n axisComponents: [],\n defaultProps: {\n layout: 'centric',\n },\n});\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__741__","__WEBPACK_EXTERNAL_MODULE__9660__","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","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","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","iteratee","predicate","resIndex","result","baseIndexOf","comparator","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","key","offset","string","split","baseAssignValue","object","objValue","copyObject","keys","source","keysIn","defineProperty","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","tag","isFunc","stacked","forEach","subValue","props","objectCreate","baseCreate","proto","baseForOwn","baseEach","createBaseEach","collection","isSymbol","current","computed","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","path","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","other","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isFunction","isMasked","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","nativeKeysIn","isProto","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","last","parent","cache","stringToPath","baseSlice","arrayBuffer","byteLength","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","copy","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","exec","lastIndex","symbolValueOf","symbol","typedArray","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","isNew","newValue","getSymbols","getSymbolsIn","coreJsData","eachFunc","iterable","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","trailing","join","findIndexFunc","baseRange","isIterateeCall","toFinite","noop","isPlainObject","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","message","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","flatten","freeGlobal","g","baseGetAllKeys","isKeyable","map","baseIsNative","getValue","getPrototype","overArg","getPrototypeOf","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","ctorString","hasFunc","reHasUnicode","nativeCreate","input","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","spreadableSymbol","isConcatSpreadable","reIsUint","type","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","splice","getMapData","memoize","freeProcess","process","nodeUtil","types","binding","transform","arg","otherArgs","freeSelf","self","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","baseIsMap","nodeIsMap","isNumber","objectCtorString","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseKeysIn","baseExtremum","baseGt","resolver","memoized","Cache","baseLt","baseUnset","customOmitClone","flatRest","omit","paths","CLONE_DEEP_FLAG","baseProperty","basePropertyDeep","range","createRange","baseSome","baseOrderBy","baseRest","sortBy","baseSum","debounce","INFINITY","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","baseUniq","upperFirst","createCaseFirst","u","for","f","h","m","$$typeof","isFragment","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","definition","o","enumerable","globalThis","window","prop","nmd","children","mathSign","isPercent","isString","lodashIsNumber","isNan","isNumOrStr","idCounter","uniqueId","getPercentValue","percent","totalValue","validate","parseFloat","getAnyElementOfObject","interpolateNumber","numberA","numberB","findEntryInArray","ary","specifiedKey","specifiedValue","compareValues","localeCompare","getTime","shallowEqual","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","svg","polygon","polyline","EventKeys","adaptEventHandlers","newHandler","inputProps","isValidElement","out","adaptEventsOfChild","_typeof","item","originalHandler","getEventHandlerOfChild","REACT_BROWSER_EVENT_MAP","click","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","contextmenu","dblclick","getDisplayName","Comp","displayName","lastChildren","lastResult","toArray","Children","child","isNil","findAllByType","childType","findChildByType","validateWidthHeight","el","_el$props","width","height","SVG_TAGS","isSvgElement","hasClipDot","dot","filterSvgElements","svgElements","filterProps","includeEvents","svgElementType","_inputProps","_FilteredElementKeyMa","matchingElementTypeKeys","startsWith","isValidSpreadableProp","isChildrenEqual","nextChildren","prevChildren","isSingleChildEqual","nextChild","prevChild","_ref","nextProps","_objectWithoutProperties","_excluded","_ref2","prevProps","_excluded2","renderByOrder","renderMap","elements","record","_ref3","handler","results","Surface","viewBox","className","style","title","desc","others","svgView","layerClass","clsx","React","_extends","Layer","ref","warn","condition","format","_len","_key","atan2","cos","sin","pi","PI","tau","draw","moveTo","arc","lineTo","closePath","tan30","tan30_2","rect","kr","kx","ky","sqrt3","x0","y0","x1","y1","y2","tauEpsilon","append","strings","_","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","a0","ccw","dx","dy","cw","da","withPath","shape","RangeError","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","symbolFactory","_ref$type","_ref$size","_ref$sizeType","sizeType","_objectSpread","cx","cy","filteredProps","getSymbolFactory","circle","shapeSymbol","angle","calculateAreaSize","registerSymbol","SIZE","DefaultLegendContent","_PureComponent","_classCallCheck","_callSuper","_inherits","inactiveColor","halfSize","sixthSize","thirdSize","color","inactive","strokeWidth","fill","stroke","strokeDasharray","payload","legendIcon","iconProps","_this","_this$props","iconSize","layout","formatter","itemStyle","display","marginRight","svgStyle","verticalAlign","finalFormatter","_defineProperty","entryValue","renderIcon","_this$props2","align","finalStyle","padding","margin","textAlign","renderItems","PureComponent","getUniqPayload","option","defaultUniqBy","uniqBy","Legend","chartWidth","defaultProps","updateBBox","wrapperNode","getBoundingClientRect","box","offsetHeight","offsetWidth","onBBoxUpdate","getBBox","lastBoundingBox","hPos","vPos","chartHeight","left","right","getBBoxSnapshot","top","bottom","_this2","content","wrapperStyle","payloadUniqBy","outerStyle","position","getDefaultPosition","node","otherProps","renderContent","defaultFormatter","DefaultTooltipContent","_props$separator","separator","_props$contentStyle","contentStyle","_props$itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","label","labelFormatter","_props$accessibilityL","accessibilityLayer","backgroundColor","border","whiteSpace","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","role","items","finalItemStyle","paddingTop","paddingBottom","finalValue","finalName","formatted","_formatted","_slicedToArray","unit","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","visibility","getTooltipCSSClassName","coordinate","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","setState","state","document","addEventListener","handleKeyDown","removeEventListener","_this$props$coordinat5","_this$props$coordinat6","active","animationDuration","animationEasing","hasPayload","isAnimationActive","useTranslate3d","_getTooltipTranslate","_ref4","tooltipBox","cssProperties","getTransformStyle","cssClasses","getTooltipTranslate","transition","pointerEvents","tabIndex","Global","isSsr","createElement","dataKey","Tooltip","filterNull","finalPayload","filter","hide","includeHidden","cursor","cursorStyle","trigger","ResponsiveContainer","forwardRef","aspect","_ref$initialDimension","initialDimension","_ref$width","_ref$height","_ref$minWidth","minWidth","minHeight","maxHeight","_ref$debounce","onResize","_ref$style","containerRef","useRef","onResizeRef","useImperativeHandle","console","configurable","_useState2","useState","containerWidth","containerHeight","sizes","setSizes","setContainerSize","useCallback","newWidth","newHeight","prevState","roundedWidth","roundedHeight","useEffect","callback","_onResizeRef$current","_entries$0$contentRec","contentRect","throttle","observer","ResizeObserver","_containerRef$current","observe","disconnect","chartContent","useMemo","calculatedWidth","calculatedHeight","isCharts","endsWith","cloneElement","maxWidth","Cell","_props","stringCache","widthCache","cacheCount","SPAN_STYLE","MEASUREMENT_SPAN_ID","getStringSize","text","copyObj","copyStyle","cacheKey","JSON","stringify","measurementSpan","getElementById","setAttribute","body","appendChild","measurementSpanStyle","assign","textContent","MULTIPLY_OR_DIVIDE_REGEX","ADD_OR_SUBTRACT_REGEX","CSS_LENGTH_UNIT_REGEX","NUM_SPLIT_REGEX","CONVERSION_RATES","cm","mm","pt","pc","in","Q","px","FIXED_CSS_LENGTH_UNITS","STR_NAN","DecimalCSS","num","Number","isNaN","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","_ref6","PARENTHESES_REGEX","evaluateExpression","expression","parentheticalExpression","calculateParentheses","reduceCSSCalc","safeEvaluateExpression","BREAKING_SPACES","calculateWordWidths","breakAll","words","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","scaleToFit","maxLines","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","calculate","reduce","currentLine","newLine","originalResult","trimmedResult","checkOverflow","tempText","doesOverflow","findLongestLine","iterations","middle","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","DEFAULT_FILL","Text","_ref5","_ref5$x","propsX","_ref5$y","propsY","_ref5$lineHeight","lineHeight","_ref5$capHeight","capHeight","_ref5$scaleToFit","_ref5$textAnchor","textAnchor","_ref5$verticalAnchor","verticalAnchor","_ref5$fill","wordsByLines","textProps","startDy","transforms","line","initRange","domain","initInterpolator","interpolator","InternMap","keyof","super","defineProperties","_intern","intern_get","intern_set","delete","intern_delete","implicit","ordinal","unknown","scale","from","band","bandwidth","ordinalRange","r0","r1","paddingInner","paddingOuter","rescale","stop","rangeRound","pointish","point","e10","e5","e2","tickSpec","power","log10","error","factor","i1","i2","inc","ticks","tickIncrement","tickStep","ascending","descending","bisector","compare1","compare2","delta","lo","hi","mid","zero","center","ascendingBisect","bisectRight","extend","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","trim","toLowerCase","rgbn","Rgb","rgba","hsla","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","channels","displayable","formatHex8","formatHsl","clamp","linear","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","colors","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","one","date","isView","normalize","bimap","interpolate","d0","d1","polymap","bisect","target","transformer","untransform","piecewise","output","clamper","invert","continuous","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","comma","formatDecimalParts","coefficient","toLocaleString","formatRounded","toUpperCase","formatPrefix","prefixes","locale","grouping","thousands","group","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","i0","formatTrim","Infinity","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","interval","transformLog","transformExp","transformLogn","transformExpn","pow10","isFinite","reflect","loggish","logs","pows","E","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","radial","squared","unsquare","valueof","compareDefined","swap","quantile","Float64Array","numbers","value0","subarray","quantileSorted","thresholds","invertExtent","quantiles","quantize","threshold","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","t0","timeInterval","floori","offseti","field","previous","every","millisecond","second","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","utcTime","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","r2","I","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","order","s0","s1","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","X","utcParse","formatLocale","stackValue","stackSeries","iter","iterator","minLen","arr2","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","_len2","restArgs","_key2","newArgs","curry","begin","compose","_len3","_key3","fns","firstFn","tailsFn","res","_len4","_key4","newA","uninterpolateNumber","diff","uninterpolateTruncation","rangeStep","getDigitCount","_arr","_n","_d","_e","_s","_i","next","done","err","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","digitCount","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","tickCount","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_getValidInterval4","_ref7","_ref8","_getValidInterval6","invariant","ErrorBar","_React$Component","dataPointFormatter","xAxis","yAxis","svgProps","direction","errorBars","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","xMid","coordinates","getLegendProps","formattedGraphicalItems","legendWidth","legendContent","legendItem","legendData","legendDefaultProps","legendProps","sectors","iconType","legendType","itemDefaultProps","itemProps","getMainColorOfGraphicItem","getWithHeight","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","flatMap","_item$type","defaultedProps","getDomainOfErrorBars","axisType","errorBarChild","isErrorBarRelevantForAxis","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","getDomainOfItemsWithSameAxis","domains","isCategoricalAxis","getCoordinatesOfGrid","minValue","maxValue","syncWithTicks","hasMin","hasMax","getTicksOfAxis","axis","isGrid","isAll","duplicateDomain","offsetForBand","realScaleType","niceTicks","scaleContent","row","isCategorical","categoricalDomain","handlerWeakMap","combineEventHandlers","defaultHandler","childHandler","childWeakMap","combineHandler","parseScale","chartType","hasBar","d3Scales","EPS","checkDomainOfScale","first","findPositionOfBar","barPosition","truncateByDomain","STACK_OFFSET_MAP","expand","none","stackOffsetNone","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","offsetAccessor","oz","sz","shapeStack","stackOrderNone","getTicksOfScale","opts","originalDomain","scaleType","tickValues","getCateCoordinateOfLine","bandSize","allowDuplicatedCategory","matchedTick","getCateCoordinateOfBar","getBaseValueOfBar","numericAxis","getDomainOfStackGroups","stackGroups","startIndex","endIndex","stackId","stackedData","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","cur","prev","parseDomainOfCategoryAxis","calculatedDomain","axisChild","isEqual","getTooltipItem","graphicalItem","tooltipType","radianToDegree","angleInRadian","polarToCartesian","radius","getMaxRadius","formatAxisMap","axisMap","chartName","startAngle","endAngle","maxRadius","innerRadius","outerRadius","reversed","_range2","_parseScale","finalAxis","getAngleOfPoint","anotherPoint","distanceBetweenPoints","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","inRange","_formatAngleOfSector","formatAngleOfSector","formatAngle","getTickClassName","tick","getLabel","renderRadialLabel","labelProps","attrs","labelAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","getAttrsOfPolarLabel","midAngle","_polarToCartesian","_polarToCartesian2","getAttrsOfCartesianLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","sizeAttrs","isPolar","Label","_ref4$offset","_props$className","textBreakAll","isPolarLabel","positionAttrs","parseViewBox","labelViewBox","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","parseLabel","_toConsumableArray","defaultAccessor","LabelList","_ref$valueAccessor","valueAccessor","restProps","idProps","parseLabelList","Customized","component","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","Sector","sectorProps","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","that","_context","Basis","BasisClosed","BasisOpen","areaStart","_line","areaEnd","lineStart","_point","lineEnd","_x2","_x3","_x4","_y2","_y3","_y4","Bump","_x","LinearClosed","Linear","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t","defined","curve","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","_t0","_y","py","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","getPath","lineFunction","_ref$points","points","baseLine","_ref$connectNulls","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","shapeArea","shapeLine","Curve","pathRef","realPath","getOwnPropertyNames","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","hasOwn","sameValueZeroEqual","OWNER","getOwnPropertyDescriptor","areArraysEqual","areDatesEqual","areMapsEqual","aResult","bResult","matchedIndices","aIterable","bIterable","hasMatch","matchIndex","_a","aKey","aValue","_b","bKey","bValue","areObjectsEqual","properties","areObjectsEqualStrict","descriptorA","descriptorB","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","bind","deepEqual","createCustomEqual","strict","circular","createInternalComparator","createCustomInternalComparator","createState","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createEqualityComparatorConfig","then","createEqualityComparator","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","meta","createIsEqual","setRafTimeout","timeout","currTime","requestAnimationFrame","shouldUpdate","safeRequestAnimationFrame","_toArray","createAnimateManager","handleChange","shouldStop","setStyle","_style","_styles","curr","restStyles","subscribe","_handleChange","getOwnPropertyDescriptors","hint","prim","toPrimitive","param","mapObject","getTransitionVal","duration","easing","return","ACCURACY","cubicBezierFactor","c1","c2","multyTime","params","pre","cubicBezier","configBezier","_easing$1$split$0$spl2","curveX","curveY","derCurveX","newParams","rangeValue","bezier","evalT","derVal","isStepper","configEasing","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","configSpring","alpha","needContinue","to","calStepperVals","preVals","steps","nextStepVals","_easing2","velocity","render","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","cafId","update","currStyle","cancelAnimationFrame","excluded","sourceKeys","sourceSymbolKeys","descriptor","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","Super","NewTarget","ReferenceError","Animate","subClass","superClass","Constructor","protoProps","staticProps","_super","instance","isActive","attributeName","handleStyleChange","changeStyle","canBegin","mounted","runAnimation","_this$props3","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","newState","onAnimationEnd","unSubscribe","onAnimationStart","startAnimation","configUpdate","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","newStyle","propsTo","runStepAnimation","_this$props4","onAnimationReStart","stateStyle","cloneContainer","container","_container$props","_container$props$styl","only","propTypes","isRequired","getRectanglePath","ySign","xSign","newRadius","isInRectangle","minX","maxX","minY","maxY","isUpdateAnimationActive","animationBegin","Rectangle","rectangleProps","totalLength","setTotalLength","getTotalLength","pathTotalLength","currWidth","currHeight","currY","isValidatePoint","getSinglePolygonPath","segmentPoints","getParsedPoints","segPoints","polygonPath","Polygon","baseLinePoints","hasStroke","rangePath","outerPath","getRanglePath","singlePath","Dot","Cross","_ref$x","_ref$y","_ref$top","_ref$left","getPolygonPath","polarAngles","PolarAngles","radialLines","polarAnglesProps","ConcentricCircle","concentricCircleProps","ConcentricPolygon","concentricPolygonProps","ConcentricPath","polarRadius","gridType","PolarGrid","_ref$cx","_ref$cy","_ref$innerRadius","_ref$outerRadius","_ref$gridType","_ref$radialLines","PolarRadiusAxis","orientation","maxRadiusTick","maxBy","minBy","axisLine","extent","point0","point1","tickFormatter","getTickTextAnchor","axisProps","customTickProps","coord","getTickValueCoord","tickProps","renderTickItem","_this$props5","renderAxisLine","renderTicks","getViewBox","radiusAxisId","eps","PolarAngleAxis","tickLineSize","tickSize","p1","p2","axisLineType","tickLine","tickLineProps","lineCoord","getTickLineCoord","angleAxisId","getTrapezoidPath","upperWidth","lowerWidth","widthGap","Trapezoid","trapezoidProps","currUpperWidth","currLowerWidth","defaultPropTransformer","ShapeSelector","shapeType","elementProps","_elementProps","isSymbolsProps","getPropsFromShapeOption","Shape","_ref2$propTransformer","propTransformer","_ref2$activeClassName","activeClassName","isBoolean","isFunnel","_item","isPie","isScatter","compareFunnel","shapeData","activeTooltipItem","_activeTooltipItem$la","_activeTooltipItem$la2","xMatches","yMatches","comparePie","startAngleMatches","endAngleMatches","compareScatter","zMatches","getActiveShapeIndexForTooltip","itemData","shapeKey","activeItem","getShapeDataKey","tooltipPayload","_activeItem$tooltipPa","_activeItem$tooltipPa2","getActiveShapeTooltipPayload","activeItemMatches","datum","dataIndex","valuesMatch","mouseCoordinateMatches","comparison","getComparisonFn","indexOfMouseCoordinates","Pie","isAnimationFinished","prevIsAnimationActive","prevAnimationId","animationId","sectorToFocus","curSectors","prevSectors","alignmentBaseline","activeIndex","labelLine","valueKey","pieProps","customLabelProps","customLabelLineProps","offsetRadius","labels","getTextAnchor","lineProps","realDataKey","renderLabelLineItem","renderLabelItem","activeShape","blendStroke","inactiveShapeProp","inactiveShape","isActiveIndex","hasActiveIndex","sectorOptions","sectorRefs","_this$state","handleAnimationStart","handleAnimationEnd","stepData","curAngle","paddingAngle","angleIp","latest","interpolatorAngle","renderSectorsStatically","pieRef","_this4","onkeydown","altKey","focus","blur","renderSectorsWithAnimation","attachKeyboardHandlers","_this5","rootTabIndex","renderSectors","renderLabels","_Pie","minAngle","nameKey","presentationProps","cells","cell","maxPieRadius","pieData","getRealPieData","parseCoordinateOfPie","parseDeltaAngle","absDeltaAngle","notZeroItemCount","realTotalAngle","tempStartAngle","middleRadius","tooltipPosition","Radar","onMouseEnter","onMouseLeave","curPoints","prevPoints","dotItem","dotProps","baseProps","customDotProps","dots","renderDotItem","radar","isRange","handleMouseEnter","handleMouseLeave","renderDots","prevPointsDiffFactor","interpolatorX","interpolatorY","renderPolygonStatically","renderPolygonWithAnimation","renderPolygon","parseCornerRadius","typeGuardSectorProps","cxValue","cyValue","RadialBarSector","activeDot","radiusAxis","angleAxis","displayedData","angleBandSize","pointValue","baseValue","RadialBar","curData","prevData","interpolatorStartAngle","interpolatorEndAngle","backgroundProps","background","rest","renderBackground","minPointSize","radiusAxisTicks","angleAxisTicks","dataStartIndex","pos","_item$props","stackedDomain","backgroundSector","PREFIX_LIST","isTouch","changedTouches","Brush","leaveTimer","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDrag","onDragEnd","detachDragEndListener","handleDragEnd","leaveTimeOut","isTextActive","slideMoveStartX","pageX","attachDragEndListener","travellerDragStartHandlers","startX","handleTravellerDragStart","endX","scaleValues","gap","minIndex","getIndexInRange","maxIndex","travellerWidth","onChange","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$state2","prevValue","_this$state3","currentScaleValue","currentIndex","newScaleValue","_this$props6","_this$props7","chartElement","compact","travellerX","_data$startIndex","_data$endIndex","_this$props8","traveller","ariaLabel","travellerProps","ariaLabelBrush","handleEnterSlideOrTraveller","handleLeaveSlideOrTraveller","onMouseDown","onTouchStart","onKeyDown","preventDefault","stopPropagation","handleTravellerMoveKeyboard","onFocus","isTravellerFocused","onBlur","renderTraveller","_this$props9","handleSlideDragStart","fillOpacity","_this$props10","_this$state4","getTextOfTick","_this$props11","alwaysShowText","_this$state5","isPanoramic","camelName","generatePrefixStyle","handleLeaveWrapper","onTouchMove","handleTouchMove","renderPanorama","renderSlide","renderTravellerLayer","renderText","lineY","renderDefaultTraveller","updateId","prevUpdateId","prevTravellerWidth","prevX","prevWidth","scalePoint","createScale","valueRange","ifOverflowMatches","alwaysShow","ifOverflow","typeguardBarRectangleProps","xProp","yProp","xValue","yValue","heightValue","widthValue","BarRectangle","minPointSizeCallback","isValueNumberOrNil","isNullish","Bar","activeBar","interpolatorWidth","interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","needClip","clipPathId","errorBarItems","dataPoint","errorBarProps","clipPath","needClipX","needClipY","renderRectangles","renderErrorBar","_Bar","xAxisId","yAxisId","xAxisTicks","yAxisTicks","minPointSizeProp","rects","baseValueScale","currentValueScale","computedHeight","ids","leftMirror","rightMirror","topMirror","bottomMirror","calculatedPadding","needSpace","_axis$padding","mirror","offsetKey","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","barCategoryGap","halfBand","rectWithPoints","ScaleHelper","bandAware","createLabeledScales","scales","mapValues","isInRange","getAngledRectangleWidth","normalizedAngle","normalizeAngle","angleRadians","angleThreshold","atan","angledWidth","calculateViewBox","XAxisContext","createContext","YAxisContext","ViewBoxContext","OffsetContext","ClipPathIdContext","ChartHeightContext","ChartWidthContext","ChartLayoutContextProvider","_props$state","xAxisMap","yAxisMap","Provider","useXAxisOrThrow","useContext","useArbitraryXAxis","useYAxisWithFiniteDomainOrRandom","useYAxisOrThrow","useOffset","useChartWidth","useChartHeight","ReferenceLineImpl","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","xAxisOrientation","yAxisOrientation","yCoord","xCoord","some","getEndPoints","_endPoints","_endPoints$","_endPoints$2","renderLine","rectWithCoords","ReferenceLine","isFront","ReferenceDot","isX","isY","getCoordinate","renderDot","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","rangeMin","rangeMax","getRect","renderRect","getEveryNthWithCondition","isValid","isVisible","tickPosition","getSize","getTicks","fontSize","letterSpacing","minTickGap","getNumberIntervalTicks","candidates","sizeKey","unitSize","getTickSize","contentSize","getAngledTickWidth","boundaries","isWidth","getTickBoundaries","_ret","initialStart","stepsize","_loop","tickCoord","isShow","getEquidistantTicks","preserveEnd","tail","tailSize","tailGap","_loop2","getTicksStart","getTicksEnd","CartesianAxis","_Component","nextState","viewBoxOld","restPropsOld","htmlLayer","layerReference","getElementsByClassName","getComputedStyle","tx","ty","tickMargin","finalTickSize","needHeight","needWidth","finalTicks","getTickVerticalAnchor","_this2$getTickLineCoo","visibleTicksCount","ticksGenerator","noTicksProps","_excluded3","combinedClassName","Component","Background","ry","renderLineItem","lineItem","_filterProps","restOfFilteredProps","HorizontalGridLines","_props$horizontal","horizontal","horizontalPoints","lineItemProps","VerticalGridLines","_props$vertical","vertical","verticalPoints","HorizontalStripes","horizontalFill","_props$horizontal2","roundedSortedHorizontalPoints","colorIndex","VerticalStripes","_props$vertical2","verticalFill","roundedSortedVerticalPoints","defaultVerticalCoordinatesGenerator","defaultHorizontalCoordinatesGenerator","CartesianGrid","_props$stroke","_props$fill","_props$horizontal3","_props$horizontalFill","_props$vertical3","_props$verticalFill","propsIncludingDefaults","horizontalValues","verticalValues","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","isHorizontalValues","generatorResult","isVerticalValues","Line","lines","lineLength","generateSimpleStrokeDasharray","remainLength","restLength","remainLines","emptyLines","repeat","mainCurve","curveDom","clipDot","dotsProps","curveProps","animateNewValues","prevPointIndex","renderCurveStatically","currentStrokeDasharray","curLength","getStrokeDasharray","renderCurveWithAnimation","hasSinglePoint","_ref2$r","_ref2$strokeWidth","_ref3$clipDot","dotSize","renderCurve","linesUnit","Area","areaProps","startY","endY","renderVerticalRect","renderHorizontalRect","prevBaseLine","stepBaseLine","stepPoints","renderAreaStatically","renderClipRect","renderAreaWithAnimation","renderArea","curBaseLine","_Area","chartBaseValue","itemBaseValue","domainMax","domainMin","hasStack","getBaseValue","isHorizontalLayout","isBreakPoint","ZAxis","zAxisId","ScatterSymbol","Scatter","interpolatorCx","interpolatorCy","interpolatorSize","renderSymbolsStatically","renderSymbolsWithAnimation","errorDataKey","linePoints","lineType","lineJointType","scatterProps","customLineProps","_getLinearRegression","xsum","ysum","xysum","xxsum","xmin","xmax","xcurrent","ycurrent","getLinearRegression","linearExp","renderSymbols","XAxisImpl","axisOptions","zAxis","xAxisDataKey","yAxisDataKey","zAxisDataKey","defaultRangeZ","defaultZ","xBandSize","yBandSize","XAxis","YAxisImpl","YAxis","detectReferenceElementsDomain","axisId","specifiedTicks","areas","idKey","finalDomain","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","scrollOffsetX","scrollX","scrollOffsetY","scrollY","pageY","getRadialCursorPoints","activeCoordinate","getCursorPoints","innerPoint","outerPoint","Cursor","_element$props$cursor","_defaultProps","element","tooltipEventType","activePayload","activeTooltipIndex","tooltipAxisBandSize","elementPropsCursor","cursorComp","getCursorRectangle","_getRadialCursorPoint","cursorProps","payloadIndex","ORIENT_MAP","FULL_WIDTH_AND_HEIGHT","originCoordinate","renderAsIs","getDisplayedData","graphicalItems","dataEndIndex","itemsData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","_child$props$data","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","_ticks$length","unsortedTicks","before","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","calculateActiveTickIndex","getActiveCoordinate","getAxisMapByAxes","axes","axisIdKey","stackOffset","_childProps$domain2","childProps","domainStart","domainEnd","isDomainSpecifiedByUser","defaultDomain","_childProps$domain","childDomain","duplicate","hasDuplicate","errorBarsDomain","parseErrorBarsOfAxis","_defaultProps2","_defaultProps3","itemAxisId","itemHide","axisDomain","getAxisMap","_ref4$axisType","AxisComp","Axis","_defaultProps4","_defaultProps5","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","calculateOffset","prevLegendBBox","_ref5$xAxisMap","_ref5$yAxisMap","offsetH","offsetV","brushBottom","_unused","legendBox","boxWidth","boxHeight","appendOffsetOfLegend","getCartesianAxisSize","axisObj","axisName","generateCategoricalChart","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","getFormatItems","currentState","barSize","barGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasGraphicalBarItem","formattedItems","childMaxBarSize","numericAxisId","cateAxisId","cateAxis","cateTicks","_item$type3","itemIndex","getStackedDataOfItem","itemIsBar","sizeList","globalSize","totalSize","_ref2$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","barItems","barItemDefaultProps","barItemProps","selfSize","cateId","stackList","getBarSizeList","_getBandSizeOfAxis","barBandSize","_ref3$sizeList","realBarGap","initialValue","useFull","fullBarSize","newPosition","newRes","originalSize","getBarPosition","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","reverseStackOrder","_getAxisNameByLayout2","_items","_item$type2","parentGroup","childGroup","getStackGroupsByAxisId","legendBBox","cateAxisMap","ticksObj","CategoricalChartWrapper","_props$id","_props$throttleDelay","cId","syncId","eventEmitterSymbol","syncMethod","applySyncEvent","_ref9","triggerSyncEvent","mouse","getMouseInfo","onMouseMove","persist","throttleTriggeredAfterMouseMove","_mouse","eventName","getReactEventByType","onClick","onMouseUp","handleMouseDown","handleMouseUp","onDoubleClick","onContextMenu","validateChartX","validateChartY","_element$props$active","getTooltipEventType","elementDefaultProps","axisOption","_element$props","radiusAxisMap","angleAxisMap","handleLegendBBoxUpdate","_tooltipItem$props$ac","tooltipItem","_this$state6","handleBrushChange","_this$state7","_element$props2","_element$props2$xAxis","_element$props2$yAxis","_ref10","activePoint","basePoint","itemItemProps","renderActiveDot","filterFormatItem","_this$state8","hasActive","itemEvents","handleItemMouseEnter","handleItemMouseLeave","_this$getItemByXY","_ref11$graphicalItem","getItemByXY","_ref11$graphicalItem$","xyItem","renderActivePoints","renderReferenceElement","renderBrush","renderGraphicChild","Funnel","renderCursor","renderPolarGrid","renderPolarAxis","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","documentElement","clientTop","clientLeft","_this$state9","toolTipData","xScale","yScale","scaledX","scaledY","_this$state10","tooltipEvents","handleClick","handleDoubleClick","handleMouseMove","handleTouchStart","onTouchEnd","handleTouchEnd","handleContextMenu","handleOuterEvent","handleReceiveSyncEvent","_this$state$offset","_ref13","_ref14","_ref15","_ref16","_this$state$xAxisMap","_this$state$yAxisMap","chartXY","_this$state11","itemDisplayName","activeBarItem","_this$props$tabIndex","_this$props$role","renderClipPath","keyboardEvent","parseEventsOfWrapper","renderLegend","renderTooltip","defaultState","prevDataKey","prevHeight","prevLayout","prevStackOffset","prevMargin","keepFromPrevState","updatesToState","_brush$props$startInd","_brush$props","_brush$props$endIndex","_brush$props2","brush","hasDifferentStartOrEndIndex","newUpdateId","CategoricalChart","LineChart","BarChart","PieChart","COLOR_PANEL","NODE_VALUE_KEY","computeNode","nodeValue","childDepth","computedChildren","getWorstScore","parentSize","aspectRatio","parentArea","rowArea","_row$reduce","parentRect","isFlush","rowHeight","curX","horizontalPosition","rowWidth","curY","verticalPosition","squarify","score","filterRect","best","scaleChildren","areaValueRatio","ratio","getAreaOfChildren","tempChildren","activeNode","formatRoot","currentRoot","nestIndex","Treemap","prevType","prevAspectRatio","nodeProps","colorPanel","arrow","nameSize","isLeaf","random","Smooth","renderContentItem","renderItem","renderNode","nestIndexContent","marginTop","handleNestIndex","renderAllNodes","renderNestIndex","defaultCoordinateOfTooltip","centerY","getSumOfIds","links","getSumWithWeightedSource","tree","link","sourceNode","getSumWithWeightedTarget","targetNode","ascendingY","updateDepthOfTargets","curNode","targetNodes","resolveCollisions","depthTree","nodePadding","nodes","relaxLeftToRight","maxDepth","sourceLinks","sourceSum","relaxRightToLeft","targetLinks","targetSum","computeData","nodeWidth","_getNodesTree","sourceNodes","searchTargetsAndSources","childWidth","getNodesTree","getDepthTree","newLinks","yRatio","sumBy","updateYOfTree","sy","tLen","updateYOfLinks","Sankey","activeElement","activeElementType","linkCurvature","linkContent","sourceRelativeY","targetRelativeY","linkWidth","sourceX","targetX","interpolationFunc","ka","kb","interpolationGenerator","sourceControlX","targetControlX","linkProps","sourceY","targetY","renderLinkItem","nodeContent","renderNodeItem","sourceName","targetName","getPayloadOfTooltip","renderLinks","renderNodes","prevIterations","prevNodeWidth","prevNodePadding","contentWidth","contentHeight","_computeData","prevSort","strokeOpacity","RadarChart","ScatterChart","AreaChart","RadialBarChart","ComposedChart","defaultTextProps","fontWeight","paintOrder","getMaxDepthOf","childDepths","SunburstChart","_ref$padding","_ref$dataKey","_ref$ringPadding","ringPadding","_ref$fill","_ref$stroke","_ref$textOptions","textOptions","_ref$startAngle","_ref$endAngle","setIsTooltipActive","_useState4","setActiveNode","rScale","scaleLinear","thickness","positions","drawArcs","childNodes","innerR","initialAngle","childColor","currentAngle","_d$fill","arcLength","fillColor","textX","textY","tooltipX","tooltipY","tooltipComponent","typeGuardTrapezoidProps","FunnelTrapezoid","curTrapezoids","trapezoids","prevTrapezoids","trapezoidOptions","interpolatorUpperWidth","interpolatorLowerWidth","renderTrapezoidsStatically","renderTrapezoidsWithAnimation","renderTrapezoids","_Funnel","lastShapeType","customWidth","realHeight","realWidth","offsetX","offsetY","funnelData","getRealFunnelData","_item$props2","_Funnel$getRealWidthH","getRealWidthHeight","nextVal","rawVal","_rawVal","newY","FunnelChart"],"sourceRoot":""}
Close