{"version":3,"sources":["apps/europe-summer-length/models.ts","apps/europe-summer-length/utils.ts","apps/europe-summer-length/Legend.tsx","apps/europe-summer-length/SideMenu.tsx","apps/europe-summer-length/Chart.tsx","apps/europe-summer-length/EuropeSummerLengthApp.tsx","../node_modules/recharts/es6/util/types.js","../node_modules/recharts/es6/util/DataUtils.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isFunction.js","../node_modules/d3-scale/src/init.js","../node_modules/lodash/isNil.js","../node_modules/recharts/es6/container/Layer.js","../node_modules/lodash/isObject.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/lodash/_root.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/lodash/isObjectLike.js","../node_modules/recharts/es6/util/ReactUtils.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIteratee.js","../node_modules/recharts-scale/es6/util/utils.js","../node_modules/recharts-scale/es6/util/arithmetic.js","../node_modules/recharts-scale/es6/getNiceTickValues.js","../node_modules/recharts/node_modules/d3-shape/src/offset/none.js","../node_modules/recharts/node_modules/d3-shape/src/order/none.js","../node_modules/recharts/node_modules/d3-shape/src/stack.js","../node_modules/recharts/es6/util/ChartUtils.js","../node_modules/recharts/node_modules/d3-shape/src/offset/expand.js","../node_modules/recharts/node_modules/d3-shape/src/offset/silhouette.js","../node_modules/recharts/node_modules/d3-shape/src/offset/wiggle.js","../node_modules/lodash/_getNative.js","../node_modules/recharts/es6/util/Global.js","../node_modules/lodash/get.js","../node_modules/lodash/identity.js","../node_modules/lodash/isSymbol.js","hooks/useBreakpoint.ts","hooks/useMedia.ts","../node_modules/d3-format/src/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","components/button/Button.tsx","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_Symbol.js","components/modal/Modal.tsx","../node_modules/recharts/es6/component/Label.js","../node_modules/recharts/es6/util/CartesianUtils.js","components/loading/Loading.tsx","../node_modules/react-smooth/es6/setRafTimeout.js","../node_modules/react-smooth/es6/AnimateManager.js","../node_modules/react-smooth/es6/util.js","../node_modules/react-smooth/es6/easing.js","../node_modules/react-smooth/es6/configUpdate.js","../node_modules/react-smooth/es6/Animate.js","../node_modules/react-smooth/es6/AnimateGroupChild.js","../node_modules/react-smooth/es6/AnimateGroup.js","../node_modules/react-smooth/es6/index.js","components/flex/Flex.tsx","components/side-menu-segment/SideMenuSegment.tsx","components/predictia-logo/PredictiaLogo.tsx","../node_modules/lodash/keys.js","components/contact-notification/ContactNotification.tsx","components/modal-menu/ModalMenu.tsx","components/side-bar/SideBar.tsx","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_toKey.js","../node_modules/d3/dist/package.js","../node_modules/d3/node_modules/d3-array/src/ascending.js","../node_modules/d3/node_modules/d3-array/src/bisector.js","../node_modules/d3/node_modules/d3-array/src/bisect.js","../node_modules/d3/node_modules/d3-array/src/cross.js","../node_modules/d3/node_modules/d3-array/src/number.js","../node_modules/d3/node_modules/d3-array/src/extent.js","../node_modules/d3/node_modules/d3-array/src/array.js","../node_modules/d3/node_modules/d3-array/src/range.js","../node_modules/d3/node_modules/d3-array/src/ticks.js","../node_modules/d3/node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3/node_modules/d3-array/src/mean.js","../node_modules/d3/node_modules/d3-array/src/sum.js","../node_modules/d3/node_modules/d3-array/src/zip.js","../node_modules/d3-axis/src/array.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/node_modules/d3-array/src/ascending.js","../node_modules/d3-chord/node_modules/d3-array/src/bisect.js","../node_modules/d3-chord/node_modules/d3-array/src/bisector.js","../node_modules/d3-chord/node_modules/d3-array/src/cross.js","../node_modules/d3-chord/node_modules/d3-array/src/array.js","../node_modules/d3-chord/node_modules/d3-array/src/ticks.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-contour/node_modules/d3-array/src/ascending.js","../node_modules/d3-contour/node_modules/d3-array/src/bisect.js","../node_modules/d3-contour/node_modules/d3-array/src/bisector.js","../node_modules/d3-contour/node_modules/d3-array/src/cross.js","../node_modules/d3-contour/node_modules/d3-array/src/array.js","../node_modules/d3-contour/node_modules/d3-array/src/ticks.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/adder.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3/node_modules/d3-scale/src/init.js","../node_modules/d3/node_modules/d3-scale/src/array.js","../node_modules/d3/node_modules/d3-scale/src/number.js","../node_modules/d3/node_modules/d3-scale/src/continuous.js","../node_modules/d3/node_modules/d3-scale/src/constant.js","../node_modules/d3/node_modules/d3-scale/src/linear.js","../node_modules/d3/node_modules/d3-scale/src/tickFormat.js","../node_modules/d3/node_modules/d3-scale/src/nice.js","../node_modules/d3/node_modules/d3-scale/src/pow.js","../node_modules/d3/node_modules/d3-scale/src/time.js","../node_modules/d3/node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-voronoi/src/constant.js","../node_modules/d3-voronoi/src/point.js","../node_modules/d3-voronoi/src/RedBlackTree.js","../node_modules/d3-voronoi/src/Edge.js","../node_modules/d3-voronoi/src/Cell.js","../node_modules/d3-voronoi/src/Circle.js","../node_modules/d3-voronoi/src/Beach.js","../node_modules/d3-voronoi/src/Diagram.js","../node_modules/d3-voronoi/src/voronoi.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-zoom/src/transform.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_getMapData.js","components/app-title/AppTitle.tsx","components/core-layout/CoreLayout.tsx","components/side-menu/SideMenu.tsx","../node_modules/recharts/node_modules/d3-shape/src/constant.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/recharts/es6/util/IfOverflowMatches.js","components/viewer-description/ViewerDescription.tsx","hooks/useIsMobile.ts","../node_modules/lodash/isEqual.js","../node_modules/recharts/es6/util/LogUtils.js","../node_modules/recharts/es6/shape/Dot.js","components/layer-selector/LayerSelector.tsx","components/select/Select.tsx","../node_modules/lodash/eq.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_baseGet.js","../node_modules/process/browser.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/sortBy.js","../node_modules/recharts/es6/util/PolarUtils.js","../node_modules/lodash/isString.js","../node_modules/lodash/upperFirst.js","../node_modules/recharts/es6/util/ShallowEqual.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-scale/src/number.js","../node_modules/recharts/node_modules/d3-shape/src/array.js","../node_modules/recharts/es6/component/Text.js","../node_modules/recharts/es6/util/DOMUtils.js","../node_modules/recharts/node_modules/d3-shape/src/noop.js","../node_modules/recharts/node_modules/d3-shape/src/curve/basis.js","../node_modules/recharts/node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/recharts/node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/recharts/node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/recharts/node_modules/d3-shape/src/curve/linear.js","../node_modules/recharts/node_modules/d3-shape/src/curve/monotone.js","../node_modules/recharts/node_modules/d3-shape/src/curve/natural.js","../node_modules/recharts/node_modules/d3-shape/src/curve/step.js","../node_modules/recharts/node_modules/d3-shape/src/point.js","../node_modules/recharts/node_modules/d3-shape/src/line.js","../node_modules/recharts/node_modules/d3-shape/src/area.js","../node_modules/recharts/es6/shape/Curve.js","../node_modules/d3-color/src/index.js","../node_modules/recharts/es6/shape/Rectangle.js","../node_modules/recharts/es6/component/LabelList.js","../node_modules/lodash/isNaN.js","components/map/EmptyMap.tsx","common/ViewerApp.tsx","../node_modules/webpack/buildin/module.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_castPath.js","../node_modules/recharts/es6/cartesian/ErrorBar.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_baseFlatten.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/radial.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-scale/src/diverging.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/_Set.js","../node_modules/lodash/toString.js","../node_modules/timers-browserify/main.js","../node_modules/lodash/every.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/range.js","../node_modules/lodash/isNumber.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_baseExtremum.js","../node_modules/decimal.js-light/decimal.js","../node_modules/lodash/uniqBy.js","../node_modules/recharts/es6/container/Surface.js","../node_modules/reduce-css-calc/dist/lib/reducer.js","../node_modules/raf/index.js","../node_modules/react-smooth/node_modules/react-transition-group/index.js","../node_modules/react-smooth/node_modules/react-transition-group/Transition.js","../node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js","../../src/geom/GeometryCollection.js","../../src/format/Feature.js","../../src/format/JSONFeature.js","../../src/geom/flat/interpolate.js","../../src/geom/LineString.js","../../src/geom/MultiLineString.js","../../src/geom/MultiPoint.js","../../src/geom/MultiPolygon.js","../../src/geom/flat/center.js","../../src/format/GeoJSON.js","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/component/Legend.js","../node_modules/recharts/es6/chart/generateCategoricalChart.js","../node_modules/recharts/es6/cartesian/XAxis.js","../node_modules/recharts/es6/cartesian/YAxis.js","../node_modules/lodash/debounce.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/lodash/max.js","../node_modules/recharts/node_modules/d3-shape/src/math.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/circle.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/cross.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/diamond.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/square.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/star.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/triangle.js","../node_modules/recharts/node_modules/d3-shape/src/symbol/wye.js","../node_modules/recharts/es6/shape/Symbols.js","../node_modules/recharts/node_modules/d3-shape/src/symbol.js","../node_modules/recharts/es6/cartesian/Line.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_getSymbols.js","common/utils/utils.ts","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/last.js","../node_modules/lodash/_baseSlice.js","../node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","../node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","../node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","../node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","../node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","../node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/react-virtualized/dist/es/utils/animationFrame.js","../node_modules/react-virtualized/dist/es/Grid/Grid.js","../node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","../node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","../node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","../node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","../node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","../node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","../node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","../node_modules/react-virtualized/dist/es/Collection/CollectionView.js","../node_modules/react-virtualized/dist/es/Collection/Section.js","../node_modules/react-virtualized/dist/es/Collection/SectionManager.js","../node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","../node_modules/react-virtualized/dist/es/Collection/Collection.js","../node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","../node_modules/react-virtualized/dist/es/Collection/index.js","../node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","../node_modules/react-virtualized/dist/es/ColumnSizer/index.js","../node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","../node_modules/react-virtualized/dist/es/InfiniteLoader/index.js","../node_modules/react-virtualized/dist/es/List/List.js","../node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","../node_modules/react-virtualized/dist/es/vendor/intervalTree.js","../node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","../node_modules/react-virtualized/dist/es/Masonry/Masonry.js","../node_modules/react-virtualized/dist/es/Masonry/index.js","../node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","../node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","../node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","../node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","../node_modules/react-virtualized/dist/es/Table/SortDirection.js","../node_modules/react-virtualized/dist/es/Table/SortIndicator.js","../node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","../node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","../node_modules/react-virtualized/dist/es/Table/Column.js","../node_modules/react-virtualized/dist/es/Table/Table.js","../node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","../node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","../node_modules/react-virtualized/dist/es/Table/index.js","../node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","../node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","../node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","../node_modules/react-virtualized/dist/es/WindowScroller/index.js","components/search-input/SearchInput.tsx","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/constant.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/now.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_isFlattenable.js","../node_modules/setimmediate/setImmediate.js","../node_modules/lodash/_arrayEvery.js","../node_modules/lodash/_baseEvery.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/find.js","../node_modules/lodash/_createFind.js","../node_modules/lodash/findIndex.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/throttle.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_createRange.js","../node_modules/lodash/_baseRange.js","../node_modules/lodash/isBoolean.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/min.js","../node_modules/lodash/_baseLt.js","../node_modules/lodash/flatMap.js","../node_modules/lodash/map.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/noop.js","../node_modules/d3-array/src/bisector.js","../node_modules/recharts/es6/cartesian/ReferenceLine.js","../node_modules/lodash/some.js","../node_modules/lodash/_baseSome.js","../node_modules/lodash/mapValues.js","../node_modules/reduce-css-calc/dist/index.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/index.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/parse.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/walk.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/stringify.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/unit.js","../node_modules/reduce-css-calc/dist/parser.js","../node_modules/reduce-css-calc/dist/lib/convert.js","../node_modules/css-unit-converter/index.js","../node_modules/reduce-css-calc/dist/lib/stringifier.js","../../src/performance-now.coffee","../../src/utils.ts","../../src/comparator.ts","../../src/index.ts","../node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js","../node_modules/react-smooth/node_modules/dom-helpers/class/addClass.js","../node_modules/react-smooth/node_modules/dom-helpers/class/hasClass.js","../node_modules/react-smooth/node_modules/dom-helpers/class/removeClass.js","../node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/recharts/es6/cartesian/CartesianAxis.js","../node_modules/recharts/es6/shape/Cross.js","../node_modules/recharts/es6/shape/Sector.js","../node_modules/recharts/es6/util/Events.js","../node_modules/eventemitter3/index.js","../node_modules/recharts/es6/cartesian/ReferenceDot.js","../node_modules/recharts/es6/cartesian/ReferenceArea.js","../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","../node_modules/recharts/es6/util/CssPrefixUtils.js","../node_modules/recharts/es6/cartesian/Brush.js","../node_modules/recharts/es6/component/DefaultTooltipContent.js","../node_modules/recharts/es6/component/Tooltip.js","../node_modules/recharts/es6/component/Cell.js","../node_modules/recharts/es6/cartesian/ZAxis.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/recharts/es6/cartesian/Bar.js","../node_modules/recharts/es6/cartesian/Scatter.js","../../node_modules/tslib/tslib.es6.js","../../src/ResizeDetector.tsx","../../src/useResizeDetector.ts","../../src/withResizeDetector.tsx","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash.throttle/index.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/bisect.js","../node_modules/recharts/es6/cartesian/Area.js","../node_modules/recharts/es6/component/ResponsiveContainer.js","../node_modules/recharts/es6/chart/ComposedChart.js"],"names":["Scenario","Variable","toCode","scenario","variable","fromCode","code","split","calcSummerLength","geojson","features","feature","summerLengthColl","i","properties","time_series","date","length","firstDay","first_day","lastDay","last_day","sl","Math","floor","abs","push","summer_length","getDayOfTheYear","day","year","DateTime","fromObject","plus","setLocale","toFormat","Colors","Historical","SummerLength","FirstDay","LastDay","SSP245","SSP585","Domains","HistoricalVariables","animated","baseUrl","icon","legend","name","units","description","EuropeSummerLengthLayers","title","layers","Legend","props","t","useTranslation","steps","React","useMemo","_steps","extent","scale","domain","min","delta","startValue","endValue","mean","startColor","color","hex","endColor","toFixed","SideMenuSegment","className","map","step","first","last","key","style","background","SideMenu","AppTitle","SearchInput","searchTerm","onTermChange","onSearchTermChange","results","rowHeight","rowWidth","rowRender","rowProps","element","onRowClick","LayerSelector","selectedLayer","onLayerSelect","setSelectedLayer","ViewerDescription","i18nKey","i18nNs","RowRenderer","tabIndex","onClick","isVisible","Chart","useState","selectedScenario","setSelectedScenario","selectOptions","label","value","chartData","geojsons","selectedCity","historical","find","c","city","area","sort","d1","d2","computeChartData","yLeftLabel","Select","options","onChange","ResponsiveContainer","width","height","ComposedChart","data","XAxis","dataKey","tick","fontSize","fontWeight","YAxis","yAxisId","orientation","angle","dx","Tooltip","formatter","payload","formatTooltip","Area","type","fill","stroke","connectNulls","strokeWidth","EuropeSummerLengthApp","state","initialState","onMapClick","bind","onSearchChange","onMapReady","searchRender","throttle","onLayerChange","onCitySelect","this","loadGeojsons","setState","setMapHover","layer","cache","drawGeoJSON","Promise","all","fetch","then","r","json","geo","ssp245","ssp585","trim","newGeoJson","f","toLowerCase","includes","__isResult","searchResults","term","mapRef","current","on","evt","hit","forEachFeatureAtPixel","pixel","getTargetElement","cursor","colorScale","colors","values","scaleLinear","range","getScale","geometry","coordinates","fromLonLat","feat","suffix","d","getProperties","isNaN","Style","Fill","Stroke","sc","image","Circle","radius","formatHex","updateSize","foundOne","getGeometry","coords","showChart","getView","animate","center","zoom","CoreLayout","sideMenuRender","renderContent","ref","menuRef","bodyRender","EmptyMap","initialCenter","fixedContentRender","Modal","handleClose","undefined","show","ViewerApp","opacity","showDescription","wmsParams","contextType","I18nContext","withTranslation","_typeof","obj","Symbol","iterator","constructor","prototype","SVGContainerPropKeys","SVGElementPropKeys","EventKeys","filterProps","includeEvents","isSvg","inputProps","isValidElement","_isObject","out","Object","keys","forEach","adaptEventHandlers","newHandler","e","adaptEventsOfChild","index","item","originalHandler","getEventHandlerOfChild","mathSign","isPercent","_isString","indexOf","isNumber","_isNumber","_isNaN","isNumOrStr","idCounter","uniqueId","prefix","id","concat","getPercentValue","percent","totalValue","defaultValue","arguments","validate","parseFloat","slice","getAnyElementOfObject","hasDuplicate","ary","_isArray","len","interpolateNumber","numberA","numberB","findEntryInArray","specifiedKey","specifiedValue","entry","_get","getLinearRegression","xsum","ysum","xysum","xxsum","xmin","Infinity","xmax","cx","cy","max","a","b","isArray","Array","module","exports","baseGetTag","require","isObject","tag","initRange","initInterpolator","interpolator","_extends","assign","target","source","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Layer","children","others","layerClass","classNames","createElement","assertThisInitialized","self","ReferenceError","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","TypeError","create","writable","configurable","freeGlobal","freeSelf","root","Function","_createForOfIteratorHelper","F","s","n","done","_e","it","err","normalCompletion","didErr","next","_e2","linearish","ticks","count","tickFormat","specifier","nice","i0","i1","start","stop","tickIncrement","ceil","linear","continuous","copy","unit","identity","x","normalize","NaN","bimap","interpolate","d0","r0","r1","polymap","j","reverse","bisect","clamp","unknown","transformer","transform","untransform","piecewise","output","input","interpolateValue","rescale","clamper","invert","y","_","from","number","rangeRound","interpolateRound","u","REACT_BROWSER_EVENT_MAP","click","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","getDisplayName","Comp","displayName","lastChildren","lastResult","toArray","result","Children","child","_isNil","isFragment","findAllByType","types","childType","findChildByType","validateWidthHeight","el","_el$props","SVG_TAGS","isSvgElement","isChildrenEqual","nextChildren","prevChildren","isSingleChildEqual","nextChild","prevChild","_ref","nextProps","_ref2","prevProps","shallowEqual","renderByOrder","renderMap","elements","record","_ref3","handler","once","getReactEventByType","parseChildIndex","getRawTag","objectToString","symToStringTag","toStringTag","baseMatches","baseMatchesProperty","property","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","toString","test","_unsupportedIterableToArray","_nonIterableSpread","arr2","PLACE_HOLDER","isPlaceHolder","val","curry0","fn","_curried","curry","curryN","_len","args","_key","argsLength","filter","arg","_len2","restArgs","_key2","newArgs","shift","begin","end","compose","_len3","_key3","fns","firstFn","tailsFn","reduce","res","join","memoize","lastArgs","_len4","_key4","every","rangeStep","num","Decimal","lt","toNumber","add","getDigitCount","log","newA","uninterpolateNumber","diff","uninterpolateTruncation","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_s","_i","_iterableToArrayLimit","_nonIterableRest","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","lte","digitCount","Arithmetic","digitCountValue","pow","stepRatio","div","stepRatioScale","formatStep","mul","getTickOfSingleValue","tickCount","middle","isint","absVal","middleIndex","calculateStep","Number","isFinite","tickMin","tickMax","sub","mod","belowCount","upCount","scaleCount","getNiceTickValues","_ref4","_getValidInterval","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_ref5","_ref6","_getValidInterval3","_getValidInterval4","_ref7","_ref8","_getValidInterval5","_getValidInterval6","series","order","s0","s1","m","stackValue","stackSeries","ownKeys","object","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","getValueByDataKey","_isFunction","getDomainOfDataByKey","filterNil","flattenData","_flatMap","_min","_max","Date","calculateActiveTickIndex","coordinate","_ticks$length","unsortedTicks","axis","axisType","before","cur","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","getMainColorOfGraphicItem","_item$props","getLegendProps","legendData","formattedGraphicalItems","legendWidth","legendContent","legendItem","sectors","iconType","legendType","_item$props2","inactive","hide","getWithHeight","getBarSizeList","globalSize","barSize","_ref5$stackGroups","stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","items","cateAxisId","barItems","selfSize","cateId","stackList","getBarPosition","barGap","barCategoryGap","bandSize","_ref6$sizeList","sizeList","maxBarSize","realBarGap","useFull","fullBarSize","sum","prev","offset","size","newRes","position","_offset","originalSize","appendOffsetOfLegend","legendBox","margin","left","right","legendProps","newOffset","box","align","verticalAlign","layout","getDomainOfErrorBars","errorBars","errorBarChild","direction","entryValue","mainValue","errorDomain","prevErrorArr","k","errorValue","lowerValue","upperValue","parseErrorBarsOfAxis","domains","getDomainOfItemsWithSameAxis","isCategoricalAxis","getCoordinatesOfGrid","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","duplicateDomain","bandwidth","niceTicks","scaleContent","isCategorical","categoricalDomain","combineEventHandlers","defaultHandler","parentHandler","childHandler","customizedHandler","arg1","arg2","arg3","arg4","parseScale","chartType","hasBar","d3Scales","realScaleType","_upperFirst","checkDomainOfScale","findPositionOfBar","barPosition","truncateByDomain","STACK_OFFSET_MAP","sign","positive","negative","expand","none","stackOffsetNone","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","constant","orderNone","offsetNone","stack","oz","sz","array","shapeStack","stackOrderNone","getStackGroupsByAxisId","_items","numericAxisId","reverseStackOrder","_item$props3","stackId","axisId","parentGroup","hasStack","childGroup","group","g","stackedData","getTicksOfScale","opts","originalDomain","scaleType","tickValues","calculateDomainOfTicks","_domain","getCateCoordinateOfLine","allowDuplicatedCategory","matchedTick","getCateCoordinateOfBar","getBaseValueOfBar","_ref9","numericAxis","getStackedDataOfItem","itemIndex","getDomainOfStackGroups","startIndex","endIndex","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","exec","_value","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","_sortBy","parseDomainOfCategoryAxis","calculatedDomain","axisChild","_isEqual","getTooltipItem","graphicalItem","_graphicalItem$props","tooltipType","baseIsNative","getValue","Global","isSsr","window","document","setTimeout","get","set","baseGet","path","isObjectLike","bps","xs","md","lg","xl","useBreakpoint","queries","mediaQueryLists","q","matchMedia","useCallback","findIndex","mql","matches","setValue","useEffect","addListener","removeListener","useMedia","isSmall","bp","componentWillMount","getDerivedStateFromProps","componentWillReceiveProps","prevState","componentWillUpdate","nextState","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","Button","mode","variant","onHover","onMouseOver","isFunction","isLength","timeout","unmountOnExit","mountOnEnter","in","role","dangerouslySetInnerHTML","__html","renderRadialLabel","labelProps","attrs","labelAngle","viewBox","innerRadius","outerRadius","startAngle","endAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","polarToCartesian","endPoint","dominantBaseline","xlinkHref","Label","content","_props$className","textBreakAll","cloneElement","getLabel","isPolarLabel","isPolar","positionAttrs","midAngle","_polarToCartesian","_x","textAnchor","verticalAnchor","_polarToCartesian2","getAttrsOfPolarLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","getAttrsOfCartesianLabel","Text","breakAll","defaultProps","parseViewBox","top","labelViewBox","parseLabel","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","_defineProperties","descriptor","formatAxisMap","axisMap","chartName","ids","leftMirror","rightMirror","topMirror","bottom","bottomMirror","calculatedPadding","needSpace","_axis$padding","padding","mirror","reversed","offsetKey","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","gap","halfBand","_parseScale","finalAxis","rectWithPoints","x1","y1","x2","y2","rectWithCoords","ScaleHelper","instance","Constructor","_classCallCheck","protoProps","staticProps","bandAware","_offset2","EPS","createLabeledScales","scales","coord","_mapValues","isInRange","_every","Loading","loadRef","useRef","setStyle","parent","parentElement","parentBounds","getBoundingClientRect","setRafTimeout","callback","currTime","shouldUpdate","now","raf","_toArray","createAnimateManager","handleChange","shouldStop","_style","_styles","curr","restStyles","subscribe","_handleChange","PREFIX_LIST","IN_LINE_PREFIX_LIST","IN_COMPATIBLE_PROPERTY","param","mapObject","translateStyle","isTransition","camelName","replace","v","toUpperCase","styleVal","generatePrefixStyle","getTransitionVal","duration","easing","prop","cubicBezierFactor","c1","c2","multyTime","params","pre","cubicBezier","derivativeCubicBezier","newParams","configBezier","_easing$1$split$0$spl","_easing$1$split$0$spl2","curveX","curveY","derCurveX","rangeValue","bezier","_t","evalT","derVal","isStepper","configSpring","config","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","alpha","needContinue","to","render","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","velocity","cafId","update","calStepperVals","preVals","nextStepVals","_easing2","currStyle","finalStyle","caf","_setPrototypeOf","p","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","_assertThisInitialized","Animate","_PureComponent","_inherits","_super","context","_this","_this$props","isActive","attributeName","handleStyleChange","changeStyle","_this$props2","canBegin","mounted","runAnimation","_this$props3","shouldReAnimate","deepEqual","isTriggered","manager","stopJSAnimation","_newState","newState","unSubscribe","_this2","onAnimationEnd","onAnimationStart","startAnimation","configUpdate","configEasing","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","transition","newStyle","propsTo","runStepAnimation","_this$props4","onAnimationReStart","stateStyle","cloneContainer","container","_container$props","_container$props$styl","only","PureComponent","propTypes","PropTypes","oneOfType","string","func","arrayOf","shape","isRequired","oneOf","node","bool","parseDurationOfSingleTransition","AnimateGroupChild","_Component","handleEnter","isAppearing","appearOptions","enterOptions","handleStyleActive","handleExit","leaveOptions","Transition","onEnter","onExit","parseTimeout","AnimateGroup","component","appear","enter","leave","TransitionGroup","any","Row","forwardRef","col","otherProps","gridColumn","Column","columns","main","nativeProps","gridTemplateColumns","gridColumnStart","gridColumnEnd","memo","Content","PredictiaLogo","brand","href","Misc","predictiaHomePage","rel","src","alt","arrayLikeKeys","baseKeys","isArrayLike","ContactNotification","text","setShow","tm","clearTimeout","predictiaEmail","ModalMenu","opened","onCloseClick","contentDiv","setContentDiv","overlayMemoCallback","scrollHeight","scrollTop","clientHeight","SideBar","eq","isIndex","isSymbol","compare","ascending","lo","hi","mid","ascendingBisect","bisector","bisectRight","valueof","e10","sqrt","e5","e2","power","LN10","error","tickStep","step0","step1","translateX","translateY","round","entering","__axis","orient","tickArguments","tickSizeInner","tickSizeOuter","tickPadding","format","spacing","range0","range1","selection","selectAll","tickExit","exit","tickEnter","append","attr","line","select","merge","insert","getAttribute","parentNode","remove","each","tickSize","axisRight","axisBottom","axisLeft","noop","dispatch","Dispatch","parseTypenames","typenames","typename","T","that","selector","querySelector","empty","querySelectorAll","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","appendChild","insertBefore","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","xhtml","svg","xlink","xml","xmlns","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","filterEvents","event","filterContextListener","listener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","removeEventListener","capture","onAdd","wrap","addEventListener","dispatchEvent","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","selectorAll","match","matcher","enterGroup","updateGroup","previous","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","classed","html","creator","deep","taskHead","taskTail","sourceEvent","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","clientLeft","clientTop","changedTouches","frame","interval","clockLast","clockNow","clockSkew","clock","performance","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","sleep","nap","poke","clearInterval","setInterval","elapsed","emptyOn","emptyTween","timing","schedules","__transition","tween","ease","init","schedule","cssNode","cssRoot","cssView","svgNode","active","degrees","PI","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","interpolateTransformCss","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolateRgb","interpolateString","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","styleInterpolate","styleTween","textInterpolate","textTween","_name","newId","selection_prototype","inherit","l","id0","id1","styleNull","listener0","styleMaybeRemove","resolve","reject","cancel","interrupt","defaultTiming","number1","number2","cos","sin","Map","has","clear","entries","Set","proto","tree","xm","ym","xp","yp","_root","leaf","x0","_x0","y0","_y0","_x1","_y1","_y","defaultX","defaultY","quadtree","Quadtree","addAll","leaf_copy","treeProto","cover","xz","yz","z","visit","x3","y3","quads","Quad","dy","retainer","removeAll","visitAfter","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","lineStart","lineEnd","polygonStart","polygonEnd","Adder","reset","temp","adder","bv","av","pi","tau","exp","tan","x00","y00","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","boundsStream","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","arc","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","circle","_circle","projection","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","random","sourceRandomUniform","randomUniform","defaultSource","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","normal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","randomBates","irwinHall","sourceRandomExponential","randomExponential","lambda","precision","formatSpecifier","precisionPrefix","formatPrefix","precisionRound","precisionFixed","transformPow","exponent","transformSqrt","transformSquare","powish","calendar","month","week","hour","minute","second","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","timeFormat","k10","sequential","scheme","interpolateRgbBasis","ramp","Linear","areaStart","areaEnd","pointX","pointY","defined","curve","curveLinear","buffer","defined0","slope3","h0","h1","slope2","h","bezierCurveTo","MonotoneX","MonotoneY","ReflectContext","monotoneX","_t0","RedBlackTree","RedBlackNode","U","C","L","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","grandpa","uncle","sibling","red","createEdge","v0","v1","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","epsilon2","ha","hc","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","epsilon","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","clipCells","polygons","polygon","triangles","e1","links","_found","vx","vy","v2","voronoi","SQRT2","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","nativeCreate","getNative","isKeyable","history","useHistory","theme","contactNotificationText","headerRender","isMobile","useIsMobile","header","sideMenu","body","breakpoint","setOpened","close","onOpenClick","renderButton","implicit","ordinal","ifOverflowMatches","alwaysShow","ifOverflow","returnObjects","DynamicElement","cssClass","kind","cnt","getIsMobile","navigator","userAgent","setIsMobile","passive","baseIsEqual","other","warn","condition","Dot","LayerItem","expanded","setExpanded","SelectMe","_SelectMe","htmlFor","placeholder","listMaxHeight","iconRenderer","isOpened","iteratee","castPath","toKey","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","browser","env","argv","version","versions","off","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","reIsUint","baseIsArguments","objectProto","isArguments","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","reIsDeepProp","reIsPlainProp","baseForOwn","baseEach","createBaseEach","baseIsEqualDeep","bitmask","customizer","baseFlatten","baseOrderBy","baseRest","isIterateeCall","sortBy","collection","iteratees","RADIAN","radianToDegree","angleInRadian","getAngleOfPoint","anotherPoint","distanceBetweenPoints","acos","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","inRange","_formatAngleOfSector","formatAngleOfSector","formatAngle","upperFirst","createCaseFirst","band","ordinalRange","paddingInner","paddingOuter","pointish","BREAKING_SPACES","calculateWordWidths","words","wordsWithComputedWidth","word","getStringSize","spaceWidth","getWordsWithoutCalculate","getWordsByLines","needCalculate","scaleToFit","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","maxLines","calculate","currentLine","newLine","originalResult","trimmedResult","checkOverflow","tempText","findLongestLine","iterations","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","prevWidth","prevScaleToFit","prevStyle","prevBreakAll","wordsByLines","lineHeight","capHeight","textProps","startDy","reduceCSSCalc","transforms","stringCache","widthCache","cacheCount","SPAN_STYLE","border","whiteSpace","STYLE_LIST","getStyleString","str","styleString","cacheKey","measurementSpan","getElementById","measurementSpanStyle","styleKey","getOffset","pageYOffset","pageXOffset","calculateChartCoordinate","chartX","pageX","chartY","pageY","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","LinearClosed","Natural","controlPoints","px","py","Step","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","Curve","lineFunction","points","baseLine","curveFactory","getCurveFactory","formatPoints","formatBaseLine","base","areaPoints","shapeArea","shapeLine","pathRef","realPath","getPath","getRectanglePath","maxRadius","ySign","xSign","newRadius","_newRadius","isInRectangle","minX","maxX","minY","maxY","Rectangle","totalLength","getTotalLength","animationEasing","animationDuration","animationBegin","isAnimationActive","isUpdateAnimationActive","currWidth","currHeight","currY","valueAccessor","_last","LabelList","idProps","parseLabelList","ckeckPropsLabel","explicitChilren","implicitLabelList","featureLayer","VectorLayer","zIndex","geoJsonLayer","overlayRef","moveOverlay","OlMap","TileLayer","OSM","url","view","View","addOverlay","overlay","Overlay","positioning","mapView","getSource","builtFeatures","Icon","imgSize","VectorSource","setSource","GeoJSON","readFeatures","setPosition","fallback","loading","createRef","onOpacityChange","getWmsParams","renderMenuContent","onDescriptionClose","showTooltip","hideTooltip","onHelpClick","pointInfo","webpackPolyfill","deprecate","paths","isKey","stringToPath","ErrorBar","dataPointFormatter","xAxis","yAxis","svgProps","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","stubFalse","freeExports","nodeType","freeModule","Buffer","isBuffer","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","arrayPush","isFlattenable","depth","predicate","isStrict","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","E","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","square","unsquare","radial","squared","swap","numbers","quantile","Float64Array","value0","quickselect","sd","newLeft","newRight","subarray","thresholds","threshold","invertExtent","quantiles","quantize","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcSecond","utcMillisecond","utcFormat","UTC","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","I","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","global","funcToString","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","baseToString","scope","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","setImmediate","clearImmediate","arrayEvery","baseEvery","baseIteratee","guard","baseFor","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","setCacheAdd","setCacheHas","srcValue","fromIndex","fromRight","createRange","reHasUnicode","RegExp","comparator","computed","globalScope","ONE","rounding","toExpNeg","toExpPos","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","MAX_E","MAX_SAFE_INTEGER","carry","xd","yd","Ctor","pr","checkInt32","digitsToString","ws","indexOfLastWord","w","getZeroString","absoluteValue","comparedTo","cmp","xdL","ydL","decimalPlaces","dp","dividedBy","divide","dividedToIntegerBy","idiv","equals","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isNegative","isneg","isPositive","ispos","isZero","lessThan","lessThanOrEqualTo","logarithm","wpr","ln","minus","subtract","modulo","times","naturalExponential","naturalLogarithm","negated","neg","squareRoot","toExponential","rL","toDecimalPlaces","todp","rm","toInteger","toint","toPower","yIsInt","yn","truncate","toPrecision","toSignificantDigits","tosd","toJSON","multiplyInteger","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","denominator","getLn10","zs","c0","numerator","charAt","parseDecimal","search","substring","charCodeAt","rd","doRound","xdi","xe","xLTy","isExp","ps","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","define","baseUniq","Surface","svgView","flip","_convert","_convert2","__esModule","default","operator","isEqual","convertMathExpression","op","flipValue","isValueType","reduceAddSubExpression","reduceDivisionExpression","reduceMultiplicationExpression","reduceMathExpression","vendors","_now","cp","cancelled","handle","cancelAnimationFrame","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","ReplaceTransition","CSSTransition","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","newObj","desc","_interopRequireWildcard","_react","_reactDom","_reactLifecyclesCompat","_React$Component","initialStatus","transitionGroup","isMounting","appearStatus","status","nextCallback","_proto","getChildContext","componentDidMount","updateStatus","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","mounting","findDOMNode","performEnter","performExit","appearing","timeouts","enterTimeout","safeSetState","onEntering","onTransitionEnd","onEntered","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","childProps","contextTypes","childContextTypes","_default","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","handleExited","firstRender","appeared","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","geometryCollection","closestPointXY","minSquaredDistance","stride","multiLineString","getCoordinates","readFeaturesFromObject","DefaultLegendContent","inactiveColor","strokeDasharray","SIZE","legendIcon","iconProps","Symbols","sizeType","iconSize","itemStyle","display","marginRight","svgStyle","_classNames","finalFormatter","renderIcon","textAlign","renderItems","defaultUniqBy","getUniqPayload","option","_uniqBy","wrapperNode","boxWidth","boxHeight","chartWidth","updateBBox","_this$state","hPos","vPos","chartHeight","getBBoxSnapshot","_this$state2","onBBoxUpdate","_box3","wrapperStyle","payloadUniqBy","outerStyle","getDefaultPosition","ORIENT_MAP","originCoordinate","isFinit","defer","deferClear","getDisplayedData","graphicalItems","dataStartIndex","dataEndIndex","itemsData","itemData","getTooltipContent","activeIndex","activeLabel","tooltipAxis","displayedData","getTooltipData","rangeObj","rangeData","pos","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","activeTooltipIndex","activePayload","activeCoordinate","_angle","getActiveCoordinate","getAxisMap","_ref4$axisType","AxisComp","axisIdKey","axes","stackOffset","_child$props","duplicate","_range","finalDomain","errorBarsDomain","detectReferenceElementsDomain","axisDomain","getAxisMapByAxes","Axis","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","Brush","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","generateCategoricalChart","_class","_temp","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","getFormatItems","currentState","updateId","globalMaxBarSize","_getAxisNameByLayout","some","hasGraphicalBarItem","formattedItems","childMaxBarSize","axisObj","_objectSpread6","cateAxis","cateTicks","itemIsBar","_getBandSizeOfAxis","barBandSize","_objectSpread7","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","_getAxisNameByLayout2","prevLegendBBox","_ref5$xAxisMap","xAxisMap","_ref5$yAxisMap","yAxisMap","offsetH","offsetV","brushBottom","calculateOffset","legendBBox","ticksObj","tooltipAxisBandSize","tooltipTicksGenerator","CategoricalChartWrapper","_props","uniqueChartId","clipPathId","legendInstance","deferId","clearDeferId","handleLegendBBoxUpdate","handleReceiveSyncEvent","cId","chartId","syncId","applySyncEvent","handleBrushChange","triggerSyncEvent","handleMouseEnter","onMouseEnter","mouse","getMouseInfo","triggeredAfterMouseMove","onMouseMove","handleItemMouseEnter","activeItem","tooltipPayload","tooltipPosition","handleItemMouseLeave","handleMouseMove","persist","handleMouseLeave","onMouseLeave","cancelThrottledTriggerAfterMouseMove","handleOuterEvent","eventName","handleClick","handleMouseDown","onMouseDown","handleMouseUp","onMouseUp","handleTouchMove","handleTouchStart","handleTouchEnd","verticalCoordinatesGenerator","_ref10","CartesianAxis","getTicks","horizontalCoordinatesGenerator","_ref11","axesTicksGenerator","renderCursor","tooltipEventType","getTooltipEventType","restProps","cursorComp","Cross","getCursorRectangle","_this$getCursorPoints","getCursorPoints","Sector","cursorProps","pointerEvents","payloadIndex","renderPolarAxis","axisOption","renderXAxis","xAxisId","renderAxis","renderYAxis","renderGrid","_this$state3","_find","renderPolarGrid","_element$props","radialLines","polarAngles","polarRadius","_this$state4","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","renderLegend","renderTooltip","tooltipItem","_this$state5","renderBrush","_this$state6","renderReferenceElement","_this$state7","_element$props2","renderActivePoints","_ref12","activePoint","basePoint","isRange","_item$item$props","activeDot","dotProps","renderActiveDot","renderGraphicChild","filterFormatItem","_this$state8","_item$item$props2","hasActive","itemEvents","trigger","onCLick","renderCustomized","throttleDelay","_throttle","_isBoolean","shared","eventType","containerOffset","_this$state9","xScale","yScale","xValue","yValue","toolTipData","_this$state10","halfSize","_this$state11","_cx","_cy","innerPoint","outerPoint","_this$state12","tooltipEvents","onTouchMove","onTouchStart","onTouchEnd","eventCenter","SYNC_EVENT","setMaxListeners","_maxListeners","syncMethod","_this$state13","validateChartX","validateChartY","axisOptions","_this$props5","ticksGenerator","_this$state$offset","_ref13","_ref14","axisProps","_ref15","_ref16","_this$state$xAxisMap","_this$state$xAxisMap$","_this$state$yAxisMap","_this$state$yAxisMap$","chartXY","itemDisplayName","activeBarItem","_activeBarItem","_this$props6","compact","CartesianGrid","ReferenceArea","ReferenceLine","ReferenceDot","Bar","Line","Radar","RadialBar","Scatter","Pie","Funnel","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Customized","renderClipPath","events","parseEventsOfWrapper","defaultState","prevData","prevHeight","prevLayout","prevStackOffset","prevMargin","_defaultState","keepFromPrevState","updatesToState","newUpdateId","dot","nativeMax","nativeMin","wait","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","baseExtremum","baseGt","draw","tan30","tan30_2","kr","kx","ky","sqrt3","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","symbolFactory","getSymbolFactory","symbol","shapeSymbol","calculateAreaSize","registerSymbol","factory","mainCurve","isAnimationFinished","getStrokeDasharray","lines","lineLength","remainLength","restLength","remainLines","emptyLines","repeat","handleAnimationEnd","handleAnimationStart","animationId","prevAnimationId","curPoints","prevPoints","linesUnit","dotItem","curveDom","errorBarItems","dataPoint","needClip","lineProps","customDotProps","dots","renderDotItem","dotsProps","clipPath","curveProps","animateNewValues","prevPointsDiffFactor","stepData","prevPointIndex","interpolatorX","interpolatorY","_interpolatorX","_interpolatorY","renderCurveStatically","currentStrokeDasharray","curLength","renderCurveWithAnimation","hasSinglePoint","renderCurve","renderErrorBar","renderDots","xAxisTicks","yAxisTicks","DataView","WeakMap","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","freeProcess","arrayFilter","stubArray","nativeGetSymbols","getSymbols","assert","message","limit","waiting","hexToRgb","_hex","formatNumber","maximumFractionDigits","Intl","NumberFormat","updateUrl","URL","searchParams","delete","console","decodeURIComponent","overRest","setToString","otherArgs","baseSetToString","shortOut","baseTimes","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","baseGetAllKeys","keysFunc","symbolsFunc","Uint8Array","createDetectElementResize","nonce","hostWindow","_window","attachEvent","requestFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","cancelFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","firstElementChild","contract","lastElementChild","expandChild","scrollLeft","scrollWidth","offsetWidth","offsetHeight","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","doc","elementStyle","css","head","getElementsByTagName","styleSheet","cssText","createTextNode","createStyles","__animationListener__","removeResizeListener","detachEvent","toVal","mix","tmp","calculateSizeAndPositionDataAndUpdateScrollOffset","cellCount","cellSize","computeMetadataCallback","computeMetadataCallbackProps","nextCellsCount","nextCellSize","nextScrollToIndex","scrollToIndex","updateScrollOffsetForScrollToIndex","CellSizeAndPositionManager","cellSizeGetter","estimatedCellSize","_cellSizeGetter","_cellCount","_estimatedCellSize","_createClass","_lastMeasuredIndex","lastMeasuredCellSizeAndPosition","getSizeAndPositionOfLastMeasuredCell","_cellSizeAndPositionData","_lastBatchedIndex","_ref3$align","containerSize","currentOffset","targetIndex","idealOffset","getSizeAndPositionOfCell","maxOffset","minOffset","totalSize","getTotalSize","_findNearestCell","high","low","_binarySearch","lastMeasuredIndex","_exponentialSearch","getMaxElementSize","chrome","ScalingCellSizeAndPositionManager","_ref$maxScrollSize","maxScrollSize","_cellSizeAndPositionManager","_maxScrollSize","configure","getCellCount","getEstimatedCellSize","getLastMeasuredIndex","safeTotalSize","offsetPercentage","_getOffsetPercentage","_safeOffsetToOffset","getUpdatedOffsetForIndex","_offsetToSafeOffset","getVisibleCellRange","resetCell","createCallbackMemoizer","requireAllKeys","cachedIndices","indices","allInitialized","indexChanged","cachedValue","updateScrollIndexHelper","cellSizeAndPositionManager","previousCellsCount","previousCellSize","previousScrollToAlignment","previousScrollToIndex","previousSize","scrollOffset","scrollToAlignment","sizeJustIncreasedFromZero","updateScrollIndexCallback","hasScrollToIndex","win","scrollbarSize","recalc","canUseDOM","scrollDiv","overflow","clientWidth","request","oRequestAnimationFrame","msRequestAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","cancelAnimationTimeout","requestAnimationTimeout","SCROLL_POSITION_CHANGE_REASONS","Grid","_React$PureComponent","_disablePointerEventsTimeoutId","isScrolling","needToResetStyleCache","onSectionRendered","_onGridRenderedMemoizer","columnOverscanStartIndex","_columnStartIndex","columnOverscanStopIndex","_columnStopIndex","columnStartIndex","_renderedColumnStartIndex","columnStopIndex","_renderedColumnStopIndex","rowOverscanStartIndex","_rowStartIndex","rowOverscanStopIndex","_rowStopIndex","rowStartIndex","_renderedRowStartIndex","rowStopIndex","_renderedRowStopIndex","_scrollingContainer","handleScrollEvent","columnSizeAndPositionManager","columnCount","_wrapSizeGetter","columnWidth","_getEstimatedColumnSize","rowSizeAndPositionManager","rowCount","_getEstimatedRowSize","instanceProps","prevColumnWidth","prevRowHeight","prevColumnCount","prevRowCount","prevIsScrolling","prevScrollToColumn","scrollToColumn","prevScrollToRow","scrollToRow","scrollbarSizeMeasured","scrollDirectionHorizontal","scrollDirectionVertical","scrollPositionChangeReason","_initialScrollTop","_getCalculatedScrollTop","_initialScrollLeft","_getCalculatedScrollLeft","_ref$alignment","alignment","_ref$columnIndex","columnIndex","_ref$rowIndex","rowIndex","offsetProps","_ref2$scrollLeft","scrollLeftParam","_ref2$scrollTop","scrollTopParam","_debounceScrollEnded","autoHeight","autoWidth","totalRowsHeight","totalColumnsWidth","_invokeOnScrollMemoizer","_deferredInvalidateColumnIndex","_deferredInvalidateRowIndex","_ref4$columnIndex","_ref4$rowIndex","_recomputeScrollLeftFlag","_recomputeScrollTopFlag","_styleCache","_cellCache","forceUpdate","_updateScrollLeftForScrollToColumn","_updateScrollTopForScrollToRow","getScrollbarSize","_handleInvalidatedGridSize","stateUpdate","_getScrollToPositionStateUpdate","sizeIsBiggerThanZero","_invokeOnGridRenderedHelper","_maybeCallOnScrollbarPresenceChange","columnOrRowCountJustIncreasedFromZero","autoContainerWidth","containerProps","containerRole","containerStyle","noContentRenderer","_isScrolling","gridStyle","boxSizing","WebkitOverflowScrolling","willChange","_resetStyleCache","_calculateChildrenToRender","verticalScrollBarSize","horizontalScrollBarSize","_horizontalScrollBarSize","_verticalScrollBarSize","_scrollbarPresenceChanged","overflowX","overflowY","childrenToDisplay","_childrenToDisplay","showNoContentRenderer","_setScrollingContainerRef","clsx","onScroll","_onScroll","maxWidth","maxHeight","cellRenderer","cellRangeRenderer","deferredMeasurementCache","overscanColumnCount","overscanIndicesGetter","overscanRowCount","isScrollingOptOut","visibleColumnIndices","visibleRowIndices","horizontalOffsetAdjustment","getOffsetAdjustment","verticalOffsetAdjustment","overscanColumnIndices","overscanCellsCount","scrollDirection","stopIndex","overscanRowIndices","overscanStartIndex","overscanStopIndex","hasFixedHeight","hasFixedWidth","cellCache","styleCache","scrollingResetTimeInterval","_debounceScrollEndedCallback","recomputeGridSize","_onScrollMemoizer","_this3$props","onScrollbarPresenceChange","horizontal","vertical","_getScrollLeftForScrollToColumnStateUpdate","_getScrollTopForScrollToRowStateUpdate","maybeStateA","maybeStateB","estimatedColumnSize","estimatedRowSize","finalColumn","scrollBarSize","calculatedScrollLeft","finalRow","calculatedScrollTop","renderedCells","areOffsetsAdjusted","canCacheStyle","rowDatum","columnDatum","cellRendererParams","renderedCell","defaultOverscanIndicesGetter","ArrowKeyStepper","_getPrototypeOf2","disabled","_this$_getScrollState","_getScrollState","scrollToColumnPrevious","scrollToRowPrevious","_this$_getScrollState2","preventDefault","_updateScrollState","_this$_getScrollState3","onKeyDown","_onKeyDown","_onSectionRendered","isControlled","onScrollToChange","AutoSizer","defaultHeight","defaultWidth","disableHeight","disableWidth","onResize","_parentNode","paddingLeft","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","autoSizer","_autoSizer","HTMLElement","_detectElementResize","_onResize","childParams","_setRef","CellMeasurer","_this$props$columnInd","_this$props$rowIndex","_this$_getCellMeasure","_getCellMeasurements","getHeight","getWidth","Element","_child","_maybeMeasureCell","_measure","registerChild","_registerChild","styleWidth","styleHeight","_this$props2$columnIn","_this$props2$rowIndex","_this$_getCellMeasure2","invalidateCellSizeAfterRender","CollectionView","cellLayoutManager","_onSectionRenderedMemoizer","getLastRenderedIndices","scrollToCell","scrollPosition","getScrollPositionForCell","cellIndex","_setScrollPosition","_enablePointerEventsAfterDelay","isScrollingChange","_scrollbarSize","_cellLayoutManager$ge","totalHeight","totalWidth","_scrollbarSizeMeasured","_calculateSizeAndPositionDataOnNextUpdate","_updateScrollPositionForScrollToCell","_invokeOnSectionRenderedHelper","_cellLayoutManager$ge2","horizontalOverscanSize","verticalOverscanSize","_lastRenderedCellCount","_lastRenderedCellLayoutManager","calculateSizeAndPositionData","_cellLayoutManager$ge3","cellRenderers","collectionStyle","Section","_indexMap","_indices","SectionManager","sectionSize","_sectionSize","_cellMetadata","_sections","getSections","section","getCellIndices","sectionXStart","sectionXStop","sectionYStart","sectionYStop","sections","sectionX","sectionY","cellMetadatum","addCellIndex","_ref$align","cellOffset","Collection","_lastRenderedCellIndices","_isScrollingChange","_setCollectionViewRef","_collectionView","recomputeCellSizesAndPositions","cellSizeAndPositionGetter","cellMetadata","sectionManager","registerCell","_calculateSizeAndPositionData","_sectionManager","_height","_width","cellGroupRenderer","getCellMetadata","cellRendererProps","ColumnSizer","columnMaxWidth","columnMinWidth","_registeredChild","safeColumnMinWidth","safeColumnMaxWidth","adjustedWidth","getColumnWidth","InfiniteLoader","_loadMoreRowsMemoizer","_onRowsRendered","autoReload","_doStuff","_lastRenderedStartIndex","_lastRenderedStopIndex","onRowsRendered","unloadedRanges","loadMoreRows","unloadedRange","promise","lastRenderedStartIndex","lastRenderedStopIndex","isRangeVisible","currentIndex","recomputeSize","recomputeRowHeights","forceUpdateReactVirtualizedComponent","isRowLoaded","minimumBatchSize","rangeStartIndex","rangeStopIndex","potentialStopIndex","_index","firstUnloadedRange","_index2","scanForUnloadedRanges","squashedUnloadedRanges","_loadUnloadedRanges","registeredChild","List","rowRenderer","widthDescriptor","getOffsetForCell","measureAllCells","_ref6$columnIndex","_ref6$rowIndex","scrollToPosition","noRowsRenderer","_cellRenderer","accessibilityOverscanIndicesGetter","ge","_GEP","_GEA","_GTP","_GTA","_LTP","_LTA","le","_LEP","_LEA","_EQP","_EQA","IntervalTreeNode","leftPoints","rightPoints","rebuild","intervals","ntree","createIntervalTree","rebuildWithInterval","rebuildWithoutInterval","idx","reportLeftRange","cb","reportRightRange","reportRange","compareNumbers","compareBegin","compareEnd","pts","leftIntervals","rightIntervals","centerIntervals","IntervalTree","weight","queryPoint","queryInterval","tproto","PositionCache","defaultCellHeight","unmeasuredCellCount","tallestColumnSize","renderCallback","_intervalTree","_leftMap","columnSizeMap","_columnSizeMap","columnHeight","Masonry","eventScrollTop","currentTarget","_getEstimatedTotalHeight","_debounceResetIsScrolling","_positionCache","_invalidateOnUpdateStartIndex","_invalidateOnUpdateStopIndex","_populatePositionCache","_checkInvalidateOnUpdate","_invokeOnScrollCallback","_invokeOnCellsRenderedCallback","_debounceResetIsScrollingId","cellMeasurerCache","keyMapper","overscanByPixels","rowDirection","estimateTotalHeight","shortestColumnSize","measuredCellCount","batchSize","_startIndex","_stopIndex","_debounceResetIsScrollingCallback","estimatedColumnCount","_onScrollMemoized","_startIndexMemoized","_stopIndexMemoized","onCellsRendered","cellPositioner","_cellPositioner","CellMeasurerCacheDecorator","_cellMeasurerCache","_columnIndexOffset","_rowIndexOffset","_params$columnIndexOf","columnIndexOffset","_params$rowIndexOffse","rowIndexOffset","clearAll","MultiGrid","showHorizontalScrollbar","showVerticalScrollbar","_bottomLeftGrid","_bottomRightGrid","rest","fixedRowCount","fixedColumnCount","scrollInfo","_topLeftGrid","_topRightGrid","_fixedColumnCount","_fixedRowCount","_maybeCalculateCachedStyles","_deferredMeasurementCacheBottomLeftGrid","_deferredMeasurementCacheBottomRightGrid","_deferredMeasurementCacheTopRightGrid","_ref7$columnIndex","_ref7$rowIndex","_ref8$columnIndex","_ref8$rowIndex","adjustedColumnIndex","adjustedRowIndex","_leftGridWidth","_topGridHeight","_this$props7","_this$props8","_prepareForRender","_containerOuterStyle","_containerTopStyle","_renderTopLeftGrid","_renderTopRightGrid","_containerBottomStyle","_renderBottomLeftGrid","_renderBottomRightGrid","_getTopGridHeight","leftGridWidth","_getLeftGridWidth","topGridHeight","resetAll","_this$props9","enableFixedColumnScroll","enableFixedRowScroll","styleBottomLeftGrid","styleBottomRightGrid","styleTopLeftGrid","styleTopRightGrid","sizeChange","_lastRenderedHeight","_lastRenderedWidth","leftSizeChange","_lastRenderedColumnWidth","_lastRenderedFixedColumnCount","topSizeChange","_lastRenderedFixedRowCount","_lastRenderedRowHeight","_lastRenderedStyle","_lastRenderedStyleBottomLeftGrid","_bottomLeftGridStyle","_lastRenderedStyleBottomRightGrid","_bottomRightGridStyle","_lastRenderedStyleTopLeftGrid","_topLeftGridStyle","_lastRenderedStyleTopRightGrid","_topRightGridStyle","hideBottomLeftGridScrollbar","additionalRowCount","_getBottomGridHeight","gridWidth","bottomLeftGrid","_cellRendererBottomLeftGrid","classNameBottomLeftGrid","_onScrollTop","_bottomLeftGridRef","_rowHeightBottomGrid","_cellRendererBottomRightGrid","classNameBottomRightGrid","_columnWidthRightGrid","_onScrollbarPresenceChange","_bottomRightGridRef","_getRightGridWidth","classNameTopLeftGrid","_topLeftGridRef","hideTopRightGridScrollbar","additionalColumnCount","additionalHeight","gridHeight","topRightGrid","_cellRendererTopRightGrid","classNameTopRightGrid","_onScrollLeft","_topRightGridRef","ScrollSync","defaultHeaderRowRenderer","SortDirection","ASC","DESC","SortIndicator","sortDirection","defaultHeaderRenderer","showSortIndicator","defaultRowRenderer","onRowDoubleClick","onRowMouseOut","onRowMouseOver","onRowRightClick","rowData","a11yProps","onDoubleClick","onMouseOut","onContextMenu","cellDataGetter","cellData","defaultSortDirection","flexGrow","flexShrink","headerRenderer","Table","scrollbarWidth","_createColumn","_createRow","_ref3$columnIndex","_ref3$rowIndex","_Grid","_setScrollbarWidth","disableHeader","gridClassName","headerHeight","headerRowRenderer","rowClassName","rowStyle","availableRowsHeight","rowClass","rowStyleObject","_cachedColumnStyles","column","flexStyles","_getFlexStyleForColumn","_getHeaderColumns","onColumnClick","_column$props","columnData","headerOnClick","headerOnKeyDown","headerTabIndex","headerAriaSort","headerAriaLabel","headerClassName","headerStyle","onHeaderClick","_column$props2","disableSort","sortEnabled","ReactVirtualized__Table__sortableHeaderColumn","renderedHeader","newSortDirection","rowGetter","flattenedStyle","_getRowHeight","customStyle","flexValue","flex","msFlex","WebkitFlex","minWidth","_createHeader","getScrollbarWidth","mountedInstances","originalBodyPointerEvents","disablePointerEventsTimeoutId","enablePointerEventsIfDisabled","enablePointerEventsAfterDelayCallback","__resetIsScrolling","onScrollWindow","maximumTimeout","enablePointerEventsAfterDelay","scrollElement","__handleWindowScrollEvent","registerScrollListener","unregisterScrollListener","isWindow","getBoundingBox","getDimensions","innerHeight","innerWidth","serverHeight","serverWidth","getPositionOffset","containerElement","elementRect","containerRect","getScrollOffset","_elementRect","_containerRect","scrollY","scrollX","getWindow","WindowScroller","updatePosition","scrollTo","_positionFromTop","_isMounted","_positionFromLeft","thisNode","ReactDOM","dimensions","_registerResizeListener","prevScrollElement","_unregisterResizeListener","onChildScroll","_onChildScroll","isMasked","reIsHostCtor","funcProto","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","uid","IE_PROTO","nativeNow","lastCalled","stamp","remaining","typedArrayTags","isPrototype","nativeKeys","overArg","assocIndexOf","pairs","LARGE_ARRAY_SIZE","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","resIndex","memoizeCapped","rePropName","reEscapeChar","quote","subString","resolver","memoized","Cache","arrayMap","symbolProto","symbolToString","spreadableSymbol","isConcatSpreadable","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","onreadystatechange","installReadyStateChangeImplementation","task","createBaseFor","iterable","eachFunc","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","objValue","COMPARE_PARTIAL_FLAG","equalArrays","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","setToArray","symbolValueOf","byteLength","byteOffset","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","isStrictComparable","hasIn","baseHasIn","hasPath","hasFunc","baseProperty","basePropertyDeep","createFind","findIndexFunc","baseFindIndex","toFinite","remainder","debounce","baseMap","baseSortBy","compareMultiple","orders","comparer","compareAscending","objCriteria","criteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","baseRange","nativeCeil","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","baseSlice","asciiToArray","unicodeToArray","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","baseLt","arrayIncludes","arrayIncludesWith","createSet","isCommon","outer","seenIndex","baseIndexOf","baseIsNaN","strictIndexOf","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","_props$viewBox","yCoord","xCoord","_orientation","_coord","_points","_points2","_some","getEndPoints","_endPoints","_endPoints$","_endPoints$2","renderLine","isFront","fillOpacity","baseSome","baseAssignValue","_postcssValueParser2","_parser","_reducer2","_stringifier2","MATCH_CALC","walk","contents","stringify","ast","parser","reducedAst","ValueParser","bubble","openParentheses","closeParentheses","singleQuote","doubleQuote","backslash","slash","comma","colon","star","token","escape","escapePos","whitespacePos","tokens","balanced","sourceIndex","unclosed","stringifyNode","custom","buf","customResult","EXP","dotted","sciPos","containsNumber","JisonParserError","msg","hash","stacktrace","exception","ex2","captureStackTrace","rv","trace","yy","hasPartialLrUpgradeOnConflict","errorRecoveryTokenDiscardCount","symbols_","terminals_","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","TERROR","EOF","originalQuoteName","originalParseError","cleanupAfterParse","constructParseErrorInfo","yyMergeLocationInfo","__reentrant_call_depth","__error_infos","__error_recovery_infos","quoteName","id_str","getSymbolName","describeSymbol","terminal_descriptions_","collect_expected_token_set","do_not_describe","tokenset","check","state_descriptions_","table","productions_","rule","performAction","yystate","yysp","yyvstack","lexer","$","goto","bt","defaultActions","bda","parseError","ExceptionClass","recoverable","destroy","sstack","vstack","sp","NO_ACTION","__lexer__","sharedState_yy","pre_parse","post_parse","pre_lex","post_lex","fastLex","yyGetSharedState","dst","shallow_copy_noclobber","resultValue","invoke_post_methods","do_not_nuke_errorinfos","cleanupAfterLex","ex","expected","pei","errStr","yytext","token_id","yylineno","action","new_state","symbol_stack","state_stack","value_stack","stack_pointer","rec","yyrulelen","this_production","lex","yyval","_$","retval","setInput","canIUse","errSymbolDescr","showPosition","ntsymbol","JisonLexerError","ERROR","__currentRuleSet__","__decompressed","_backtrack","_input","_more","_signaled_error_token","conditionStack","matched","yyleng","yylloc","constructLexErrorInfo","show_input_position","prettyPrintRange","pos_str","loc","yyerror","lineno_msg","lexerErrorsAreRecoverable","extra_error_attributes","last_column","first_line","first_column","last_line","rules","rule_re","conditions","spec","rule_ids","rule_regexes","rule_new_ids","__rule_regexes","__rule_count","editRemainingInput","cpsArg","ch","slice_len","ch2","unput","substr","pre_lines","more","backtrack_lexer","less","pastInput","maxSize","past","upcomingInput","maxPrefix","maxPostfix","deriveLocationInfo","actual","preceding","following","context_loc","context_loc2","l0","l1","lineno_display_width","ws_prefix","nonempty_line_indexes","lno","errpfx","clip_start","MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT","clip_end","intermediate_line","describeYYLLOC","display_range_too","l2","test_match","indexed_rule","backup","match_str","match_str_len","tempMatch","_currentRules","trackPosition","topState","regexes","pendingInput","activeCondition","conditionStackDepth","pushState","popState","stateStackSize","yyrulenumber","YY_START","simpleCaseActionClusters","0","29","30","31","32","33","34","35","36","37","38","39","inclusive","Parser","_cssUnitConverter","_cssUnitConverter2","convertAbsoluteLength","conversions","sourceUnit","targetUnit","converted","calc","prec","_reducer","HAS_MAP_SUPPORT","HAS_SET_SUPPORT","createComparator","createIsEqual","meta","isPlainObject","areObjectsEqual","aShape","bShape","areArraysEqual","sameValueZeroEqual","getTime","areRegExpsEqual","isPromiseLike","areMapsEqual","areSetsEqual","circularDeepEqual","createCircularEqualCreator","circularShallowEqual","_addClass","_removeClass","addClass","classes","removeClass","getClassNames","removeClasses","activeClassName","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","_this$getClassNames6","_hasClass","replaceClassName","origClass","classToRemove","_args","handleLifecycle","handleEntering","handleEntered","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","inProp","_React$Children$toArr","mergeChildMappings","getProp","nextChildMapping","hasPrev","hasNext","isLeaving","mapFn","mapper","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","minTickGap","tickFormatter","getNumberIntervalTicks","getTicksStart","getTicksEnd","preserveEnd","sizeKey","unitSize","tail","tailContent","tailSize","tailGap","tickCoord","isShow","viewBoxOld","restPropsOld","tx","ty","tickMargin","finalTickSize","axisLine","needHeight","needWidth","tickLine","finalTicks","getTickTextAnchor","getTickVerticalAnchor","customTickProps","tickLineProps","_this$getTickLineCoor","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","renderTickItem","noTicksProps","renderAxisLine","renderTicks","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","EventEmitter","Events","EE","emitter","_events","_eventsCount","clearEvent","eventNames","handlers","ee","listenerCount","a1","a2","a3","a4","a5","prefixed","isX","isY","getCoordinate","renderDot","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","p1","rangeMin","p2","rangeMax","getRect","renderRect","specifiedTicks","areas","idKey","valueKey","key1","key2","value2","isTouch","leaveTimer","travellerDragStartHandlers","handleDrag","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDragEnd","detachDragEndListener","handleLeaveWrapper","leaveTimeOut","handleEnterSlideOrTraveller","isTextActive","handleLeaveSlideOrTraveller","handleSlideDragStart","slideMoveStartX","attachDragEndListener","handleTravellerDragStart","lineY","Fragment","renderDefaultTraveller","travellerWidth","prevUpdateId","prevTravellerWidth","prevX","scalePoint","scaleValues","createScale","lastIndex","minIndex","getIndexInRange","maxIndex","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$setState","prevValue","isFullGap","chartElement","travellerX","traveller","travellerProps","renderTraveller","getTextOfTick","_this$props10","alwaysShowText","isPanoramic","renderBackground","renderPanorama","renderSlide","renderTravellerLayer","renderText","defaultFormatter","DefaultTooltipContent","separator","itemSorter","finalItemStyle","formatted","_formatted","wrapperClassName","contentStyle","labelClassName","labelStyle","labelFormatter","backgroundColor","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","CLS_PREFIX","getTranslate","tooltipDimension","viewBoxDimension","allowEscapeViewBox","restricted","unrestricted","filterNull","finalPayload","hasPayload","visibility","useTranslate3d","cls","cursorStyle","Cell","ZAxis","zAxisId","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","arrayLikeToArray","curData","baseProps","renderRectangle","interpolatorWidth","interpolatorHeight","_interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","backgroundProps","renderRectangles","minPointSize","stackedDomain","baseValue","rects","activeShape","renderSymbolItem","interpolatorCx","interpolatorCy","interpolatorSize","renderSymbolsStatically","renderSymbolsWithAnimation","dataPointFormatterY","dataPointFormatterX","linePoints","lineItem","lineType","lineJointType","scatterProps","customLineProps","_getLinearRegression","linearExp","renderSymbols","zAxis","xAxisDataKey","yAxisDataKey","zAxisDataKey","defaultRangeZ","defaultZ","xBandSize","yBandSize","__extends","__","__rest","patchResizeHandler","resizeCallback","refreshMode","refreshRate","refreshOptions","isSSR","isDOMElement","HTMLDocument","createNotifier","setSize","handleWidth","handleHeight","cancelHandler","resizeHandler","attachObserver","targetRef","observerOptions","getElement","observableElement","resizeObserver","observe","targetDomEl","currentElement","getRenderType","createResizeHandler","notifyResize","contentRect","skipOnMount","window.ResizeObserver","disconnect","typedChildren","WrapperTag","useEnhancedEffect","useLayoutEffect","skipResize","localRef","patchedResizeHandler","ComponentInner","forwardedRef","ResizeDetector","forwardRefWrapper","ResizeDetectorHOC","MapShim","class_1","__entries__","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","broadcastActive","attributes","childList","characterData","subtree","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","method","curBaseLine","prevBaseLine","areaProps","renderVerticalRect","renderHorizontalRect","stepBaseLine","stepPoints","_interpolator","renderAreaStatically","renderClipRect","renderAreaWithAnimation","renderArea","getBaseValue","originalValue","isBreakPoint","aspect","_ref$width","_ref$height","minHeight","_ref$debounce","_useState2","containerWidth","containerHeight","sizes","setSizes","containerRef","useImperativeHandle","_useState4","setMounted","getContainerSize","updateDimensionsImmediate","newSize","oldWidth","oldHeight","handleResize","_debounce","ReactResizeDetector","calculatedWidth","calculatedHeight","renderChart"],"mappings":"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","file":"static/js/europe-summer-length.app.2dcdad2f.chunk.js","sourcesContent":["import { Layer } from 'common/models/layer.model';\nimport { toCode } from './utils';\n\nexport enum Scenario {\n Historical = 'historical',\n SSP245 = 'ssp245',\n SSP585 = 'ssp585',\n}\n\nexport enum Variable {\n FirstDay = 'first_day',\n LastDay = 'last_day',\n SummerLength = 'summer_length',\n}\n\nexport const Colors: Record> = {\n [Scenario.Historical]: {\n [Variable.SummerLength]: ['#E0ECF4', '#4D004B'],\n [Variable.FirstDay]: ['#E0ECF4', '#4D004B'],\n [Variable.LastDay]: ['#E0ECF4', '#4D004B'],\n },\n [Scenario.SSP245]: {\n [Variable.SummerLength]: ['#E0ECF4', '#4D004B'],\n [Variable.FirstDay]: ['#4D004B', '#E0ECF4'],\n [Variable.LastDay]: ['#E0ECF4', '#4D004B'],\n },\n [Scenario.SSP585]: {\n [Variable.SummerLength]: ['#E0ECF4', '#4D004B'],\n [Variable.FirstDay]: ['#4D004B', '#E0ECF4'],\n [Variable.LastDay]: ['#E0ECF4', '#4D004B'],\n },\n};\n\nexport const Domains: Record<\n Scenario,\n Record\n> = {\n [Scenario.Historical]: {\n [Variable.SummerLength]: [60, 100],\n [Variable.FirstDay]: [160, 180],\n [Variable.LastDay]: [250, 270],\n },\n [Scenario.SSP245]: {\n [Variable.SummerLength]: [20, 40],\n [Variable.FirstDay]: [-25, -10],\n [Variable.LastDay]: [10, 25],\n },\n [Scenario.SSP585]: {\n [Variable.SummerLength]: [20, 40],\n [Variable.FirstDay]: [-25, -10],\n [Variable.LastDay]: [10, 25],\n },\n};\n\nexport type CityProperties = {\n name: string;\n scenario: Scenario;\n time_series: {\n [Variable.FirstDay]: number[];\n [Variable.LastDay]: number[];\n [Variable.SummerLength]: number[];\n date: number[];\n };\n};\n\nexport const HistoricalVariables: Layer[] = [\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.Historical, Variable.SummerLength),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.summer_length.name',\n units: 'days',\n description: 'europe-summer-length:variables.summer_length.description',\n },\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.Historical, Variable.FirstDay),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.first_day.name',\n units: 'day_of_year',\n description: 'europe-summer-length:variables.first_day.description',\n },\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.Historical, Variable.LastDay),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.last_day.name',\n units: 'day_of_year',\n description: 'europe-summer-length:variables.last_day.description',\n },\n];\n\nexport const SSP245Variables: Layer[] = [\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.SSP245, Variable.SummerLength),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.summer_length_change.name',\n units: 'days',\n description:\n 'europe-summer-length:variables.summer_length_change.description',\n },\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.SSP245, Variable.FirstDay),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.first_day_change.name',\n units: 'day_of_year',\n description: 'europe-summer-length:variables.first_day_change.description',\n },\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.SSP245, Variable.LastDay),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.last_day_change.name',\n units: 'day_of_year',\n description: 'europe-summer-length:variables.last_day_change.description',\n },\n];\n\nexport const SSP585Variables: Layer[] = [\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.SSP585, Variable.SummerLength),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.summer_length_change.name',\n units: 'days',\n description:\n 'europe-summer-length:variables.summer_length_change.description',\n },\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.SSP585, Variable.FirstDay),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.first_day_change.name',\n units: 'day_of_year',\n description: 'europe-summer-length:variables.first_day_change.description',\n },\n {\n animated: false,\n baseUrl: '',\n code: toCode(Scenario.SSP585, Variable.LastDay),\n icon: null,\n legend: false,\n name: 'europe-summer-length:variables.last_day_change.name',\n units: 'day_of_year',\n description: 'europe-summer-length:variables.last_day_change.description',\n },\n];\n\nexport const EuropeSummerLengthLayers = [\n {\n title: 'europe-summer-length:scenarios.historical.name',\n layers: HistoricalVariables,\n },\n {\n title: 'europe-summer-length:scenarios.ssp245.name',\n layers: SSP245Variables,\n },\n {\n title: 'europe-summer-length:scenarios.ssp585.name',\n layers: SSP585Variables,\n },\n];\n","import { Scenario, Variable, Colors, CityProperties, Domains } from './models';\nimport { extent, scaleLinear, geoIdentity, color } from 'd3';\nimport { FeatureLike } from 'ol/Feature';\nimport { DateTime } from 'luxon';\n\nconst _period = [2015, 2040];\n\nexport const toCode = (scenario: Scenario, variable: Variable): string =>\n `${scenario}__${variable}`;\n\nexport const fromCode = (\n code: string\n): { scenario: Scenario; variable: Variable } => {\n const [scenario, variable] = code.split('__');\n return {\n scenario: scenario as Scenario,\n variable: variable as Variable,\n };\n};\n\nexport const calcSummerLength = (geojson: any): any => {\n const features: any[] = [];\n for (let feature of geojson.features) {\n const summerLengthColl: Array = [];\n\n for (let i = 0; i < feature.properties.time_series.date.length; i++) {\n const firstDay = feature.properties.time_series.first_day[i];\n const lastDay = feature.properties.time_series.last_day[i];\n const sl =\n lastDay && firstDay ? Math.floor(Math.abs(lastDay - firstDay)) : null;\n summerLengthColl.push(sl);\n }\n\n features.push({\n ...feature,\n properties: {\n ...feature.properties,\n time_series: {\n ...feature.properties.time_series,\n summer_length: summerLengthColl,\n },\n },\n });\n }\n\n return {\n ...geojson,\n features,\n };\n};\n\nexport const median = (data: number[]) => {\n const filtered = data.filter((n) => n !== null && !isNaN(n));\n const l = filtered.length;\n const sorted = filtered.slice().sort((n1, n2) => n1 - n2);\n const m = sorted[Math.round(l / 2)];\n\n if (m == null) {\n debugger;\n }\n\n return m;\n};\n\nconst mean = (data: number[]): number => {\n const filtered = data.filter((n) => n !== null && !isNaN(n));\n const acc = filtered.reduce((acc, curr) => acc + curr, 0);\n const l = filtered.length;\n return acc / l;\n};\n\nexport const getMapValue = (\n feature: FeatureLike,\n historicalData: any,\n variable: Variable,\n scenario: Scenario\n): number => {\n if (scenario === Scenario.Historical) {\n const featValues = feature.getProperties().time_series[variable];\n const _mean = mean(featValues);\n return _mean;\n } else {\n const featProps = feature.getProperties();\n const { name, time_series } = featProps;\n\n const histData = historicalData.features.find(\n (f: any) => f.properties.name === name\n );\n\n if (histData) {\n const featValues = time_series[variable];\n const histValues = histData.properties.time_series[variable];\n const featMean = mean(featValues);\n const histMean = mean(histValues);\n\n return featMean - histMean;\n }\n\n return 0;\n }\n};\n\nexport const getScale = (\n geojson: any,\n variable: Variable,\n scenario: Scenario\n): any => {\n const colors = Colors[scenario][variable] as any[];\n let values = Domains[scenario][variable] as number[];\n\n return scaleLinear().range(colors).domain(values);\n};\n\nexport const computeChartData = (\n geojsons: Record,\n selectedCity: CityProperties,\n selectedScenario: Scenario\n) => {\n const chartData: any[] = [];\n\n const historicalCity: CityProperties = geojsons.historical.features.find(\n (c: any) => c.properties.name === selectedCity.name\n )?.properties;\n const scenarioCity: CityProperties = geojsons[selectedScenario].features.find(\n (c: any) => c.properties.name === selectedCity.name\n )?.properties;\n\n for (let city of [historicalCity, scenarioCity]) {\n for (let i = 0; i < city.time_series.date.length; i++) {\n const { date, first_day, last_day, summer_length } = city.time_series;\n\n chartData.push({\n date: date[i],\n first_day: first_day[i]?.toFixed(),\n last_day: last_day[i]?.toFixed(),\n area:\n first_day[i] && last_day[i]\n ? [first_day[i].toFixed(), last_day[i].toFixed()]\n : null,\n summer_length: summer_length[i],\n });\n }\n }\n\n return chartData.sort((d1, d2) => d1.date - d2.date);\n};\n\nexport const getDayOfTheYear = (day: number, year: number): string => {\n const date = DateTime.fromObject({\n year: year,\n })\n .plus({ day })\n .setLocale('en');\n return date.toFormat('MMMM d');\n};\n","import React from 'react';\n\nimport { ScaleLinear, color, extent } from 'd3';\n\nimport { Variable } from './models';\n\nimport { useTranslation } from 'react-i18next';\nimport { SideMenuSegment } from 'components/side-menu-segment/SideMenuSegment';\n\nimport './Legend.scss';\n\ninterface LegendProps {\n scale: ScaleLinear;\n variable: Variable;\n}\nexport const Legend = (props: LegendProps) => {\n const { t } = useTranslation('eolic-generation');\n\n const steps = React.useMemo(() => {\n let _steps = [];\n\n const [min, max] = extent(props.scale.domain()) as [number, number];\n const stepNumber = 9;\n\n const delta = (max - min) / stepNumber;\n\n for (let i = 0; i < stepNumber; i++) {\n const startValue = min + delta * i;\n const endValue = min + delta * (i + 1);\n const mean = (startValue + endValue) / 2;\n const startColor = color(props.scale(startValue))?.hex();\n const endColor = color(props.scale(endValue))?.hex();\n\n _steps.push({\n startValue: startValue.toFixed(),\n endValue: endValue.toFixed(),\n mean,\n startColor,\n endColor,\n });\n }\n\n return _steps;\n }, [props.scale]);\n\n return (\n \n
\n Legend \n \n {t(\n `commons:units.${\n props.variable === Variable.SummerLength ? 'days' : 'day_of_year'\n }.label`\n )}\n \n
\n
\n {steps.map((step, i) => {\n const first = i === 0,\n last = i === steps.length - 1;\n return (\n
\n \n \n {step.startValue}\n \n \n {step.endValue}\n \n
\n \n
\n );\n })}\n \n
\n );\n};\n","import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { AppTitle } from 'components/app-title/AppTitle';\n\nimport './SideMenu.scss';\nimport { SideMenuSegment } from 'components/side-menu-segment/SideMenuSegment';\nimport { LayerSelector } from 'components/layer-selector/LayerSelector';\nimport { EuropeSummerLengthLayers, Variable } from './models';\nimport { Layer } from 'common/models/layer.model';\nimport { ScaleLinear } from 'd3';\nimport { Legend } from './Legend';\nimport { ViewerDescription } from 'components/viewer-description/ViewerDescription';\nimport { ListRowProps } from 'react-virtualized';\nimport { SearchInput } from 'components/search-input/SearchInput';\n\ninterface SideMenuProps {\n selectedLayer: Layer;\n scale?: ScaleLinear;\n variable: Variable;\n searchTerm: string;\n results: string[];\n onRowClick(element: string): void;\n onSearchTermChange(searchTerm: string): void;\n setSelectedLayer(layer: Layer): void;\n}\nexport const SideMenu = (props: SideMenuProps) => {\n const { t } = useTranslation('europe-summer-length');\n\n return (\n <>\n \n {t('europe-summer-length:title')}\n \n\n {props.scale && }\n\n (\n \n )}\n />\n\n {EuropeSummerLengthLayers.map(({ title, layers }) => (\n \n ))}\n \n \n \n \n );\n};\n\ninterface RowRendererProps {\n rowProps: ListRowProps;\n element: string;\n onRowClick(element: string): void;\n}\nconst RowRenderer = (props: RowRendererProps) => {\n return (\n props.onRowClick(props.element)}\n >\n {props.rowProps.isVisible ? (\n
{props.element}
\n ) : (\n '...'\n )}\n \n );\n};\n","import React from 'react';\n\nimport { Scenario, CityProperties } from './models';\n\nimport './Chart.scss';\nimport {\n ResponsiveContainer,\n ComposedChart,\n XAxis,\n YAxis,\n Tooltip,\n Line,\n Area,\n Bar,\n Legend,\n} from 'recharts';\nimport { Select } from 'components/select/Select';\nimport { useTranslation } from 'react-i18next';\nimport { computeChartData, getDayOfTheYear } from './utils';\n\ninterface ChartProps {\n geojsons: Record;\n selectedCity: CityProperties;\n}\nexport const Chart = (props: ChartProps) => {\n const { t } = useTranslation(['commons', 'europe-summer-length']);\n\n const [selectedScenario, setSelectedScenario] = React.useState(\n Scenario.SSP585\n );\n\n const selectOptions = React.useMemo(() => {\n return [\n {\n label: t(`europe-summer-length:modal.select.${Scenario.SSP245}`),\n value: Scenario.SSP245,\n },\n {\n label: t(`europe-summer-length:modal.select.${Scenario.SSP585}`),\n value: Scenario.SSP585,\n },\n ];\n }, [t]);\n\n const chartData = React.useMemo(() => {\n const cd = computeChartData(\n props.geojsons,\n props.selectedCity,\n selectedScenario\n );\n return cd;\n }, [props.selectedCity, selectedScenario]);\n\n const [yLeftLabel] = React.useMemo(() => {\n return [\n `${t(`europe-summer-length:variables.area.name`)} (${t(\n `commons:units.day_of_year.label`\n )})`,\n ];\n }, [selectedScenario, t]);\n\n const primaryColor = '#43a2ca';\n\n return (\n
\n
\n \n {t('europe-summer-length:modal.select.label')}:\n \n \n setSelectedScenario(value)\n }\n />\n
\n\n \n \n \n \n\n \n formatTooltip(value, label, payload)\n }\n />\n\n \n\n \n \n \n
\n );\n};\n\nconst formatTooltip = (value: any, label: string, payload: any): string => {\n const firstDay = getDayOfTheYear(value[0], payload.date);\n const lastDay = getDayOfTheYear(value[1], payload.date);\n const sl = value[1] - value[0];\n return `From ${firstDay} to ${lastDay} (${sl} days)`;\n};\n","import React from 'react';\n\nimport { I18nContext, withTranslation } from 'react-i18next';\nimport { Circle, Fill, Stroke, Style } from 'ol/style';\nimport { fromLonLat } from 'ol/proj';\nimport { MapBrowserPointerEvent, View } from 'ol';\nimport VectorLayer from 'ol/layer/Vector';\nimport { FeatureLike } from 'ol/Feature';\nimport GeoJSON from 'ol/format/GeoJSON';\n\nimport { CoreLayout } from 'components/core-layout/CoreLayout';\nimport { SideMenu as CoreSideMenu } from 'components/side-menu/SideMenu';\nimport { EmptyMap } from 'components/map/EmptyMap';\nimport { Modal } from 'components/modal/Modal';\n\nimport { FAKE_LAYER, Layer } from 'common/models/layer.model';\nimport { ViewerApp, ViewerAppState } from 'common/ViewerApp';\nimport { throttle } from 'common/utils/utils';\n\nimport { SideMenu } from './SideMenu';\nimport { HistoricalVariables, Scenario, CityProperties } from './models';\nimport { fromCode, calcSummerLength, getScale } from './utils';\nimport { color, ScaleLinear } from 'd3';\nimport { Chart } from './Chart';\n\nimport './EuropeSummerLengthApp.scss';\n\ninterface EuropeSummerLengthAppState extends ViewerAppState {\n geojson?: any;\n showChart: boolean;\n searchTerm: string;\n searchResults: any[];\n selectedCity?: CityProperties;\n colorScale?: ScaleLinear;\n cache: Record;\n}\n\nexport class EuropeSummerLengthApp extends ViewerApp<\n EuropeSummerLengthAppState,\n EmptyMap\n> {\n static initialState: EuropeSummerLengthAppState = {\n opacity: 50,\n selectedLayer: HistoricalVariables[0],\n showDescription: false,\n showChart: false,\n wmsParams: {},\n searchResults: [],\n searchTerm: '',\n cache: {\n [Scenario.Historical]: null,\n [Scenario.SSP245]: null,\n [Scenario.SSP585]: null,\n },\n };\n\n constructor(props: any) {\n super(props);\n\n this.state = EuropeSummerLengthApp.initialState;\n\n this.onMapClick = this.onMapClick.bind(this);\n this.onSearchChange = this.onSearchChange.bind(this);\n this.onMapReady = this.onMapReady.bind(this);\n this.searchRender = throttle(this.searchRender.bind(this), 300);\n this.onLayerChange = this.onLayerChange.bind(this);\n this.onRowClick = this.onRowClick.bind(this);\n this.onCitySelect = this.onCitySelect.bind(this);\n }\n\n async onMapReady() {\n await this.loadGeojsons();\n this.setState({}, () => {\n this.setMapHover();\n });\n }\n\n onLayerChange(layer: Layer) {\n const { scenario } = fromCode(layer.code);\n this.setState(\n {\n selectedLayer: layer,\n geojson: this.state.cache[scenario],\n },\n () => {\n this.drawGeoJSON(this.state.cache[scenario]);\n }\n );\n }\n\n async loadGeojsons() {\n const [historical, ssp245, ssp585] = await Promise.all([\n fetch(`/data/europe-summer-length/results_${Scenario.Historical}.json`)\n .then((r) => r.json())\n .then((geo) => calcSummerLength(geo)),\n fetch(`/data/europe-summer-length/results_${Scenario.SSP245}.json`)\n .then((r) => r.json())\n .then((geo) => calcSummerLength(geo)),\n fetch(`/data/europe-summer-length/results_${Scenario.SSP585}.json`)\n .then((r) => r.json())\n .then((geo) => calcSummerLength(geo)),\n ]);\n\n this.setState(\n {\n cache: {\n [Scenario.Historical]: historical,\n [Scenario.SSP245]: ssp245,\n [Scenario.SSP585]: ssp585,\n },\n },\n () => {\n this.onLayerChange(this.state.selectedLayer);\n }\n );\n }\n\n searchRender(searchTerm: string, geojson: any) {\n if (geojson) {\n if (searchTerm.trim()) {\n const results: any[] = [];\n const newGeoJson = {\n ...geojson,\n features: geojson.features.map((f: any) => {\n if (\n f.properties.name.toLowerCase().includes(searchTerm.toLowerCase())\n ) {\n results.push(f.properties.name);\n return {\n ...f,\n properties: {\n ...f.properties,\n __isResult: true,\n },\n };\n }\n return f;\n }),\n };\n this.setState({ searchResults: results }, () => {\n this.drawGeoJSON(newGeoJson);\n });\n } else {\n this.setState({ searchResults: [] }, () => {\n this.drawGeoJSON(geojson);\n });\n }\n }\n }\n\n onSearchChange(term: string) {\n this.setState({ searchTerm: term }, () => {\n this.searchRender(term, this.state.geojson);\n });\n }\n\n renderMenuContent() {\n return null;\n }\n\n getWmsParams(layer: Layer) {\n return {};\n }\n\n setMapHover() {\n if (this.mapRef.current) {\n this.mapRef.current.map.on('pointermove', (evt) => {\n var hit = this.mapRef.current?.map.forEachFeatureAtPixel(\n evt.pixel,\n function (feature, layer) {\n return true;\n }\n );\n if (this.mapRef.current?.map) {\n if (hit) {\n this.mapRef.current.map.getTargetElement().style.cursor = 'pointer';\n } else {\n this.mapRef.current.map.getTargetElement().style.cursor = '';\n }\n }\n });\n }\n }\n\n drawGeoJSON(data: any) {\n if (this.mapRef.current) {\n const { variable, scenario } = fromCode(this.state.selectedLayer.code);\n const colorScale = getScale(data, variable, scenario);\n\n this.mapRef.current.drawGeoJSON(\n {\n ...data,\n features: data.features.map((f: any) => {\n return {\n ...f,\n geometry: {\n ...f.geometry,\n coordinates: fromLonLat(f.geometry.coordinates),\n },\n };\n }),\n },\n (feat: FeatureLike) => {\n const suffix = scenario === Scenario.Historical ? '_mean' : '_delta';\n const key = `${variable}${suffix}`;\n const d = feat.getProperties()[key];\n\n if (isNaN(d)) {\n return new Style({\n fill: new Fill({ color: 'transparent' }),\n stroke: new Stroke({ color: 'transparent' }),\n });\n }\n\n const sc = colorScale(d);\n return new Style({\n image: new Circle({\n radius: 6,\n fill: new Fill({\n color: sc ? color(sc)?.formatHex() : sc,\n }),\n stroke: new Stroke({\n color: feat.getProperties().__isResult ? '#48CAE4' : '#A6A6A6',\n width: feat.getProperties().__isResult ? 4 : 2,\n }),\n }),\n });\n }\n );\n this.setState({\n colorScale,\n });\n }\n this.mapRef.current?.map?.updateSize();\n }\n\n onMapClick(evt: MapBrowserPointerEvent): void {\n if (this.mapRef.current) {\n let foundOne = false;\n this.mapRef.current.map.forEachFeatureAtPixel(evt.pixel, (f) => {\n if (f && f.getProperties() && !foundOne) {\n foundOne = true;\n this.onCitySelect(\n f.getProperties() as CityProperties,\n f.getGeometry()?.getProperties().coordinates\n );\n }\n });\n }\n }\n\n onRowClick(name: string) {\n if (this.state.geojson) {\n const city = this.state.geojson.features.find(\n (f: any) => f.properties.name === name\n );\n if (city) {\n this.onCitySelect(\n city.properties as CityProperties,\n city.geometry.coordinates\n );\n }\n }\n }\n\n onCitySelect(city: CityProperties, coords: number[]) {\n this.setState(\n {\n selectedCity: city,\n showChart: true,\n searchResults: [],\n searchTerm: city.name,\n },\n () => {\n if (this.mapRef.current && coords) {\n this.mapRef.current.map\n .getView()\n .animate({ center: fromLonLat(coords), zoom: 10 });\n }\n }\n );\n }\n\n render() {\n return (\n (\n (\n \n )}\n ref={this.menuRef}\n />\n )}\n bodyRender={() => (\n \n )}\n fixedContentRender={() => (\n <>\n \n this.setState({\n showChart: false,\n selectedCity: undefined,\n searchTerm: '',\n })\n }\n show={this.state.showChart}\n title={`${this.state.selectedCity?.name}`}\n >\n {this.state.selectedCity && (\n \n )}\n \n \n )}\n />\n );\n }\n}\n\nEuropeSummerLengthApp.contextType = I18nContext;\n\nexport default withTranslation(['commons', 'europe-summer-length'])(\n EuropeSummerLengthApp\n);\n","import _isObject from \"lodash/isObject\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isValidElement } from 'react';\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nvar SVGElementPropKeys = ['className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style', 'target', 'type', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'points', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture']; // Animation Types => TODO: Should be moved when react-smooth is typescriptified.\n\nexport var filterProps = function filterProps(props, includeEvents, isSvg) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n // viewBox only exist in \n if (SVGElementPropKeys.includes(key) || isSvg && SVGContainerPropKeys.includes(key) || includeEvents && EventKeys.includes(key)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\n\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\n\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!_isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n/**\n * 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 */\n\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isNumber(percent) && !_isString(percent)) {\n return defaultValue;\n }\n\n var value;\n\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n\n if (_isNaN(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n\n var keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!_isArray(ary)) {\n return false;\n }\n\n var len = ary.length;\n var cache = {};\n\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\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 */\n\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n\n for (var i = 0; i < len; i++) {\n xsum += data[i].cx;\n ysum += data[i].cy;\n xysum += data[i].cx * data[i].cy;\n xxsum += data[i].cx * data[i].cx;\n xmin = Math.min(xmin, data[i].cx);\n xmax = Math.max(xmax, data[i].cx);\n }\n\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","/**\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 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","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","/**\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","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _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; }\n\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; }\n\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport function Layer(props) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, [\"children\", \"className\"]);\n\n var layerClass = classNames('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true)), children);\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","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","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","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\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 i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\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 {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 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(x) {\n return function() {\n return x;\n };\n}\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","import _isString from \"lodash/isString\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\n\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; }\n\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; }\n\nimport { Children } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\n\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n\n if (!Comp) {\n return '';\n }\n\n return Comp.displayName || Comp.name || 'Component';\n}; // `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\n\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n if (children === lastChildren && _isArray(lastResult)) {\n return lastResult;\n }\n\n var result = [];\n Children.forEach(children, function (child) {\n if (_isNil(child)) return;\n\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n/*\n * Find and return all matched children by type. `type` can be a React element class or\n * string\n */\n\nexport var findAllByType = function findAllByType(children, type) {\n var result = [];\n var types = [];\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n toArray(children).forEach(function (child) {\n var childType = _get(child, 'type.displayName') || _get(child, 'type.name');\n\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n};\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` can be a React element class or string.\n */\n\nexport var findChildByType = function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n};\n/*\n * Create a new array of children excluding the ones matched the type\n */\n\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n toArray(children).forEach(function (child) {\n var displayName = _get(child, 'type.displayName');\n\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n\n newChildren.push(child);\n });\n return newChildren;\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 */\n\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\n\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\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 */\n\n\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\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 */\n\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n var count = Children.count(nextChildren);\n\n if (count !== Children.count(prevChildren)) {\n return false;\n }\n\n if (count === 0) {\n return true;\n }\n\n if (count === 1) {\n // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n\n if (_isArray(nextChild) || _isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n } // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (_isNil(nextChild) && _isNil(prevChild)) {\n return true;\n }\n\n if (!_isNil(nextChild) && !_isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, [\"children\"]);\n\n if (nextChildren && prevChildren) {\n // eslint-disable-next-line no-use-before-define\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n\n return false;\n }\n\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\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","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","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);","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isNaN from \"lodash/isNaN\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport * as d3Scales from 'd3-scale';\nimport { stack as shapeStack, stackOrderNone, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { isNumOrStr, uniqueId, isNumber, getPercentValue, mathSign, findEntryInArray } from './DataUtils';\nimport { Legend } from '../component/Legend';\nimport { findAllByType, findChildByType, getDisplayName } from './ReactUtils'; // TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { filterProps } from './types';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\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 */\n\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = _flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n\n if (type === 'number') {\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n }\n\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !_isNil(entry);\n }) : flattenData; // 支持Date类型的x轴\n\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n if (len > 1) {\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range; // ticks are distributed in a circle\n\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var min = Math.min(before, after);\n var max = Math.max(before, after);\n\n if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n } else {\n index = 0;\n }\n\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\n\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n\n default:\n result = fill;\n break;\n }\n\n return result;\n};\nexport var getLegendProps = function getLegendProps(_ref2) {\n var children = _ref2.children,\n formattedGraphicalItems = _ref2.formattedGraphicalItems,\n legendWidth = _ref2.legendWidth,\n legendContent = _ref2.legendContent;\n var legendItem = findChildByType(children, Legend.displayName);\n\n if (!legendItem) {\n return null;\n }\n\n var legendData;\n\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function (result, _ref3) {\n var item = _ref3.item,\n props = _ref3.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function (_ref4) {\n var item = _ref4.item;\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n name = _item$props2.name,\n legendType = _item$props2.legendType,\n hide = _item$props2.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\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 */\n\nexport var getBarSizeList = function getBarSizeList(_ref5) {\n var globalSize = _ref5.barSize,\n _ref5$stackGroups = _ref5.stackGroups,\n stackGroups = _ref5$stackGroups === void 0 ? {} : _ref5$stackGroups;\n\n if (!stackGroups) {\n return {};\n }\n\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: _isNil(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n\n return result;\n};\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\n\nexport var getBarPosition = function getBarPosition(_ref6) {\n var barGap = _ref6.barGap,\n barCategoryGap = _ref6.barCategoryGap,\n bandSize = _ref6.bandSize,\n _ref6$sizeList = _ref6.sizeList,\n sizeList = _ref6$sizeList === void 0 ? [] : _ref6$sizeList,\n maxBarSize = _ref6.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result; // whether or not is barSize setted by user\n\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n\n return newRes;\n }, []);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n\n return newRes;\n }, []);\n }\n\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0); // const legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n var newOffset = offset;\n\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'center') && isNumber(offset[align])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n\n return newOffset;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, 'ErrorBar').filter(function (errorBarChild) {\n var direction = errorBarChild.props.direction;\n return _isNil(direction) || _isNil(axisType) ? true : axisType.indexOf(direction) >= 0;\n });\n\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, axisType);\n }).filter(function (entry) {\n return !_isNil(entry);\n });\n\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\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 {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\n\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\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(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n var tag = {}; // Get the union set of category axis\n\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n result.push(entry[i]);\n }\n }\n\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} min The minimun value of axis\n * @param {Number} max The maximun value of axis\n * @return {Array} Coordinates\n */\n\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n\n if (entry.coordinate === max) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(min);\n }\n\n if (!hasMax) {\n values.push(max);\n }\n\n return values;\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 */\n\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / 2 : 0;\n offset = axis.axisType === 'angleAxis' ? mathSign(range[0] - range[1]) * 2 * offset : offset; // The ticks setted by user should only affect the ticks adjacent to axis line\n\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n return (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\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\n\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis has duplicated text, serial numbers are used to generate scale\n\n\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler;\n\n if (_isFunction(childHandler)) {\n customizedHandler = childHandler;\n } else if (_isFunction(parentHandler)) {\n customizedHandler = parentHandler;\n }\n\n if (_isFunction(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (_isFunction(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n\n if (_isFunction(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n\n return null;\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 {Function} The scale function\n */\n\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (_isString(scale)) {\n var name = \"scale\".concat(_upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n\n return _isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n\n return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n\n if (!isNumber(value[0]) || value[0] < min) {\n result[0] = min;\n }\n\n if (!isNumber(value[1]) || value[1] > max) {\n result[1] = max;\n }\n\n if (result[0] > max) {\n result[0] = max;\n }\n\n if (result[1] < min) {\n result[1] = min;\n }\n\n return result;\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\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 */\n\n }\n }\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\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 */\n\n }\n }\n};\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: stackOffsetExpand,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n } // reversing items to affect render order (for layering)\n\n\n var items = reverseStackOrder ? _items.reverse() : _items;\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n\n if (hide) {\n return result;\n }\n\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, {});\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, {});\n};\n/**\n * get domain of ticks\n * @param {Array} ticks Ticks of axis\n * @param {String} type The type of axis\n * @return {Array} domain\n */\n\nexport var calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n if (type === 'number') {\n return [_min(ticks), _max(ticks)];\n }\n\n return ticks;\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 */\n\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n\n if (!domain.length) {\n return null;\n }\n\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain(calculateDomainOfTicks(tickValues, type));\n return {\n niceTicks: tickValues\n };\n }\n\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n\n return {\n niceTicks: _tickValues\n };\n }\n\n return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index,\n dataKey = _ref7.dataKey;\n\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n var 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 var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref8) {\n var axis = _ref8.axis,\n ticks = _ref8.ticks,\n offset = _ref8.offset,\n bandSize = _ref8.bandSize,\n entry = _ref8.entry,\n index = _ref8.index;\n\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref9) {\n var numericAxis = _ref9.numericAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n if (min <= 0 && max >= 0) {\n return 0;\n }\n\n if (max < 0) {\n return max;\n }\n\n return min;\n }\n\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n\n if (group && group.items.length) {\n var itemIndex = -1;\n\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\n\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (!_isArray(specifiedDomain)) {\n return dataDomain;\n }\n\n var domain = [];\n /* eslint-disable prefer-destructuring */\n\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (_isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\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\n return domain;\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 */\n\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n var bandWidth = axis.scale.bandwidth();\n\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = _sortBy(ticks, function (o) {\n return o.coordinate;\n });\n\n var bandSize = Infinity;\n\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\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 element\n * @returns {Array} domains\n */\n\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n\n if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props,\n dataKey = _graphicalItem$props.dataKey,\n name = _graphicalItem$props.name,\n unit = _graphicalItem$props.unit,\n formatter = _graphicalItem$props.formatter,\n tooltipType = _graphicalItem$props.tooltipType,\n chartType = _graphicalItem$props.chartType;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType\n });\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","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 parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\n\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\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","/**\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 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","import { useMedia } from './useMedia';\n\ninterface Breakpoints {\n xs: string;\n md: string;\n lg: string;\n xl: string;\n}\n\nconst bps: Breakpoints = {\n xs: '(max-width: 599px)',\n md: '(max-width: 768px)',\n lg: '(max-width: 992px)',\n xl: '(min-width: 992px)'\n};\n\nconst defaultBp = 'md';\n\nexport const useBreakpoint = (): keyof Breakpoints =>\n useMedia(Object.values(bps), Object.keys(bps), defaultBp);\n\nexport const isSmall = (bp: keyof Breakpoints) => bp === 'xs';\n","import { useState, useEffect, useCallback } from 'react';\n\nexport const useMedia = (\n queries: string[],\n values: any[],\n defaultValue: any,\n first: boolean = true\n) => {\n // Array containing a media query list for each query\n const mediaQueryLists = queries.map(q => window.matchMedia(q));\n\n // Function that gets value based on matching media query\n const getValue = useCallback(() => {\n // Get index of first media query that matches\n const index = first\n ? mediaQueryLists.findIndex(mql => mql.matches)\n : mediaQueryLists.reverse().findIndex(mql => mql.matches);\n // Return related value or defaultValue if none\n return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\n }, [first, mediaQueryLists, defaultValue, values]);\n\n // State and setter for matched value\n const [value, setValue] = useState(getValue);\n\n useEffect(() => {\n // Event listener callback\n // Note: By defining getValue outside of useEffect we ensure that it has ...\n // ... current values of hook args (as this hook callback is created once on mount).\n const handler = () => setValue(getValue);\n // Set a listener for each media query with above handler as callback.\n mediaQueryLists.forEach(mql => mql.addListener(handler));\n // Remove listeners on cleanup\n return () => mediaQueryLists.forEach(mql => mql.removeListener(handler));\n }, [getValue, mediaQueryLists]); // Empty array ensures effect is only run on mount and unmount\n\n return value;\n};\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import React from 'react';\n\nimport './Button.scss';\n\ninterface ButtonProps {\n type?: 'normal' | 'fab';\n mode?: 'normal' | 'outline' | 'clear';\n variant?: 'primary' | 'secondary';\n className?: string;\n title?: string;\n onClick(evt: any): void;\n onHover?(evt: any): void;\n}\n\nexport const Button = ({\n type = 'normal',\n mode = 'outline',\n variant = 'secondary',\n className,\n title,\n onClick,\n onHover,\n children\n}: React.PropsWithChildren) => {\n const intOnClick = (evt: any) => {\n onClick && onClick(evt);\n };\n\n const intOnHover = (evt: any) => {\n onHover && onHover(evt);\n };\n\n return (\n \n {children}\n \n );\n};\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 root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { CSSTransition } from 'react-transition-group';\nimport { CancelIcon } from 'components/svg-icon';\n\nimport './Modal.scss';\n\nexport const Modal = ({\n handleClose,\n show,\n className = '',\n title = '',\n children,\n}: React.PropsWithChildren<{\n show: boolean;\n className?: string;\n title?: string | JSX.Element;\n handleClose(): void;\n}>) => {\n const { t } = useTranslation();\n return (\n \n \n
\n
\n {'string' === typeof title ? (\n \n ) : (\n title\n )}\n \n
\n
\n
{children}
\n
\n
\n \n \n );\n};\n","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Text } from './Text';\nimport { findAllByType } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/types';\n\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = _isNil(props.children) ? value : props.children;\n\n if (_isFunction(formatter)) {\n return formatter(label);\n }\n\n return label;\n};\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\n\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n\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 var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: classNames('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\n\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n\n return {\n x: _x,\n y: _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 var r = (innerRadius + outerRadius) / 2;\n\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height; // Define vertical offsets and position inverts based on the value being positive or negative\n\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end'; // Define horizontal offsets and position inverts based on the value being positive or negative\n\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\n\nvar isPolar = function isPolar(viewBox) {\n return isNumber(viewBox.cx);\n};\n\nexport function Label(props) {\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n\n if (!viewBox || _isNil(value) && _isNil(children) && ! /*#__PURE__*/isValidElement(content) && !_isFunction(content)) {\n return null;\n }\n\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n\n var label;\n\n if (_isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: classNames('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nLabel.defaultProps = {\n offset: 5\n};\n\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n\n if (labelViewBox) {\n return labelViewBox;\n }\n\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n\n if (props.viewBox) {\n return props.viewBox;\n }\n\n return {};\n};\n\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n\n return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label.displayName).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n key: \"label-\".concat(index)\n });\n });\n\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\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 */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, 'Bar');\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function (value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var 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 var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n } else {\n range = axis.range;\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\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 var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\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 _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * 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 */\n\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n\n this.scale = void 0;\n this.scale = scale;\n }\n\n _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n\n if (value === undefined) {\n return undefined;\n }\n\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n\n return this.scale(value) + _offset;\n }\n\n default:\n {\n return this.scale(value);\n }\n }\n }\n\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n\n return this.scale(value) + _offset2;\n }\n\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n\n return ScaleHelper;\n}();\nScaleHelper.EPS = 1e-4;\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware,\n position = _ref5.position;\n\n return _mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return _every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};","import React from 'react';\n\nimport './Loading.scss';\n\nexport interface LoadingProps {\n show: boolean;\n}\nexport const Loading = (props: LoadingProps) => {\n const loadRef = React.useRef(null);\n\n const [style, setStyle] = React.useState({ top: '50%', left: '50%' });\n\n React.useEffect(() => {\n if (loadRef.current) {\n const parent = loadRef.current.parentElement;\n const parentBounds = parent?.getBoundingClientRect();\n if (parentBounds) {\n const top = `${parentBounds.top + parentBounds.height / 2 - 20}px`;\n const left = `${parentBounds.left + parentBounds.width / 2 - 20}px`;\n\n setStyle({ top, left });\n }\n }\n }, [props.show]);\n\n return (\n \n
\n
\n
\n
\n
\n
\n
\n );\n};\n","import raf from 'raf';\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n raf(shouldUpdate);\n }\n };\n\n raf(shouldUpdate);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n\n var handleChange = function handleChange() {\n return null;\n };\n\n var shouldStop = false;\n\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n\n var styles = _style;\n\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n\n if (typeof _style === 'function') {\n _style();\n }\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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\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 * @description: convert camel case to dash case\n * string => string\n */\n\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\n\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n return _defineProperty({}, name, value);\n }\n\n var isTransition = name === 'transition';\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var styleVal = value;\n return PREFIX_LIST.reduce(function (result, property, i) {\n if (isTransition) {\n styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, property + camelName, styleVal));\n }, {});\n};\nexport var log = function log() {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n};\n/*\n * @description: log the value of a varible\n * string => any => any\n */\n\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\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\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 * @description: map object on every element in this object.\n * (function, object) => object\n */\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};\n/*\n * @description: add compatible prefix to style\n * object => object\n */\n\nexport var translateStyle = function translateStyle(style) {\n return Object.keys(style).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), generatePrefixStyle(key, res[key]));\n }, style);\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\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 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\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(); }\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 _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\nfunction _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\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\n\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\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};\n\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\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}; // calculate cubic-bezier using Newton's method\n\n\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\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n\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\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n default:\n {\n var easing = args[0].split('(');\n\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\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n\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\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\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n } else if (value < 0) {\n return 0;\n }\n\n return value;\n };\n\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n\n x = rangeValue(x - evalT / derVal);\n }\n\n return curveY(x);\n };\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\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\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n\n return [newX, newV];\n };\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\n var easing = args[0];\n\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\n case 'spring':\n return configSpring();\n\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\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\n if (typeof easing === 'function') {\n return easing;\n }\n\n warn(false, '[configEasing]: first argument type should be function or ' + 'string, instead received %s', args);\n return null;\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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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\nimport raf, { cancel as caf } from 'raf';\nimport { getIntersectionKeys, mapObject } from './util';\n\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\n\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\n\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\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n\n return val;\n }, preVals);\n\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\n return val;\n }, preVals);\n }\n\n return calStepperVals(easing, nextStepVals, steps - 1);\n}; // configure update function\n\n\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\n var update = function update() {\n return null;\n };\n\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n }; // stepper timing function like spring\n\n\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps); // get union set and add compatible prefix\n\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n\n if (!shouldStopAnimation()) {\n cafId = raf(update);\n }\n }; // t => val timing function like cubic-bezier\n\n\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\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); // get union set and add compatible prefix\n\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n\n if (t < 1) {\n cafId = raf(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\n update = easing.isStepper ? stepperUpdate : timingUpdate; // return start animation method\n\n return function () {\n raf(update); // return stop animation method\n\n return function () {\n caf(cafId);\n };\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\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; }\n\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; }\n\nfunction _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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\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, translateStyle } from './util';\n\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n\n var _super = _createSuper(Animate);\n\n function Animate(props, context) {\n var _this;\n\n _classCallCheck(this, Animate);\n\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 _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n\n if (!isActive) {\n _this.state = {\n style: {}\n }; // if children is a function and animation is not active, set style to 'to'\n\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n\n return _possibleConstructorReturn(_this);\n }\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\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n\n return _this;\n }\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\n if (!isActive || !canBegin) {\n return;\n }\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\n if (!canBegin) {\n return;\n }\n\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, this.props.to) : this.props.to\n };\n\n if (this.state && this.state.style) {\n if (attributeName && this.state.style[attributeName] !== this.props.to || !attributeName && this.state.style !== this.props.to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n\n return;\n }\n\n if (deepEqual(prevProps.to, this.props.to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n\n if (this.manager) {\n this.manager.stop();\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n\n var from = isTriggered || shouldReAnimate ? this.props.from : prevProps.to;\n\n if (this.state && this.state.style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n\n if (attributeName && this.state.style[attributeName] !== from || !attributeName && this.state.style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\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\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n\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\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\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\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\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\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\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\n var transition = getTransitionVal(properties, duration, easing);\n\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\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\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\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\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: \"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: \"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, [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"]);\n\n var count = Children.count(children);\n var stateStyle = translateStyle(this.state.style);\n\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n\n if (!isActive || count === 0) {\n return children;\n }\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\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n\n return Animate;\n}(PureComponent);\n\nAnimate.displayName = 'Animate';\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};\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};\nexport default Animate;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\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; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\n\nif (Number.isFinite === undefined) {\n Number.isFinite = function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n}\n\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n\n if (Number.isFinite(duration)) {\n return duration;\n }\n\n return 0;\n};\n\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n _inherits(AnimateGroupChild, _Component);\n\n var _super = _createSuper(AnimateGroupChild);\n\n function AnimateGroupChild() {\n var _this;\n\n _classCallCheck(this, AnimateGroupChild);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n isActive: false\n };\n\n _this.handleEnter = function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n };\n\n _this.handleExit = function () {\n _this.handleStyleActive(_this.props.leaveOptions);\n };\n\n return _this;\n }\n\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread(_objectSpread({}, style), {}, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n\n return AnimateGroupChild;\n}(Component);\n\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\n\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return /*#__PURE__*/React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index) // eslint-disable-line\n\n }, child);\n }));\n}\n\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;","import React from 'react';\n\nimport './Flex.scss';\n\nexport type DivProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\ntype FlexProps = DivProps & { col?: number; from?: number };\n\nexport const Row = React.forwardRef((props: FlexProps, ref: any) => {\n const { className, col, from = 1, style, ...otherProps } = props;\n\n const _style = {\n gridColumn: col ? `${from} / span ${col}` : undefined,\n ...style,\n };\n return (\n \n {props.children}\n
\n );\n});\n\nexport const Column = React.forwardRef((props: FlexProps, ref: any) => {\n const { className, col, from = 1, style, ...otherProps } = props;\n\n const _style = {\n gridColumn: col ? `${from} / span ${col}` : undefined,\n ...style,\n };\n return (\n \n {props.children}\n
\n );\n});\n\ntype GridProps = React.PropsWithChildren<\n FlexProps & { main?: boolean; columns?: number }\n>;\nexport const Grid = React.forwardRef(\n (props: GridProps, ref: any) => {\n const {\n className,\n col,\n from = 1,\n columns = 12,\n main = false,\n style,\n children,\n ...nativeProps\n } = props;\n\n const gridTemplateColumns = `repeat(${columns}, 1fr)`;\n const _style = {\n gridColumn: col ? `${from} / span ${col}` : undefined,\n gridTemplateColumns,\n ...style,\n };\n\n return (\n \n {children}\n
\n );\n }\n);\n\nexport const GridItem = React.forwardRef<\n any,\n React.PropsWithChildren\n>((props: React.PropsWithChildren, ref: any) => {\n const {\n className = '',\n col = 12,\n from,\n style,\n children,\n ...nativeProps\n } = props;\n\n const _style = {\n gridColumnStart: from ? from : undefined,\n gridColumnEnd: `span ${col}`,\n ...style,\n };\n\n return (\n \n {children}\n
\n );\n});\n","import React from 'react';\n\nimport './SideMenuSegment.scss';\nimport { Column, Row } from 'components/flex/Flex';\n\nexport const SideMenuSegment = React.memo(\n ({\n className = '',\n title,\n children,\n }: React.PropsWithChildren<{ className?: string; title?: string }>) => {\n const Content = () => {\n return (\n \n \n {title}\n \n {children}\n \n );\n };\n\n return (\n
\n {title ? : children}\n
\n );\n }\n);\n","import React from 'react';\nimport { Misc } from 'core/constants';\n\nexport const PredictiaLogo = ({\n brand = 'light'\n}: {\n brand?: 'light' | 'dark';\n}) => {\n return (\n \n \n \n );\n};\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","import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { Link } from '../link/Link';\nimport { CancelIcon, TwitterIcon, MailIcon } from 'components/svg-icon';\nimport { Misc } from 'core/constants';\n\nimport './ContactNotification.scss';\n\nexport const ContactNotification = ({text}: {text?: string}) => {\n const { t } = useTranslation('commons');\n\n const [show, setShow] = React.useState(false);\n\n React.useEffect(() => {\n let mounted = true;\n let tm = setTimeout(() => {\n if (mounted) {\n setShow(true);\n }\n }, 2000);\n\n return () => {\n mounted = false;\n clearTimeout(tm);\n };\n }, []);\n\n return (\n \n
\n
\n

{t('commons:contact.title')}

{' '}\n setShow(false)} />\n
\n
\n { text || t('commons:contact.text')}\n
\n
\n \n \n \n \n \n \n
\n
\n \n );\n};\n","import React, { useState, useCallback } from 'react';\n\nimport { Modal } from 'components/modal/Modal';\n\nimport './ModalMenu.scss';\n\ninterface ModalMenuProps {\n opened: boolean;\n onCloseClick(): void;\n renderContent(): JSX.Element | null;\n}\n\nexport const ModalMenu = ({\n opened,\n onCloseClick,\n renderContent,\n}: ModalMenuProps) => {\n const [contentDiv, setContentDiv] = useState(null as any);\n\n const overlayMemoCallback = useCallback(() => {\n return contentDiv\n ? contentDiv.scrollHeight - contentDiv.scrollTop ===\n contentDiv.clientHeight\n : false;\n }, [contentDiv]);\n\n return (\n \n setContentDiv(el)}\n >\n {overlayMemoCallback() ? null : (\n
\n )}\n {renderContent()}\n
\n \n );\n};\n","import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport './SideBar.scss';\n\ninterface SideBarProps {\n renderContent(): JSX.Element | null;\n}\n\nexport const SideBar = ({\n renderContent\n}: SideBarProps) => {\n const { t } = useTranslation();\n\n return (\n
\n \n
\n {renderContent()}\n
\n
\n );\n};\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 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","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export function linear(t) {\n return +t;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x) {\n return x;\n}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\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\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\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: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function 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(domain) {\n var a = domain[0], b = domain[domain.length - 1], 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 piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return 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 = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : 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(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n 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 i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\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 {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\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 {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\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 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 ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), 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 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","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(x) {\n return function constant() {\n return x;\n };\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; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","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","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\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 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 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 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","import React from 'react';\n\nimport { useHistory } from 'react-router-dom';\n\nimport { HomeIcon } from 'components/svg-icon';\n\nimport './AppTitle.scss';\n\ninterface AppTitleProps {\n title?: string;\n}\nexport const AppTitle = (props: React.PropsWithChildren) => {\n const history = useHistory();\n\n const onGoHomeClick = () => {\n history.push('/');\n };\n\n return (\n
\n

\n {props.children}\n

\n \n
\n );\n};\n","import React from 'react';\n\nimport { ContactNotification } from 'components/contact-notification/ContactNotification';\n\nimport './CoreLayout.scss';\nimport { useIsMobile } from 'hooks/useIsMobile';\n\ninterface CoreLayoutProps {\n theme?: string;\n contactNotificationText?: string;\n headerRender?(...args: any): JSX.Element;\n sideMenuRender?(...args: any): JSX.Element;\n bodyRender?(...args: any): JSX.Element;\n fixedContentRender?(...args: any): JSX.Element;\n}\n\nexport const CoreLayout = ({\n theme,\n contactNotificationText,\n headerRender,\n sideMenuRender,\n bodyRender,\n fixedContentRender,\n}: CoreLayoutProps) => {\n const isMobile = useIsMobile();\n\n const header = headerRender ? (\n
{headerRender()}
\n ) : null;\n\n const sideMenu = sideMenuRender ? (\n \n {' '}\n {sideMenuRender()}\n
\n ) : null;\n\n const body = bodyRender ? (\n \n {fixedContentRender ? (\n \n {fixedContentRender()}\n \n \n ) : null}\n {bodyRender()}\n \n ) : null;\n\n return (\n \n {header} {body} {sideMenu}\n \n );\n};\n","import React, { useState } from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { useBreakpoint, isSmall } from 'hooks/useBreakpoint';\n\nimport { Button } from 'components/button/Button';\nimport { SideBar } from 'components/side-bar/SideBar';\n\nimport { ModalMenu } from 'components/modal-menu/ModalMenu';\nimport { MenuIcon, CancelIcon } from 'components/svg-icon';\n\nexport const SideMenu = React.forwardRef(\n (\n {\n renderContent,\n }: {\n renderContent(): JSX.Element | null;\n },\n ref: any\n ) => {\n const breakpoint = useBreakpoint();\n\n const { t } = useTranslation();\n\n const [opened, setOpened] = useState(!isSmall(breakpoint));\n\n ref.current = {\n close: () => setOpened(false)\n }\n\n const onOpenClick = () => {\n setOpened(!opened);\n };\n\n const renderButton = (\n <>\n \n \n {opened ? (\n \n ) : (\n \n )}\n \n \n );\n\n const menu = isSmall(breakpoint) ? (\n renderButton\n ) : (\n \n );\n\n return menu;\n }\n);\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\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","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n\n return ifOverflow === value;\n};","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport './ViewerDescription.scss';\n\nexport interface ViewerDescriptionProps {\n i18nNs: string;\n i18nKey: string;\n}\nexport const ViewerDescription = (props: ViewerDescriptionProps) => {\n const { t } = useTranslation(['commons', props.i18nNs]);\n\n const content = t(`${props.i18nNs}:${props.i18nKey}`, {\n defaultValue: [],\n returnObjects: true,\n }) as any[];\n\n const DynamicElement = ({\n el,\n }: {\n el: { kind: string; content: string | string[]; cssClass?: string };\n }) => {\n const className = el.cssClass || '';\n switch (el.kind) {\n case 'paragraph':\n return (\n \n );\n case 'list':\n return (\n
    \n {(el.content as string[]).map((cnt, i) => (\n \n ))}\n
\n );\n case 'title':\n return (\n \n );\n case 'subtitle':\n return (\n \n );\n default:\n return null;\n }\n };\n\n return (\n
\n {content.map((el, i) => (\n \n ))}\n
\n );\n};\n","import { useState, useEffect } from 'react';\n\nexport const getIsMobile = () => {\n if (\n navigator.userAgent.match(/Android/i) ||\n navigator.userAgent.match(/webOS/i) ||\n navigator.userAgent.match(/iPhone/i) ||\n navigator.userAgent.match(/iPad/i) ||\n navigator.userAgent.match(/iPod/i) ||\n navigator.userAgent.match(/BlackBerry/i) ||\n navigator.userAgent.match(/Windows Phone/i)\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function useIsMobile(): boolean {\n const [isMobile, setIsMobile] = useState(getIsMobile());\n\n const handler = () => {\n setIsMobile(getIsMobile);\n };\n\n useEffect(() => {\n window.addEventListener('resize', handler, { passive: true });\n return () => window.removeEventListener('resize', handler);\n }, []);\n\n return isMobile;\n}\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","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\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('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Dot\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nexport var Dot = /*#__PURE__*/function (_PureComponent) {\n _inherits(Dot, _PureComponent);\n\n var _super = _createSuper(Dot);\n\n function Dot() {\n _classCallCheck(this, Dot);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dot, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n r = _this$props.r,\n className = _this$props.className;\n var layerClass = classNames('recharts-dot', className);\n\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n\n return null;\n }\n }]);\n\n return Dot;\n}(PureComponent);","import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { Layer } from 'common/models/layer.model';\n\nimport { ArrowIcon } from 'components/svg-icon';\n\nimport './LayerSelector.scss';\n\ninterface LayerSelectorProps {\n layers: Layer[];\n selectedLayer: Layer;\n title?: string;\n onLayerSelect(layer: any): void;\n}\n\nexport const LayerSelector = ({\n layers,\n selectedLayer,\n onLayerSelect,\n title,\n}: LayerSelectorProps) => {\n const { t } = useTranslation();\n\n return (\n
\n {title && (\n \n )}\n {layers.map((layer: Layer) => (\n \n ))}\n
\n );\n};\n\nconst LayerItem = ({\n layer,\n selectedLayer,\n onLayerSelect,\n}: {\n layer: Layer;\n selectedLayer: Layer;\n onLayerSelect(layer: Layer): void;\n}) => {\n const { t } = useTranslation();\n\n const [expanded, setExpanded] = React.useState(false);\n\n return (\n \n
\n onLayerSelect(layer)}\n >\n {layer.icon && (\n \n )}\n
{t(layer.name)}
\n
\n {layer.description && (\n setExpanded(!expanded)}\n />\n )}\n \n \n \n\n {layer.units &&\n layer.units !== 'none' &&\n layer.units !== 'adimensional' && (\n \n Units: \n \n {t(`commons:units.${layer.units}.label`)}\n \n \n )}\n \n \n );\n};\n","import React from 'react';\n\nimport _SelectMe from 'react-select-me';\n\nimport { useBreakpoint, isSmall } from 'hooks/useBreakpoint';\nimport { ArrowIcon } from 'components/svg-icon';\n\nimport 'react-select-me/lib/ReactSelectMe.css';\nimport './Select.scss';\n\ntype SelectValue = string | string[] | number;\n\ninterface SelectProps {\n id: string;\n label?: string;\n title?: string;\n placeholder?: string;\n className?: string;\n value: SelectValue;\n options: any;\n onChange({ label, value }: { label: string; value: SelectValue }): void;\n [K: string]: any;\n}\n\nexport const Select = React.forwardRef(\n (props: React.PropsWithChildren, ref: React.Ref) => {\n // (╯°□°)╯︵ ┻━┻\n const SelectMe = _SelectMe as any;\n\n // const isMobile = useIsMobile();\n const isMobile = isSmall(useBreakpoint());\n\n return (\n \n {props.label && (\n \n )}\n {!isMobile ? (\n (\n \n )}\n {...props}\n />\n ) : (\n {\n props.onChange({value: evt.target.value, label: ''})\n }}\n value={props.value}\n id={props.id}\n >\n {props.options.map(\n ({ label, value }: { label: string; value: any }) => (\n \n )\n )}\n \n )}\n \n );\n }\n);\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","/**\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","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","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\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","/** 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 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","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 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","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 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","/**\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 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","import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * 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 */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n\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.range;\n var _range = range;\n\n var _range2 = _slicedToArray(_range, 2);\n\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\n\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\n\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n\n if (radius === 0) {\n return true;\n }\n\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n\n var formatAngle = angle;\n var inRange;\n\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n\n return null;\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 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","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n\n return true;\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","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function(x) {\n return +x;\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","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/types';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\nvar calculateWordWidths = function calculateWordWidths(props) {\n try {\n var words = [];\n\n if (!_isNil(props.children)) {\n if (props.breakAll) {\n words = props.children.toString().split('');\n } else {\n words = props.children.toString().split(BREAKING_SPACES);\n }\n }\n\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, props.style).width\n };\n });\n var spaceWidth = props.breakAll ? 0 : getStringSize(\"\\xA0\", props.style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\n\nvar calculateWordsByLines = function calculateWordsByLines(props, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var shouldLimitLines = isNumber(props.maxLines);\n var text = props.children;\n\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref) {\n var word = _ref.word,\n width = _ref.width;\n var currentLine = result[result.length - 1];\n\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < lineWidth)) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n\n return result;\n }, []);\n };\n\n var originalResult = calculate(initialWordsWithComputedWith);\n\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n\n if (!shouldLimitLines) {\n return originalResult;\n }\n\n var suffix = '…';\n\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths(_objectSpread(_objectSpread({}, props), {}, {\n children: tempText + suffix\n })).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > props.maxLines || findLongestLine(result).width > lineWidth;\n return [doesOverflow, result];\n };\n\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\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 } // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n\n\n return trimmedResult || originalResult;\n};\n\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !_isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\n\nvar getWordsByLines = function getWordsByLines(props, needCalculate) {\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((props.width || props.scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n\n if (needCalculate) {\n var wordWidths = calculateWordWidths(props);\n\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(props.children);\n }\n\n return calculateWordsByLines(props, wordsWithComputedWidth, spaceWidth, props.width, props.scaleToFit);\n }\n }\n\n return getWordsWithoutCalculate(props.children);\n};\n\nexport var Text = /*#__PURE__*/function (_Component) {\n _inherits(Text, _Component);\n\n var _super = _createSuper(Text);\n\n function Text() {\n var _this;\n\n _classCallCheck(this, Text);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {};\n return _this;\n }\n\n _createClass(Text, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n dx = _this$props.dx,\n dy = _this$props.dy,\n textAnchor = _this$props.textAnchor,\n verticalAnchor = _this$props.verticalAnchor,\n scaleToFit = _this$props.scaleToFit,\n angle = _this$props.angle,\n lineHeight = _this$props.lineHeight,\n capHeight = _this$props.capHeight,\n className = _this$props.className,\n breakAll = _this$props.breakAll,\n textProps = _objectWithoutProperties(_this$props, [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\", \"breakAll\"]);\n\n var wordsByLines = this.state.wordsByLines;\n\n if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n return null;\n }\n\n var x = textProps.x + (isNumber(dx) ? dx : 0);\n var y = textProps.y + (isNumber(dy) ? dy : 0);\n var startDy;\n\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n\n var transforms = [];\n\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = this.props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: classNames('recharts-text', className),\n textAnchor: textAnchor\n }), wordsByLines.map(function (line, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: index\n }, line.words.join(breakAll ? '' : ' '))\n );\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.width !== prevState.prevWidth || nextProps.scaleToFit !== prevState.prevScaleToFit || nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll) {\n var needCalculate = nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll;\n return {\n prevWidth: nextProps.width,\n prevScaleToFit: nextProps.scaleToFit,\n prevChildren: nextProps.children,\n prevStyle: nextProps.style,\n wordsByLines: getWordsByLines(nextProps, needCalculate)\n };\n }\n\n return null;\n }\n }]);\n\n return Text;\n}(Component);\nText.defaultProps = {\n x: 0,\n y: 0,\n lineHeight: '1em',\n capHeight: '0.71em',\n // Magic number from d3\n scaleToFit: false,\n textAnchor: 'start',\n verticalAnchor: 'end' // Maintain compat with existing charts / default SVG behavior\n\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _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\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n\n return value;\n}\n\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\n\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n\n var str = \"\".concat(text);\n var styleString = getStyleString(style);\n var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n\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 } // 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\n\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), style);\n\n Object.keys(measurementSpanStyle).map(function (styleKey) {\n measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n return styleKey;\n });\n measurementSpan.textContent = str;\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n 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 {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(el) {\n var html = el.ownerDocument.documentElement;\n var box = {\n top: 0,\n left: 0\n }; // If we don't have gBCR, just use 0,0 rather than error\n // BlackBerry 5, iOS 3 (original iPhone)\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n return {\n top: box.top + window.pageYOffset - html.clientTop,\n left: box.left + window.pageXOffset - html.clientLeft\n };\n};\n/**\n * Calculate coordinate of cursor in chart\n * @param {Object} event Event object\n * @param {Object} offset The offset of main part in the svg element\n * @return {Object} {chartX, chartY}\n */\n\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n return {\n chartX: Math.round(event.pageX - offset.left),\n chartY: Math.round(event.pageY - offset.top)\n };\n};","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import 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; // proceed\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; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\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 {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isArray from \"lodash/isArray\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\n\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\n\nvar getX = function getX(p) {\n return p.x;\n};\n\nvar getY = function getY(p) {\n return p.y;\n};\n\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (_isFunction(type)) {\n return type;\n }\n\n var name = \"curve\".concat(_upperFirst(type));\n\n if (name === 'curveMonotone' && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n\n return CURVE_FACTORIES[name] || curveLinear;\n};\n\nexport var Curve = /*#__PURE__*/function (_PureComponent) {\n _inherits(Curve, _PureComponent);\n\n var _super = _createSuper(Curve);\n\n function Curve() {\n _classCallCheck(this, Curve);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Curve, [{\n key: \"getPath\",\n value:\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n function getPath() {\n var _this$props = this.props,\n type = _this$props.type,\n points = _this$props.points,\n baseLine = _this$props.baseLine,\n layout = _this$props.layout,\n connectNulls = _this$props.connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n\n if (_isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n points = _this$props2.points,\n path = _this$props2.path,\n pathRef = _this$props2.pathRef;\n\n if ((!points || !points.length) && !path) {\n return null;\n }\n\n var realPath = points && points.length ? this.getPath() : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: classNames('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n }\n }]);\n\n return Curve;\n}(PureComponent);\nCurve.defaultProps = {\n type: 'linear',\n points: [],\n connectNulls: false\n};","export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Rectangle\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/types';\n\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n\n return path;\n};\n\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n\n return false;\n};\nexport var Rectangle = /*#__PURE__*/function (_PureComponent) {\n _inherits(Rectangle, _PureComponent);\n\n var _super = _createSuper(Rectangle);\n\n function Rectangle() {\n var _this;\n\n _classCallCheck(this, Rectangle);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n totalLength: -1\n };\n _this.node = void 0;\n return _this;\n }\n\n _createClass(Rectangle, [{\n key: \"componentDidMount\",\n value:\n /* eslint-disable react/no-did-mount-set-state */\n function componentDidMount() {\n if (this.node && this.node.getTotalLength) {\n try {\n var totalLength = this.node.getTotalLength();\n\n if (totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n } catch (err) {// calculate total length error\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n radius = _this$props.radius,\n className = _this$props.className;\n var totalLength = this.state.totalLength;\n var _this$props2 = this.props,\n animationEasing = _this$props2.animationEasing,\n animationDuration = _this$props2.animationDuration,\n animationBegin = _this$props2.animationBegin,\n isAnimationActive = _this$props2.isAnimationActive,\n isUpdateAnimationActive = _this$props2.isUpdateAnimationActive;\n\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-rectangle', className);\n\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(_this2.props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: function ref(node) {\n _this2.node = node;\n }\n })));\n });\n }\n }]);\n\n return Rectangle;\n}(PureComponent);\nRectangle.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};","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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; }\n\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; }\n\nimport React, { cloneElement } from 'react';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nvar defaultProps = {\n valueAccessor: function valueAccessor(entry) {\n return _isArray(entry.value) ? _last(entry.value) : entry.value;\n }\n};\nexport function LabelList(props) {\n var data = props.data,\n valueAccessor = props.valueAccessor,\n dataKey = props.dataKey,\n clockWise = props.clockWise,\n id = props.id,\n textBreakAll = props.textBreakAll,\n others = _objectWithoutProperties(props, [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"]);\n\n if (!data || !data.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = _isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n index: index,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n\n if ( /*#__PURE__*/React.isValidElement(label) || _isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n\n return null;\n}\n\nfunction renderCallByParent(parentProps, data) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var explicitChilren = findAllByType(children, LabelList.displayName).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n key: \"labelList-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChilren));\n}\n\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;","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","import React, { Suspense } from 'react';\n\nimport OlMap from 'ol/Map';\nimport View from 'ol/View';\nimport TileLayer from 'ol/layer/Tile';\nimport OSM from 'ol/source/OSM';\nimport Feature from 'ol/Feature';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { Style, Icon } from 'ol/style';\nimport { StyleFunction } from 'ol/style/Style';\nimport Fill from 'ol/style/Fill';\nimport Stroke from 'ol/style/Stroke';\nimport MapBrowserPointerEvent from 'ol/MapBrowserPointerEvent';\nimport Overlay from 'ol/Overlay';\nimport { Point } from 'ol/geom';\nimport GeoJSON from 'ol/format/GeoJSON';\n\nimport { CustomMapFeature } from 'common/models/map.model';\n\nimport { PredictiaLogo } from 'components/predictia-logo/PredictiaLogo';\nimport { Loading } from 'components/loading/Loading';\n\nimport './Map.scss';\n\ninterface MapProps {\n initialCenter: number[];\n projection?: string;\n onMapClick?(evt: MapBrowserPointerEvent): void;\n onMapReady?: VoidFunction;\n}\n\nconst defaultProjection = 'EPSG:3857';\nexport class EmptyMap extends React.Component {\n // #region - Initial Stuff\n\n static initialState = {\n loading: false,\n };\n\n public map!: OlMap;\n private featureLayer: VectorLayer = new VectorLayer({\n zIndex: 5,\n opacity: 1,\n });\n public geoJsonLayer: VectorLayer = new VectorLayer({\n zIndex: 10,\n opacity: 1,\n });\n\n overlayRef!: Overlay;\n\n constructor(props: MapProps) {\n super(props);\n this.state = EmptyMap.initialState;\n\n this.moveOverlay = this.moveOverlay.bind(this);\n }\n\n // #endregion\n\n // #region - Lifecycle\n componentDidMount() {\n const [x, y, z] = this.props.initialCenter;\n setTimeout(() => {\n this.map = new OlMap({\n target: 'map',\n layers: [\n new TileLayer({\n source: new OSM({\n url: 'http://a.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png',\n }),\n }),\n this.geoJsonLayer,\n ],\n view: new View({\n center: [x, y],\n zoom: z,\n projection: this.props.projection || defaultProjection,\n }),\n });\n if (this.props.onMapReady) {\n this.map.once('rendercomplete', this.props.onMapReady);\n }\n\n this.addOverlay();\n if (this.props.onMapClick) {\n this.map.on('click', this.props.onMapClick);\n }\n\n // this.map.on('moveend', console.log);\n setTimeout(() => {\n this.map.updateSize();\n this.map.render();\n }, 100);\n }, 0);\n }\n\n componentDidUpdate(prevProps: MapProps): void {}\n // #endregion\n\n addOverlay() {\n const overlay = document.getElementById('overlay');\n this.overlayRef = new Overlay({\n element: overlay!,\n offset: [10, 0],\n positioning: 'bottom-left' as any,\n });\n\n this.map?.addOverlay(this.overlayRef);\n }\n\n // #endregion\n\n // #region - Public Stuff (use with caution ¬.¬')\n\n setMapView(mapView: { center: [number, number]; zoom: number }): void {\n const view = this.map.getView();\n view.animate({\n center: mapView.center,\n zoom: mapView.zoom,\n duration: 750,\n });\n }\n\n drawArbitraryFeatures(features: CustomMapFeature[] | null): void {\n if (this.featureLayer.getSource()) {\n this.featureLayer.getSource().clear();\n }\n if (features) {\n const builtFeatures = features.map((f: CustomMapFeature) => {\n const feat = new Feature({\n geometry: new Point(f.point),\n });\n const style = new Style({\n image: new Icon({\n src: f.icon,\n imgSize: [22, 40],\n }),\n });\n feat.setStyle(style);\n return feat;\n });\n this.featureLayer = new VectorLayer({\n map: this.map,\n source: new VectorSource({\n features: builtFeatures,\n }),\n style: new Style({\n fill: new Fill({\n color: 'transparent',\n }),\n stroke: new Stroke({\n color: 'ffffff22',\n }),\n }),\n });\n }\n }\n\n drawGeoJSON(\n geojson: object | string,\n style?: StyleFunction | Style\n ): VectorLayer {\n if (this.geoJsonLayer.getSource()) {\n this.geoJsonLayer.getSource().clear();\n }\n\n if ('string' === typeof geojson) {\n this.geoJsonLayer.setSource(\n new VectorSource({\n url: geojson,\n format: new GeoJSON({}),\n })\n );\n } else {\n this.geoJsonLayer.setSource(\n new VectorSource({\n features: new GeoJSON().readFeatures(geojson),\n })\n );\n }\n\n if (style) {\n this.geoJsonLayer.setStyle(style);\n }\n\n return this.geoJsonLayer;\n }\n\n moveOverlay(evt: MapBrowserPointerEvent): void {\n this.overlayRef?.setPosition(evt.coordinate);\n }\n\n // #endregion\n\n render() {\n return (\n <>\n \n \n \n \n \n \n
{this.props.children}
\n \n );\n }\n}\n","import React from 'react';\n\nimport { WithTranslation } from 'react-i18next';\n\nimport { Map as ViewerMap } from 'components/map/Map';\nimport { Layer } from './models/layer.model';\nimport { AppProps } from './models/app.model';\n\nexport interface ViewerAppState {\n selectedLayer: Layer;\n opacity: number;\n wmsParams: object;\n showDescription: boolean;\n showTooltip?: boolean;\n pointInfo?: { layer: string; value: string | number };\n}\nexport abstract class ViewerApp<\n State extends ViewerAppState, MapType = ViewerMap\n> extends React.Component {\n public mapRef = React.createRef();\n public menuRef = React.createRef<{ close: VoidFunction }>();\n\n constructor(props: AppProps & WithTranslation) {\n super(props);\n\n this.onOpacityChange = this.onOpacityChange.bind(this);\n this.getWmsParams = this.getWmsParams.bind(this);\n this.renderMenuContent = this.renderMenuContent.bind(this);\n this.onDescriptionClose = this.onDescriptionClose.bind(this);\n this.showTooltip = this.showTooltip.bind(this);\n this.hideTooltip = this.hideTooltip.bind(this);\n this.onHelpClick = this.onHelpClick.bind(this);\n }\n\n onOpacityChange(opacity: number): void {\n this.setState({ opacity });\n }\n\n onDescriptionClose() {\n this.setState({ showDescription: false });\n }\n\n onHelpClick() {\n this.setState({ showDescription: true });\n this.menuRef.current?.close();\n }\n\n hideTooltip() {\n this.setState({ showTooltip: false, pointInfo: undefined });\n }\n\n showTooltip() {\n this.setState({ showTooltip: true });\n }\n\n abstract getWmsParams(layer: Layer): object;\n\n abstract renderMenuContent(): JSX.Element | null;\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\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 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","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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\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; }\n\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; }\n\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/types';\nexport function ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"]);\n\n var svgProps = filterProps(others);\n var errorBars = data.map(function (entry, i) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n\n if (!errorVal) {\n return null;\n }\n\n var lineCoordinates = [];\n var lowBound, highBound;\n\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\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 var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound); // the right line of |--|\n\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n }); // the middle line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n }); // the left line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n\n var _xMin = xMid - width;\n\n var _xMax = xMid + width;\n\n var _yMin = _scale(value - lowBound);\n\n var _yMax = _scale(value + highBound); // the top line\n\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n }); // the middle line\n\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n }); // the bottom line\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(i)\n }, svgProps), lineCoordinates.map(function (coordinates, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(index)\n }))\n );\n }))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';","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 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","/**\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","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","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 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(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport 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 : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n 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 = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n 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\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\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\";\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 = array.length - 1, compare = ascending) {\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 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","export default function(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 max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +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)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {ascending, bisect, quantile 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 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 <= 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 <= 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","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} 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\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),\n step;\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n return interval.every(step);\n }\n\n return interval;\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 t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1]))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time.js\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init.js\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, 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 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 (!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","export default function piecewise(interpolate, values) {\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","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","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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","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 isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\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 = value.replace(reTrim, '');\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 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 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 scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\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 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 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 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","/**\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 * 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 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 * 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","/**\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 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 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 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 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","/** 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 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","/*! 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 \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","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","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _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; }\n\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; }\n\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n others = _objectWithoutProperties(props, [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"]);\n\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = classNames('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, true), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n version: \"1.1\"\n }), children);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\n\nvar _convert = require(\"./convert\");\n\nvar _convert2 = _interopRequireDefault(_convert);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction reduce(node, precision) {\n if (node.type === \"MathExpression\") return reduceMathExpression(node, precision);\n if (node.type === \"Calc\") return reduce(node.value, precision);\n\n return node;\n}\n\nfunction isEqual(left, right) {\n return left.type === right.type && left.value === right.value;\n}\n\nfunction isValueType(type) {\n switch (type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n case 'EmValue':\n case 'ExValue':\n case 'ChValue':\n case 'RemValue':\n case 'VhValue':\n case 'VwValue':\n case 'VminValue':\n case 'VmaxValue':\n case 'PercentageValue':\n case 'Value':\n return true;\n }\n return false;\n}\n\nfunction convertMathExpression(node, precision) {\n var nodes = (0, _convert2.default)(node.left, node.right, precision);\n var left = reduce(nodes.left, precision);\n var right = reduce(nodes.right, precision);\n\n if (left.type === \"MathExpression\" && right.type === \"MathExpression\") {\n\n if (left.operator === '/' && right.operator === '*' || left.operator === '-' && right.operator === '+' || left.operator === '*' && right.operator === '/' || left.operator === '+' && right.operator === '-') {\n\n if (isEqual(left.right, right.right)) nodes = (0, _convert2.default)(left.left, right.left, precision);else if (isEqual(left.right, right.left)) nodes = (0, _convert2.default)(left.left, right.right, precision);\n\n left = reduce(nodes.left, precision);\n right = reduce(nodes.right, precision);\n }\n }\n\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction flip(operator) {\n return operator === '+' ? '-' : '+';\n}\n\nfunction flipValue(node) {\n if (isValueType(node.type)) node.value = -node.value;else if (node.type == 'MathExpression') {\n node.left = flipValue(node.left);\n node.right = flipValue(node.right);\n }\n return node;\n}\n\nfunction reduceAddSubExpression(node, precision) {\n var _node = node,\n left = _node.left,\n right = _node.right,\n op = _node.operator;\n\n\n if (left.type === 'CssVariable' || right.type === 'CssVariable') return node;\n\n // something + 0 => something\n // something - 0 => something\n if (right.value === 0) return left;\n\n // 0 + something => something\n if (left.value === 0 && op === \"+\") return right;\n\n // 0 - something => -something\n if (left.value === 0 && op === \"-\") return flipValue(right);\n\n // value + value\n // value - value\n if (left.type === right.type && isValueType(left.type)) {\n node = Object.assign({}, left);\n if (op === \"+\") node.value = left.value + right.value;else node.value = left.value - right.value;\n }\n\n // value (expr)\n if (isValueType(left.type) && (right.operator === '+' || right.operator === '-') && right.type === 'MathExpression') {\n // value + (value + something) => (value + value) + something\n // value + (value - something) => (value + value) - something\n // value - (value + something) => (value - value) - something\n // value - (value - something) => (value - value) + something\n if (left.type === right.left.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left,\n right: right.left\n }, precision);\n node.right = right.right;\n node.operator = op === '-' ? flip(right.operator) : right.operator;\n return reduce(node, precision);\n }\n // value + (something + value) => (value + value) + something\n // value + (something - value) => (value - value) + something\n // value - (something + value) => (value - value) - something\n // value - (something - value) => (value + value) - something\n else if (left.type === right.right.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op === '-' ? flip(right.operator) : right.operator,\n left: left,\n right: right.right\n }, precision);\n node.right = right.left;\n return reduce(node, precision);\n }\n }\n\n // (expr) value\n if (left.type === 'MathExpression' && (left.operator === '+' || left.operator === '-') && isValueType(right.type)) {\n // (value + something) + value => (value + value) + something\n // (value - something) + value => (value + value) - something\n // (value + something) - value => (value - value) + something\n // (value - something) - value => (value - value) - something\n if (right.type === left.left.type) {\n node = Object.assign({}, left);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.left,\n right: right\n }, precision);\n return reduce(node, precision);\n }\n // (something + value) + value => something + (value + value)\n // (something - value1) + value2 => something - (value2 - value1)\n // (something + value) - value => something + (value - value)\n // (something - value) - value => something - (value + value)\n else if (right.type === left.right.type) {\n node = Object.assign({}, left);\n if (left.operator === '-') {\n node.right = reduce({\n type: 'MathExpression',\n operator: op === '-' ? '+' : '-',\n left: right,\n right: left.right\n }, precision);\n node.operator = op === '-' ? '-' : '+';\n } else {\n node.right = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.right,\n right: right\n }, precision);\n }\n if (node.right.value < 0) {\n node.right.value *= -1;\n node.operator = node.operator === '-' ? '+' : '-';\n }\n return reduce(node, precision);\n }\n }\n return node;\n}\n\nfunction reduceDivisionExpression(node, precision) {\n if (!isValueType(node.right.type)) return node;\n\n if (node.right.type !== 'Value') throw new Error(\"Cannot divide by \\\"\" + node.right.unit + \"\\\", number expected\");\n\n if (node.right.value === 0) throw new Error('Cannot divide by zero');\n\n // (expr) / value\n if (node.left.type === 'MathExpression') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value /= node.right.value;\n node.left.right.value /= node.right.value;\n return reduce(node.left, precision);\n }\n return node;\n }\n // something / value\n else if (isValueType(node.left.type)) {\n node.left.value /= node.right.value;\n return node.left;\n }\n return node;\n}\n\nfunction reduceMultiplicationExpression(node) {\n // (expr) * value\n if (node.left.type === 'MathExpression' && node.right.type === 'Value') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value *= node.right.value;\n node.left.right.value *= node.right.value;\n return node.left;\n }\n }\n // something * value\n else if (isValueType(node.left.type) && node.right.type === 'Value') {\n node.left.value *= node.right.value;\n return node.left;\n }\n // value * (expr)\n else if (node.left.type === 'Value' && node.right.type === 'MathExpression') {\n if (isValueType(node.right.left.type) && isValueType(node.right.right.type)) {\n node.right.left.value *= node.left.value;\n node.right.right.value *= node.left.value;\n return node.right;\n }\n }\n // value * something\n else if (node.left.type === 'Value' && isValueType(node.right.type)) {\n node.right.value *= node.left.value;\n return node.right;\n }\n return node;\n}\n\nfunction reduceMathExpression(node, precision) {\n node = convertMathExpression(node, precision);\n\n switch (node.operator) {\n case \"+\":\n case \"-\":\n return reduceAddSubExpression(node, precision);\n case \"/\":\n return reduceDivisionExpression(node, precision);\n case \"*\":\n return reduceMultiplicationExpression(node);\n }\n return node;\n}\n\nexports.default = reduce;","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\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; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\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; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/GeometryCollection\n */\nimport EventType from '../events/EventType.js';\nimport Geometry from './Geometry.js';\nimport GeometryType from './GeometryType.js';\nimport { closestSquaredDistanceXY, createOrUpdateEmpty, extend, getCenter, } from '../extent.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @classdesc\n * An array of {@link module:ol/geom/Geometry} objects.\n *\n * @api\n */\nvar GeometryCollection = /** @class */ (function (_super) {\n __extends(GeometryCollection, _super);\n /**\n * @param {Array=} opt_geometries Geometries.\n */\n function GeometryCollection(opt_geometries) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.geometries_ = opt_geometries ? opt_geometries : null;\n /**\n * @type {Array}\n */\n _this.changeEventsKeys_ = [];\n _this.listenGeometriesChange_();\n return _this;\n }\n /**\n * @private\n */\n GeometryCollection.prototype.unlistenGeometriesChange_ = function () {\n this.changeEventsKeys_.forEach(unlistenByKey);\n this.changeEventsKeys_.length = 0;\n };\n /**\n * @private\n */\n GeometryCollection.prototype.listenGeometriesChange_ = function () {\n if (!this.geometries_) {\n return;\n }\n for (var i = 0, ii = this.geometries_.length; i < ii; ++i) {\n this.changeEventsKeys_.push(listen(this.geometries_[i], EventType.CHANGE, this.changed, this));\n }\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!GeometryCollection} Clone.\n * @api\n */\n GeometryCollection.prototype.clone = function () {\n var geometryCollection = new GeometryCollection(null);\n geometryCollection.setGeometries(this.geometries_);\n geometryCollection.applyProperties(this);\n return geometryCollection;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n GeometryCollection.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n minSquaredDistance = geometries[i].closestPointXY(x, y, closestPoint, minSquaredDistance);\n }\n return minSquaredDistance;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n GeometryCollection.prototype.containsXY = function (x, y) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].containsXY(x, y)) {\n return true;\n }\n }\n return false;\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n GeometryCollection.prototype.computeExtent = function (extent) {\n createOrUpdateEmpty(extent);\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n extend(extent, geometries[i].getExtent());\n }\n return extent;\n };\n /**\n * Return the geometries that make up this geometry collection.\n * @return {Array} Geometries.\n * @api\n */\n GeometryCollection.prototype.getGeometries = function () {\n return cloneGeometries(this.geometries_);\n };\n /**\n * @return {Array} Geometries.\n */\n GeometryCollection.prototype.getGeometriesArray = function () {\n return this.geometries_;\n };\n /**\n * @return {Array} Geometries.\n */\n GeometryCollection.prototype.getGeometriesArrayRecursive = function () {\n /** @type {Array} */\n var geometriesArray = [];\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].getType() === this.getType()) {\n geometriesArray = geometriesArray.concat(\n /** @type {GeometryCollection} */ (geometries[i]).getGeometriesArrayRecursive());\n }\n else {\n geometriesArray.push(geometries[i]);\n }\n }\n return geometriesArray;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {GeometryCollection} Simplified GeometryCollection.\n */\n GeometryCollection.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometries = [];\n var geometries = this.geometries_;\n var simplified = false;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n var geometry = geometries[i];\n var simplifiedGeometry = geometry.getSimplifiedGeometry(squaredTolerance);\n simplifiedGeometries.push(simplifiedGeometry);\n if (simplifiedGeometry !== geometry) {\n simplified = true;\n }\n }\n if (simplified) {\n var simplifiedGeometryCollection = new GeometryCollection(null);\n simplifiedGeometryCollection.setGeometriesArray(simplifiedGeometries);\n return simplifiedGeometryCollection;\n }\n else {\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n GeometryCollection.prototype.getType = function () {\n return GeometryType.GEOMETRY_COLLECTION;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n GeometryCollection.prototype.intersectsExtent = function (extent) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].intersectsExtent(extent)) {\n return true;\n }\n }\n return false;\n };\n /**\n * @return {boolean} Is empty.\n */\n GeometryCollection.prototype.isEmpty = function () {\n return this.geometries_.length === 0;\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n GeometryCollection.prototype.rotate = function (angle, anchor) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].rotate(angle, anchor);\n }\n this.changed();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n GeometryCollection.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].scale(sx, opt_sy, anchor);\n }\n this.changed();\n };\n /**\n * Set the geometries that make up this geometry collection.\n * @param {Array} geometries Geometries.\n * @api\n */\n GeometryCollection.prototype.setGeometries = function (geometries) {\n this.setGeometriesArray(cloneGeometries(geometries));\n };\n /**\n * @param {Array} geometries Geometries.\n */\n GeometryCollection.prototype.setGeometriesArray = function (geometries) {\n this.unlistenGeometriesChange_();\n this.geometries_ = geometries;\n this.listenGeometriesChange_();\n this.changed();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n GeometryCollection.prototype.applyTransform = function (transformFn) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].applyTransform(transformFn);\n }\n this.changed();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n GeometryCollection.prototype.translate = function (deltaX, deltaY) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].translate(deltaX, deltaY);\n }\n this.changed();\n };\n /**\n * Clean up.\n */\n GeometryCollection.prototype.disposeInternal = function () {\n this.unlistenGeometriesChange_();\n _super.prototype.disposeInternal.call(this);\n };\n return GeometryCollection;\n}(Geometry));\n/**\n * @param {Array} geometries Geometries.\n * @return {Array} Cloned geometries.\n */\nfunction cloneGeometries(geometries) {\n var clonedGeometries = [];\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n clonedGeometries.push(geometries[i].clone());\n }\n return clonedGeometries;\n}\nexport default GeometryCollection;\n//# sourceMappingURL=GeometryCollection.js.map","/**\n * @module ol/format/Feature\n */\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { assign } from '../obj.js';\nimport { equivalent as equivalentProjection, get as getProjection, transformExtent, } from '../proj.js';\n/**\n * @typedef {Object} ReadOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are reading.\n * If not provided, the projection will be derived from the data (where possible) or\n * the `dataProjection` of the format is assigned (where set). If the projection\n * can not be derived from the data and if no `dataProjection` is set for a format,\n * the features will not be reprojected.\n * @property {import(\"../extent.js\").Extent} [extent] Tile extent in map units of the tile being read.\n * This is only required when reading data with tile pixels as geometry units. When configured,\n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to be\n * provided.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * created by the format reader. If not provided, features will be returned in the\n * `dataProjection`.\n */\n/**\n * @typedef {Object} WriteOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are writing.\n * If not provided, the `dataProjection` of the format is assigned (where set).\n * If no `dataProjection` is set for a format, the features will be returned\n * in the `featureProjection`.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * that will be serialized by the format writer. If not provided, geometries are assumed\n * to be in the `dataProjection` if that is set; in other words, they are not transformed.\n * @property {boolean} [rightHanded] When writing geometries, follow the right-hand\n * rule for linear ring orientation. This means that polygons will have counter-clockwise\n * exterior rings and clockwise interior rings. By default, coordinates are serialized\n * as they are provided at construction. If `true`, the right-hand rule will\n * be applied. If `false`, the left-hand rule will be applied (clockwise for\n * exterior and counter-clockwise for interior rings). Note that not all\n * formats support this. The GeoJSON format does use this property when writing\n * geometries.\n * @property {number} [decimals] Maximum number of decimal places for coordinates.\n * Coordinates are stored internally as floats, but floating-point arithmetic can create\n * coordinates with a large number of decimal places, not generally wanted on output.\n * Set a number here to round coordinates. Can also be used to ensure that\n * coordinates read in can be written back out with the same number of decimals.\n * Default is no rounding.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for feature formats.\n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encode\n * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatial\n * file formats. See the documentation for each format for more details.\n *\n * @abstract\n * @api\n */\nvar FeatureFormat = /** @class */ (function () {\n function FeatureFormat() {\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = null;\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.defaultFeatureProjection = null;\n }\n /**\n * Adds the data projection to the read options.\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions=} opt_options Options.\n * @return {ReadOptions|undefined} Options.\n * @protected\n */\n FeatureFormat.prototype.getReadOptions = function (source, opt_options) {\n var options;\n if (opt_options) {\n var dataProjection = opt_options.dataProjection\n ? getProjection(opt_options.dataProjection)\n : this.readProjection(source);\n if (opt_options.extent &&\n dataProjection &&\n dataProjection.getUnits() === Units.TILE_PIXELS) {\n dataProjection = getProjection(dataProjection);\n dataProjection.setWorldExtent(opt_options.extent);\n }\n options = {\n dataProjection: dataProjection,\n featureProjection: opt_options.featureProjection,\n };\n }\n return this.adaptOptions(options);\n };\n /**\n * Sets the `dataProjection` on the options, if no `dataProjection`\n * is set.\n * @param {WriteOptions|ReadOptions|undefined} options\n * Options.\n * @protected\n * @return {WriteOptions|ReadOptions|undefined}\n * Updated options.\n */\n FeatureFormat.prototype.adaptOptions = function (options) {\n return assign({\n dataProjection: this.dataProjection,\n featureProjection: this.defaultFeatureProjection,\n }, options);\n };\n /**\n * @abstract\n * @return {import(\"./FormatType.js\").default} Format.\n */\n FeatureFormat.prototype.getType = function () {\n return abstract();\n };\n /**\n * Read a single feature from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").FeatureLike} Feature.\n */\n FeatureFormat.prototype.readFeature = function (source, opt_options) {\n return abstract();\n };\n /**\n * Read all features from a source.\n *\n * @abstract\n * @param {Document|Element|ArrayBuffer|Object|string} source Source.\n * @param {ReadOptions=} opt_options Read options.\n * @return {Array} Features.\n */\n FeatureFormat.prototype.readFeatures = function (source, opt_options) {\n return abstract();\n };\n /**\n * Read a single geometry from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n FeatureFormat.prototype.readGeometry = function (source, opt_options) {\n return abstract();\n };\n /**\n * Read the projection from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n FeatureFormat.prototype.readProjection = function (source) {\n return abstract();\n };\n /**\n * Encode a feature in this format.\n *\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {WriteOptions=} opt_options Write options.\n * @return {string} Result.\n */\n FeatureFormat.prototype.writeFeature = function (feature, opt_options) {\n return abstract();\n };\n /**\n * Encode an array of features in this format.\n *\n * @abstract\n * @param {Array} features Features.\n * @param {WriteOptions=} opt_options Write options.\n * @return {string} Result.\n */\n FeatureFormat.prototype.writeFeatures = function (features, opt_options) {\n return abstract();\n };\n /**\n * Write a single geometry in this format.\n *\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {WriteOptions=} opt_options Write options.\n * @return {string} Result.\n */\n FeatureFormat.prototype.writeGeometry = function (geometry, opt_options) {\n return abstract();\n };\n return FeatureFormat;\n}());\nexport default FeatureFormat;\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {boolean} write Set to true for writing, false for reading.\n * @param {(WriteOptions|ReadOptions)=} opt_options Options.\n * @return {import(\"../geom/Geometry.js\").default} Transformed geometry.\n */\nexport function transformGeometryWithOptions(geometry, write, opt_options) {\n var featureProjection = opt_options\n ? getProjection(opt_options.featureProjection)\n : null;\n var dataProjection = opt_options\n ? getProjection(opt_options.dataProjection)\n : null;\n var transformed;\n if (featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)) {\n transformed = (write ? geometry.clone() : geometry).transform(write ? featureProjection : dataProjection, write ? dataProjection : featureProjection);\n }\n else {\n transformed = geometry;\n }\n if (write &&\n opt_options &&\n /** @type {WriteOptions} */ (opt_options).decimals !== undefined) {\n var power_1 = Math.pow(10, \n /** @type {WriteOptions} */ (opt_options).decimals);\n // if decimals option on write, round each coordinate appropriately\n /**\n * @param {Array} coordinates Coordinates.\n * @return {Array} Transformed coordinates.\n */\n var transform = function (coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n coordinates[i] = Math.round(coordinates[i] * power_1) / power_1;\n }\n return coordinates;\n };\n if (transformed === geometry) {\n transformed = geometry.clone();\n }\n transformed.applyTransform(transform);\n }\n return transformed;\n}\n/**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {ReadOptions=} opt_options Read options.\n * @return {import(\"../extent.js\").Extent} Transformed extent.\n */\nexport function transformExtentWithOptions(extent, opt_options) {\n var featureProjection = opt_options\n ? getProjection(opt_options.featureProjection)\n : null;\n var dataProjection = opt_options\n ? getProjection(opt_options.dataProjection)\n : null;\n if (featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)) {\n return transformExtent(extent, dataProjection, featureProjection);\n }\n else {\n return extent;\n }\n}\n//# sourceMappingURL=Feature.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/JSONFeature\n */\nimport FeatureFormat from './Feature.js';\nimport FormatType from './FormatType.js';\nimport { abstract } from '../util.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for JSON feature formats.\n *\n * @abstract\n */\nvar JSONFeature = /** @class */ (function (_super) {\n __extends(JSONFeature, _super);\n function JSONFeature() {\n return _super.call(this) || this;\n }\n /**\n * @return {import(\"./FormatType.js\").default} Format.\n */\n JSONFeature.prototype.getType = function () {\n return FormatType.JSON;\n };\n /**\n * Read a feature. Only works for a single feature. Use `readFeatures` to\n * read a feature collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n JSONFeature.prototype.readFeature = function (source, opt_options) {\n return this.readFeatureFromObject(getObject(source), this.getReadOptions(source, opt_options));\n };\n /**\n * Read all features. Works with both a single feature and a feature\n * collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {Array} Features.\n * @api\n */\n JSONFeature.prototype.readFeatures = function (source, opt_options) {\n return this.readFeaturesFromObject(getObject(source), this.getReadOptions(source, opt_options));\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n JSONFeature.prototype.readFeatureFromObject = function (object, opt_options) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {Array} Features.\n */\n JSONFeature.prototype.readFeaturesFromObject = function (object, opt_options) {\n return abstract();\n };\n /**\n * Read a geometry.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n * @api\n */\n JSONFeature.prototype.readGeometry = function (source, opt_options) {\n return this.readGeometryFromObject(getObject(source), this.getReadOptions(source, opt_options));\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n JSONFeature.prototype.readGeometryFromObject = function (object, opt_options) {\n return abstract();\n };\n /**\n * Read the projection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n JSONFeature.prototype.readProjection = function (source) {\n return this.readProjectionFromObject(getObject(source));\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n JSONFeature.prototype.readProjectionFromObject = function (object) {\n return abstract();\n };\n /**\n * Encode a feature as string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded feature.\n * @api\n */\n JSONFeature.prototype.writeFeature = function (feature, opt_options) {\n return JSON.stringify(this.writeFeatureObject(feature, opt_options));\n };\n /**\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {Object} Object.\n */\n JSONFeature.prototype.writeFeatureObject = function (feature, opt_options) {\n return abstract();\n };\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded features.\n * @api\n */\n JSONFeature.prototype.writeFeatures = function (features, opt_options) {\n return JSON.stringify(this.writeFeaturesObject(features, opt_options));\n };\n /**\n * @abstract\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {Object} Object.\n */\n JSONFeature.prototype.writeFeaturesObject = function (features, opt_options) {\n return abstract();\n };\n /**\n * Encode a geometry as string.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded geometry.\n * @api\n */\n JSONFeature.prototype.writeGeometry = function (geometry, opt_options) {\n return JSON.stringify(this.writeGeometryObject(geometry, opt_options));\n };\n /**\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {Object} Object.\n */\n JSONFeature.prototype.writeGeometryObject = function (geometry, opt_options) {\n return abstract();\n };\n return JSONFeature;\n}(FeatureFormat));\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {Object} Object.\n */\nfunction getObject(source) {\n if (typeof source === 'string') {\n var object = JSON.parse(source);\n return object ? /** @type {Object} */ (object) : null;\n }\n else if (source !== null) {\n return source;\n }\n else {\n return null;\n }\n}\nexport default JSONFeature;\n//# sourceMappingURL=JSONFeature.js.map","/**\n * @module ol/geom/flat/interpolate\n */\nimport { binarySearch } from '../../array.js';\nimport { lerp } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array=} opt_dest Destination.\n * @param {number=} opt_dimension Destination dimension (default is `2`)\n * @return {Array} Destination.\n */\nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest, opt_dimension) {\n var o, t;\n var n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n }\n else if (n === 2) {\n o = offset;\n t = fraction;\n }\n else if (n !== 0) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length_1 = 0;\n var cumulativeLengths = [0];\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length_1);\n x1 = x2;\n y1 = y2;\n }\n var target = fraction * length_1;\n var index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n }\n else {\n o = offset + index * stride;\n }\n }\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var dest = opt_dest ? opt_dest : new Array(dimension);\n for (var i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {\n if (end == offset) {\n return null;\n }\n var coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n else if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n var lo = offset / stride;\n var hi = end / stride;\n while (lo < hi) {\n var mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n var m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n var m1 = flatCoordinates[(lo + 1) * stride - 1];\n var t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (var i = 0; i < stride - 1; ++i) {\n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));\n }\n coordinate.push(m);\n return coordinate;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {\n if (interpolate) {\n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);\n }\n var coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n else if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);\n }\n offset = end;\n }\n return null;\n}\n//# sourceMappingURL=interpolate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { forEach as forEachSegment } from './flat/segments.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';\nimport { intersectsLineString } from './flat/intersectsextent.js';\nimport { lineStringLength } from './flat/length.js';\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nvar LineString = /** @class */ (function (_super) {\n __extends(LineString, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function LineString(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatMidpoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.flatMidpointRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n LineString.prototype.appendCoordinate = function (coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n }\n else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n */\n LineString.prototype.clone = function () {\n var lineString = new LineString(this.flatCoordinates.slice(), this.layout);\n lineString.applyProperties(this);\n return lineString;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n LineString.prototype.forEachSegment = function (callback) {\n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {\n if (this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);\n };\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @api\n */\n LineString.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_dest Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {\n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest, this.stride);\n };\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n LineString.prototype.getLength = function () {\n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @return {Array} Flat midpoint.\n */\n LineString.prototype.getFlatMidpoint = function () {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n */\n LineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LineString(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LineString.prototype.getType = function () {\n return GeometryType.LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n LineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LineString;\n}(SimpleGeometry));\nexport default LineString;\n//# sourceMappingURL=LineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/MultiLineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LineString from './LineString.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { douglasPeuckerArray } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { interpolatePoint, lineStringsCoordinateAtM, } from './flat/interpolate.js';\nimport { intersectsLineStringArray } from './flat/intersectsextent.js';\n/**\n * @classdesc\n * Multi-linestring geometry.\n *\n * @api\n */\nvar MultiLineString = /** @class */ (function (_super) {\n __extends(MultiLineString, _super);\n /**\n * @param {Array|LineString>|Array} coordinates\n * Coordinates or LineString geometries. (For internal use, flat coordinates in\n * combination with `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array=} opt_ends Flat coordinate ends for internal use.\n */\n function MultiLineString(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (Array.isArray(coordinates[0])) {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n else if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n var layout = _this.getLayout();\n var lineStrings = /** @type {Array} */ (coordinates);\n var flatCoordinates = [];\n var ends = [];\n for (var i = 0, ii = lineStrings.length; i < ii; ++i) {\n var lineString = lineStrings[i];\n if (i === 0) {\n layout = lineString.getLayout();\n }\n extend(flatCoordinates, lineString.getFlatCoordinates());\n ends.push(flatCoordinates.length);\n }\n _this.setFlatCoordinates(layout, flatCoordinates);\n _this.ends_ = ends;\n }\n return _this;\n }\n /**\n * Append the passed linestring to the multilinestring.\n * @param {LineString} lineString LineString.\n * @api\n */\n MultiLineString.prototype.appendLineString = function (lineString) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = lineString.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, lineString.getFlatCoordinates().slice());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiLineString} Clone.\n * @api\n */\n MultiLineString.prototype.clone = function () {\n var multiLineString = new MultiLineString(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n multiLineString.applyProperties(this);\n return multiLineString;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n MultiLineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * `opt_interpolate` controls interpolation between consecutive LineStrings\n * within the MultiLineString. If `opt_interpolate` is `true` the coordinates\n * will be linearly interpolated between the last coordinate of one LineString\n * and the first coordinate of the next LineString. If `opt_interpolate` is\n * `false` then the function will return `null` for Ms falling between\n * LineStrings.\n *\n * @param {number} m M.\n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.\n * @param {boolean=} opt_interpolate Interpolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n MultiLineString.prototype.getCoordinateAtM = function (m, opt_extrapolate, opt_interpolate) {\n if ((this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) ||\n this.flatCoordinates.length === 0) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n var interpolate = opt_interpolate !== undefined ? opt_interpolate : false;\n return lineStringsCoordinateAtM(this.flatCoordinates, 0, this.ends_, this.stride, m, extrapolate, interpolate);\n };\n /**\n * Return the coordinates of the multilinestring.\n * @return {Array>} Coordinates.\n * @api\n */\n MultiLineString.prototype.getCoordinates = function () {\n return inflateCoordinatesArray(this.flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n MultiLineString.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * Return the linestring at the specified index.\n * @param {number} index Index.\n * @return {LineString} LineString.\n * @api\n */\n MultiLineString.prototype.getLineString = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LineString(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linestrings of this multilinestring.\n * @return {Array} LineStrings.\n * @api\n */\n MultiLineString.prototype.getLineStrings = function () {\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var layout = this.layout;\n /** @type {Array} */\n var lineStrings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var lineString = new LineString(flatCoordinates.slice(offset, end), layout);\n lineStrings.push(lineString);\n offset = end;\n }\n return lineStrings;\n };\n /**\n * @return {Array} Flat midpoints.\n */\n MultiLineString.prototype.getFlatMidpoints = function () {\n var midpoints = [];\n var flatCoordinates = this.flatCoordinates;\n var offset = 0;\n var ends = this.ends_;\n var stride = this.stride;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var midpoint = interpolatePoint(flatCoordinates, offset, end, stride, 0.5);\n extend(midpoints, midpoint);\n offset = end;\n }\n return midpoints;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {MultiLineString} Simplified MultiLineString.\n * @protected\n */\n MultiLineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = douglasPeuckerArray(this.flatCoordinates, 0, this.ends_, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new MultiLineString(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n MultiLineString.prototype.getType = function () {\n return GeometryType.MULTI_LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n MultiLineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineStringArray(this.flatCoordinates, 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the multilinestring.\n * @param {!Array>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @api\n */\n MultiLineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return MultiLineString;\n}(SimpleGeometry));\nexport default MultiLineString;\n//# sourceMappingURL=MultiLineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/MultiPoint\n */\nimport GeometryType from './GeometryType.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { closestSquaredDistanceXY, containsXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Multi-point geometry.\n *\n * @api\n */\nvar MultiPoint = /** @class */ (function (_super) {\n __extends(MultiPoint, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function MultiPoint(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n if (opt_layout && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed point to this multipoint.\n * @param {Point} point Point.\n * @api\n */\n MultiPoint.prototype.appendPoint = function (point) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = point.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, point.getFlatCoordinates());\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiPoint} Clone.\n * @api\n */\n MultiPoint.prototype.clone = function () {\n var multiPoint = new MultiPoint(this.flatCoordinates.slice(), this.layout);\n multiPoint.applyProperties(this);\n return multiPoint;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n MultiPoint.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n var flatCoordinates = this.flatCoordinates;\n var stride = this.stride;\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n var squaredDistance = squaredDx(x, y, flatCoordinates[i], flatCoordinates[i + 1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (var j = 0; j < stride; ++j) {\n closestPoint[j] = flatCoordinates[i + j];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n };\n /**\n * Return the coordinates of the multipoint.\n * @return {Array} Coordinates.\n * @api\n */\n MultiPoint.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the point at the specified index.\n * @param {number} index Index.\n * @return {Point} Point.\n * @api\n */\n MultiPoint.prototype.getPoint = function (index) {\n var n = !this.flatCoordinates\n ? 0\n : this.flatCoordinates.length / this.stride;\n if (index < 0 || n <= index) {\n return null;\n }\n return new Point(this.flatCoordinates.slice(index * this.stride, (index + 1) * this.stride), this.layout);\n };\n /**\n * Return the points of this multipoint.\n * @return {Array} Points.\n * @api\n */\n MultiPoint.prototype.getPoints = function () {\n var flatCoordinates = this.flatCoordinates;\n var layout = this.layout;\n var stride = this.stride;\n /** @type {Array} */\n var points = [];\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n var point = new Point(flatCoordinates.slice(i, i + stride), layout);\n points.push(point);\n }\n return points;\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n MultiPoint.prototype.getType = function () {\n return GeometryType.MULTI_POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n MultiPoint.prototype.intersectsExtent = function (extent) {\n var flatCoordinates = this.flatCoordinates;\n var stride = this.stride;\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n if (containsXY(extent, x, y)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Set the coordinates of the multipoint.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n MultiPoint.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return MultiPoint;\n}(SimpleGeometry));\nexport default MultiPoint;\n//# sourceMappingURL=MultiPoint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/MultiPolygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport MultiPoint from './MultiPoint.js';\nimport Polygon from './Polygon.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestMultiArrayPoint, multiArrayMaxSquaredDelta, } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateMultiCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointsOfMultiArray } from './flat/interiorpoint.js';\nimport { inflateMultiCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingMultiArray } from './flat/intersectsextent.js';\nimport { linearRingssAreOriented, orientLinearRingsArray, } from './flat/orient.js';\nimport { linearRingss as linearRingssArea } from './flat/area.js';\nimport { linearRingss as linearRingssCenter } from './flat/center.js';\nimport { linearRingssContainsXY } from './flat/contains.js';\nimport { quantizeMultiArray } from './flat/simplify.js';\n/**\n * @classdesc\n * Multi-polygon geometry.\n *\n * @api\n */\nvar MultiPolygon = /** @class */ (function (_super) {\n __extends(MultiPolygon, _super);\n /**\n * @param {Array>|Polygon>|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` and `opt_endss` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array>=} opt_endss Array of ends for internal use with flat coordinates.\n */\n function MultiPolygon(coordinates, opt_layout, opt_endss) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array>}\n * @private\n */\n _this.endss_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointsRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.flatInteriorPoints_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (!opt_endss && !Array.isArray(coordinates[0])) {\n var layout = _this.getLayout();\n var polygons = /** @type {Array} */ (coordinates);\n var flatCoordinates = [];\n var endss = [];\n for (var i = 0, ii = polygons.length; i < ii; ++i) {\n var polygon = polygons[i];\n if (i === 0) {\n layout = polygon.getLayout();\n }\n var offset = flatCoordinates.length;\n var ends = polygon.getEnds();\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n ends[j] += offset;\n }\n extend(flatCoordinates, polygon.getFlatCoordinates());\n endss.push(ends);\n }\n opt_layout = layout;\n coordinates = flatCoordinates;\n opt_endss = endss;\n }\n if (opt_layout !== undefined && opt_endss) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.endss_ = opt_endss;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed polygon to this multipolygon.\n * @param {Polygon} polygon Polygon.\n * @api\n */\n MultiPolygon.prototype.appendPolygon = function (polygon) {\n /** @type {Array} */\n var ends;\n if (!this.flatCoordinates) {\n this.flatCoordinates = polygon.getFlatCoordinates().slice();\n ends = polygon.getEnds().slice();\n this.endss_.push();\n }\n else {\n var offset = this.flatCoordinates.length;\n extend(this.flatCoordinates, polygon.getFlatCoordinates());\n ends = polygon.getEnds().slice();\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n ends[i] += offset;\n }\n }\n this.endss_.push(ends);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiPolygon} Clone.\n * @api\n */\n MultiPolygon.prototype.clone = function () {\n var len = this.endss_.length;\n var newEndss = new Array(len);\n for (var i = 0; i < len; ++i) {\n newEndss[i] = this.endss_[i].slice();\n }\n var multiPolygon = new MultiPolygon(this.flatCoordinates.slice(), this.layout, newEndss);\n multiPolygon.applyProperties(this);\n return multiPolygon;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n MultiPolygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(multiArrayMaxSquaredDelta(this.flatCoordinates, 0, this.endss_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestMultiArrayPoint(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n MultiPolygon.prototype.containsXY = function (x, y) {\n return linearRingssContainsXY(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y);\n };\n /**\n * Return the area of the multipolygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n MultiPolygon.prototype.getArea = function () {\n return linearRingssArea(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for multi-polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>>} Coordinates.\n * @api\n */\n MultiPolygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRingsArray(flatCoordinates, 0, this.endss_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateMultiCoordinatesArray(flatCoordinates, 0, this.endss_, this.stride);\n };\n /**\n * @return {Array>} Endss.\n */\n MultiPolygon.prototype.getEndss = function () {\n return this.endss_;\n };\n /**\n * @return {Array} Flat interior points.\n */\n MultiPolygon.prototype.getFlatInteriorPoints = function () {\n if (this.flatInteriorPointsRevision_ != this.getRevision()) {\n var flatCenters = linearRingssCenter(this.flatCoordinates, 0, this.endss_, this.stride);\n this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, flatCenters);\n this.flatInteriorPointsRevision_ = this.getRevision();\n }\n return this.flatInteriorPoints_;\n };\n /**\n * Return the interior points as {@link module:ol/geom/MultiPoint multipoint}.\n * @return {MultiPoint} Interior points as XYM coordinates, where M is\n * the length of the horizontal intersection that the point belongs to.\n * @api\n */\n MultiPolygon.prototype.getInteriorPoints = function () {\n return new MultiPoint(this.getFlatInteriorPoints().slice(), GeometryLayout.XYM);\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n MultiPolygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRingsArray(this.orientedFlatCoordinates_, 0, this.endss_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {MultiPolygon} Simplified MultiPolygon.\n * @protected\n */\n MultiPolygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEndss = [];\n simplifiedFlatCoordinates.length = quantizeMultiArray(this.flatCoordinates, 0, this.endss_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEndss);\n return new MultiPolygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEndss);\n };\n /**\n * Return the polygon at the specified index.\n * @param {number} index Index.\n * @return {Polygon} Polygon.\n * @api\n */\n MultiPolygon.prototype.getPolygon = function (index) {\n if (index < 0 || this.endss_.length <= index) {\n return null;\n }\n var offset;\n if (index === 0) {\n offset = 0;\n }\n else {\n var prevEnds = this.endss_[index - 1];\n offset = prevEnds[prevEnds.length - 1];\n }\n var ends = this.endss_[index].slice();\n var end = ends[ends.length - 1];\n if (offset !== 0) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n ends[i] -= offset;\n }\n }\n return new Polygon(this.flatCoordinates.slice(offset, end), this.layout, ends);\n };\n /**\n * Return the polygons of this multipolygon.\n * @return {Array} Polygons.\n * @api\n */\n MultiPolygon.prototype.getPolygons = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var endss = this.endss_;\n var polygons = [];\n var offset = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i].slice();\n var end = ends[ends.length - 1];\n if (offset !== 0) {\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n ends[j] -= offset;\n }\n }\n var polygon = new Polygon(flatCoordinates.slice(offset, end), layout, ends);\n polygons.push(polygon);\n offset = end;\n }\n return polygons;\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n MultiPolygon.prototype.getType = function () {\n return GeometryType.MULTI_POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n MultiPolygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingMultiArray(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, extent);\n };\n /**\n * Set the coordinates of the multipolygon.\n * @param {!Array>>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n MultiPolygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 3);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var endss = deflateMultiCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.endss_);\n if (endss.length === 0) {\n this.flatCoordinates.length = 0;\n }\n else {\n var lastEnds = endss[endss.length - 1];\n this.flatCoordinates.length =\n lastEnds.length === 0 ? 0 : lastEnds[lastEnds.length - 1];\n }\n this.changed();\n };\n return MultiPolygon;\n}(SimpleGeometry));\nexport default MultiPolygon;\n//# sourceMappingURL=MultiPolygon.js.map","/**\n * @module ol/geom/flat/center\n */\nimport { createEmpty, createOrUpdateFromFlatCoordinates } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {Array} Flat centers.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var flatCenters = [];\n var extent = createEmpty();\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n extent = createOrUpdateFromFlatCoordinates(flatCoordinates, offset, ends[0], stride);\n flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);\n offset = ends[ends.length - 1];\n }\n return flatCenters;\n}\n//# sourceMappingURL=center.js.map","/**\n * @module ol/format/GeoJSON\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Feature from '../Feature.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport JSONFeature from './JSONFeature.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport { assert } from '../asserts.js';\nimport { assign, isEmpty } from '../obj.js';\nimport { get as getProjection } from '../proj.js';\nimport { transformGeometryWithOptions } from './Feature.js';\n/**\n * @typedef {import(\"geojson\").GeoJSON} GeoJSONObject\n * @typedef {import(\"geojson\").Feature} GeoJSONFeature\n * @typedef {import(\"geojson\").FeatureCollection} GeoJSONFeatureCollection\n * @typedef {import(\"geojson\").Geometry} GeoJSONGeometry\n * @typedef {import(\"geojson\").Point} GeoJSONPoint\n * @typedef {import(\"geojson\").LineString} GeoJSONLineString\n * @typedef {import(\"geojson\").Polygon} GeoJSONPolygon\n * @typedef {import(\"geojson\").MultiPoint} GeoJSONMultiPoint\n * @typedef {import(\"geojson\").MultiLineString} GeoJSONMultiLineString\n * @typedef {import(\"geojson\").MultiPolygon} GeoJSONMultiPolygon\n * @typedef {import(\"geojson\").GeometryCollection} GeoJSONGeometryCollection\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection for features read or\n * written by the format. Options passed to read or write methods will take precedence.\n * @property {string} [geometryName] Geometry name to use when creating features.\n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers include\n * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON reader\n * will look for that field to set the geometry name. If both this field is set to `true`\n * and a `geometryName` is provided, the `geometryName` will take precedence.\n */\n/**\n * @classdesc\n * Feature format for reading and writing data in the GeoJSON format.\n *\n * @api\n */\nvar GeoJSON = /** @class */ (function (_super) {\n __extends(GeoJSON, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function GeoJSON(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this) || this;\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n _this.dataProjection = getProjection(options.dataProjection ? options.dataProjection : 'EPSG:4326');\n if (options.featureProjection) {\n _this.defaultFeatureProjection = getProjection(options.featureProjection);\n }\n /**\n * Name of the geometry attribute for features.\n * @type {string|undefined}\n * @private\n */\n _this.geometryName_ = options.geometryName;\n /**\n * Look for the geometry name in the feature GeoJSON\n * @type {boolean|undefined}\n * @private\n */\n _this.extractGeometryName_ = options.extractGeometryName;\n return _this;\n }\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n GeoJSON.prototype.readFeatureFromObject = function (object, opt_options) {\n /**\n * @type {GeoJSONFeature}\n */\n var geoJSONFeature = null;\n if (object['type'] === 'Feature') {\n geoJSONFeature = /** @type {GeoJSONFeature} */ (object);\n }\n else {\n geoJSONFeature = {\n 'type': 'Feature',\n 'geometry': /** @type {GeoJSONGeometry} */ (object),\n 'properties': null,\n };\n }\n var geometry = readGeometry(geoJSONFeature['geometry'], opt_options);\n var feature = new Feature();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n }\n else if (this.extractGeometryName_ &&\n 'geometry_name' in geoJSONFeature !== undefined) {\n feature.setGeometryName(geoJSONFeature['geometry_name']);\n }\n feature.setGeometry(geometry);\n if ('id' in geoJSONFeature) {\n feature.setId(geoJSONFeature['id']);\n }\n if (geoJSONFeature['properties']) {\n feature.setProperties(geoJSONFeature['properties'], true);\n }\n return feature;\n };\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {Array} Features.\n */\n GeoJSON.prototype.readFeaturesFromObject = function (object, opt_options) {\n var geoJSONObject = /** @type {GeoJSONObject} */ (object);\n /** @type {Array} */\n var features = null;\n if (geoJSONObject['type'] === 'FeatureCollection') {\n var geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (object);\n features = [];\n var geoJSONFeatures = geoJSONFeatureCollection['features'];\n for (var i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {\n features.push(this.readFeatureFromObject(geoJSONFeatures[i], opt_options));\n }\n }\n else {\n features = [this.readFeatureFromObject(object, opt_options)];\n }\n return features;\n };\n /**\n * @param {GeoJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n GeoJSON.prototype.readGeometryFromObject = function (object, opt_options) {\n return readGeometry(object, opt_options);\n };\n /**\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n GeoJSON.prototype.readProjectionFromObject = function (object) {\n var crs = object['crs'];\n var projection;\n if (crs) {\n if (crs['type'] == 'name') {\n projection = getProjection(crs['properties']['name']);\n }\n else if (crs['type'] === 'EPSG') {\n projection = getProjection('EPSG:' + crs['properties']['code']);\n }\n else {\n assert(false, 36); // Unknown SRS type\n }\n }\n else {\n projection = this.dataProjection;\n }\n return /** @type {import(\"../proj/Projection.js\").default} */ (projection);\n };\n /**\n * Encode a feature as a GeoJSON Feature object.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONFeature} Object.\n * @api\n */\n GeoJSON.prototype.writeFeatureObject = function (feature, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n /** @type {GeoJSONFeature} */\n var object = {\n 'type': 'Feature',\n geometry: null,\n properties: null,\n };\n var id = feature.getId();\n if (id !== undefined) {\n object.id = id;\n }\n if (!feature.hasProperties()) {\n return object;\n }\n var properties = feature.getProperties();\n var geometry = feature.getGeometry();\n if (geometry) {\n object.geometry = writeGeometry(geometry, opt_options);\n delete properties[feature.getGeometryName()];\n }\n if (!isEmpty(properties)) {\n object.properties = properties;\n }\n return object;\n };\n /**\n * Encode an array of features as a GeoJSON object.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONFeatureCollection} GeoJSON Object.\n * @api\n */\n GeoJSON.prototype.writeFeaturesObject = function (features, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n var objects = [];\n for (var i = 0, ii = features.length; i < ii; ++i) {\n objects.push(this.writeFeatureObject(features[i], opt_options));\n }\n return {\n type: 'FeatureCollection',\n features: objects,\n };\n };\n /**\n * Encode a geometry as a GeoJSON object.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.\n * @api\n */\n GeoJSON.prototype.writeGeometryObject = function (geometry, opt_options) {\n return writeGeometry(geometry, this.adaptOptions(opt_options));\n };\n return GeoJSON;\n}(JSONFeature));\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, opt_options) {\n if (!object) {\n return null;\n }\n /**\n * @type {import(\"../geom/Geometry.js\").default}\n */\n var geometry;\n switch (object['type']) {\n case GeometryType.POINT: {\n geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));\n break;\n }\n case GeometryType.LINE_STRING: {\n geometry = readLineStringGeometry(\n /** @type {GeoJSONLineString} */ (object));\n break;\n }\n case GeometryType.POLYGON: {\n geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));\n break;\n }\n case GeometryType.MULTI_POINT: {\n geometry = readMultiPointGeometry(\n /** @type {GeoJSONMultiPoint} */ (object));\n break;\n }\n case GeometryType.MULTI_LINE_STRING: {\n geometry = readMultiLineStringGeometry(\n /** @type {GeoJSONMultiLineString} */ (object));\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n geometry = readMultiPolygonGeometry(\n /** @type {GeoJSONMultiPolygon} */ (object));\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n geometry = readGeometryCollectionGeometry(\n /** @type {GeoJSONGeometryCollection} */ (object));\n break;\n }\n default: {\n throw new Error('Unsupported GeoJSON type: ' + object.type);\n }\n }\n return transformGeometryWithOptions(geometry, false, opt_options);\n}\n/**\n * @param {GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {GeometryCollection} Geometry collection.\n */\nfunction readGeometryCollectionGeometry(object, opt_options) {\n var geometries = object['geometries'].map(\n /**\n * @param {GeoJSONGeometry} geometry Geometry.\n * @return {import(\"../geom/Geometry.js\").default} geometry Geometry.\n */\n function (geometry) {\n return readGeometry(geometry, opt_options);\n });\n return new GeometryCollection(geometries);\n}\n/**\n * @param {GeoJSONPoint} object Object.\n * @return {Point} Point.\n */\nfunction readPointGeometry(object) {\n return new Point(object['coordinates']);\n}\n/**\n * @param {GeoJSONLineString} object Object.\n * @return {LineString} LineString.\n */\nfunction readLineStringGeometry(object) {\n return new LineString(object['coordinates']);\n}\n/**\n * @param {GeoJSONMultiLineString} object Object.\n * @return {MultiLineString} MultiLineString.\n */\nfunction readMultiLineStringGeometry(object) {\n return new MultiLineString(object['coordinates']);\n}\n/**\n * @param {GeoJSONMultiPoint} object Object.\n * @return {MultiPoint} MultiPoint.\n */\nfunction readMultiPointGeometry(object) {\n return new MultiPoint(object['coordinates']);\n}\n/**\n * @param {GeoJSONMultiPolygon} object Object.\n * @return {MultiPolygon} MultiPolygon.\n */\nfunction readMultiPolygonGeometry(object) {\n return new MultiPolygon(object['coordinates']);\n}\n/**\n * @param {GeoJSONPolygon} object Object.\n * @return {Polygon} Polygon.\n */\nfunction readPolygonGeometry(object) {\n return new Polygon(object['coordinates']);\n}\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeGeometry(geometry, opt_options) {\n geometry = transformGeometryWithOptions(geometry, true, opt_options);\n var type = geometry.getType();\n /** @type {GeoJSONGeometry} */\n var geoJSON;\n switch (type) {\n case GeometryType.POINT: {\n geoJSON = writePointGeometry(\n /** @type {Point} */ (geometry), opt_options);\n break;\n }\n case GeometryType.LINE_STRING: {\n geoJSON = writeLineStringGeometry(\n /** @type {LineString} */ (geometry), opt_options);\n break;\n }\n case GeometryType.POLYGON: {\n geoJSON = writePolygonGeometry(\n /** @type {Polygon} */ (geometry), opt_options);\n break;\n }\n case GeometryType.MULTI_POINT: {\n geoJSON = writeMultiPointGeometry(\n /** @type {MultiPoint} */ (geometry), opt_options);\n break;\n }\n case GeometryType.MULTI_LINE_STRING: {\n geoJSON = writeMultiLineStringGeometry(\n /** @type {MultiLineString} */ (geometry), opt_options);\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n geoJSON = writeMultiPolygonGeometry(\n /** @type {MultiPolygon} */ (geometry), opt_options);\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n geoJSON = writeGeometryCollectionGeometry(\n /** @type {GeometryCollection} */ (geometry), opt_options);\n break;\n }\n case GeometryType.CIRCLE: {\n geoJSON = {\n type: 'GeometryCollection',\n geometries: [],\n };\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return geoJSON;\n}\n/**\n * @param {GeometryCollection} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.\n */\nfunction writeGeometryCollectionGeometry(geometry, opt_options) {\n var geometries = geometry.getGeometriesArray().map(function (geometry) {\n var options = assign({}, opt_options);\n delete options.featureProjection;\n return writeGeometry(geometry, options);\n });\n return {\n type: 'GeometryCollection',\n geometries: geometries,\n };\n}\n/**\n * @param {LineString} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeLineStringGeometry(geometry, opt_options) {\n return {\n type: 'LineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {MultiLineString} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiLineStringGeometry(geometry, opt_options) {\n return {\n type: 'MultiLineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {MultiPoint} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPointGeometry(geometry, opt_options) {\n return {\n type: 'MultiPoint',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {MultiPolygon} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, opt_options) {\n var right;\n if (opt_options) {\n right = opt_options.rightHanded;\n }\n return {\n type: 'MultiPolygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\n/**\n * @param {Point} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePointGeometry(geometry, opt_options) {\n return {\n type: 'Point',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {Polygon} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePolygonGeometry(geometry, opt_options) {\n var right;\n if (opt_options) {\n right = opt_options.rightHanded;\n }\n return {\n type: 'Polygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\nexport default GeoJSON;\n//# sourceMappingURL=GeoJSON.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n\n var _super = _createSuper(DefaultLegendContent);\n\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var _classNames;\n\n var finalFormatter = entry.formatter || formatter;\n var className = classNames((_classNames = {\n 'recharts-legend-item': true\n }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n\n if (entry.type === 'none') {\n return null;\n }\n\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n\n if (!payload || !payload.length) {\n return null;\n }\n\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n\n return DefaultLegendContent;\n}(PureComponent);\nDefaultLegendContent.displayName = 'Legend';\nDefaultLegendContent.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\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; }\n\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; }\n\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\n\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\n\nfunction getUniqPayload(option, payload) {\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\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, [\"ref\"]);\n\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\n\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n _inherits(Legend, _PureComponent);\n\n var _super = _createSuper(Legend);\n\n function Legend() {\n var _this;\n\n _classCallCheck(this, Legend);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.wrapperNode = void 0;\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n return _this;\n }\n\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n return this.wrapperNode.getBoundingClientRect();\n }\n\n return null;\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (boxWidth >= 0 && boxHeight >= 0) {\n return {\n width: boxWidth,\n height: boxHeight\n };\n }\n\n return null;\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box = this.getBBoxSnapshot() || {\n width: 0\n };\n\n hPos = {\n left: ((chartWidth || 0) - _box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box2 = this.getBBoxSnapshot() || {\n height: 0\n };\n\n vPos = {\n top: ((chartHeight || 0) - _box2.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n var onBBoxUpdate = this.props.onBBoxUpdate;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box3 = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(_box3.width - boxWidth) > EPS || Math.abs(_box3.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: _box3.width,\n boxHeight: _box3.height\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(_box3);\n }\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payloadUniqBy, payload)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n\n return null;\n }\n }]);\n\n return Legend;\n}(PureComponent);\nLegend.displayName = 'Legend';\nLegend.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _sortBy from \"lodash/sortBy\";\nimport _get from \"lodash/get\";\nimport _range from \"lodash/range\";\nimport _isNil from \"lodash/isNil\";\nimport _isBoolean from \"lodash/isBoolean\";\nimport _isArray from \"lodash/isArray\";\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 _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\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _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; }\n\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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { Sector } from '../shape/Sector';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle, Rectangle } from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType } from '../util/ReactUtils';\nimport { CartesianAxis } from '../cartesian/CartesianAxis';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, isCategoricalAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis, getTooltipItem } 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 { filterProps, adaptEventHandlers } from '../util/types';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n}; // use legacy isFinite only if there is a problem (aka IE)\n// eslint-disable-next-line no-restricted-globals\n\nvar isFinit = Number.isFinite ? Number.isFinite : isFinite;\nvar defer = // eslint-disable-next-line no-nested-ternary\ntypeof requestAnimationFrame === 'function' ? requestAnimationFrame : typeof setImmediate === 'function' ? setImmediate : setTimeout;\nvar deferClear = // eslint-disable-next-line no-nested-ternary\ntypeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : typeof clearImmediate === 'function' ? clearImmediate : clearTimeout;\n\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n\n return rangeObj.radius;\n};\n\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n\n return originCoordinate;\n};\n\nvar getDisplayedData = function getDisplayedData(data, _ref, item) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems || []).reduce(function (result, child) {\n var itemData = child.props.data;\n\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n\n return result;\n }, []);\n\n if (itemsData && itemsData.length > 0) {\n return itemsData;\n }\n\n if (item && item.props && item.props.data && item.props.data.length > 0) {\n return item.props.data;\n }\n\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n\n return [];\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 */\n\n\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n } // get data by activeIndex when the axis don't allow duplicated category\n\n\n return graphicalItems.reduce(function (result, child) {\n var hide = child.props.hide;\n\n if (hide) {\n return result;\n }\n\n var data = child.props.data;\n var payload;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n\n if (!payload) {\n return result;\n }\n\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\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 */\n\n\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n\n return null;\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 */\n\n\nvar getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType); // Eliminate duplicated axes\n\n var axisMap = axes.reduce(function (result, child) {\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks;\n var axisId = child.props[axisIdKey];\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n\n if (!result[axisId]) {\n var domain, duplicateDomain, categoricalDomain;\n\n if (dataKey) {\n // has dataKey in \n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is catrgorical axis\n var duplicate = hasDuplicate(domain);\n\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain; // When category axis has duplicated text, serial numbers are used to generate scale\n\n domain = _range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !_isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), dataKey, axisType);\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 = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), type, true);\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 (child.props.domain) {\n domain = parseSpecifiedDomain(child.props.domain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && child.props.domain) {\n var axisDomain = child.props.domain;\n var isDomainValidate = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n\n if (isDomainValidate) {\n domain = axisDomain;\n }\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: child.props.domain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }\n\n return result;\n }, {});\n return axisMap;\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 */\n\n\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1; // 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\n var axisMap = graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n\n if (!result[axisId]) {\n index++;\n var 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(Axis.defaultProps.domain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number'), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: _get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: Axis.defaultProps.domain,\n isCategorical: isCategorical,\n layout: layout // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n\n })));\n }\n\n return result;\n }, {});\n return axisMap;\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 {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 */\n\n\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\"); // Get all the instance of Axis\n\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n\n return axisMap;\n};\n\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n };\n};\n/**\n * 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 */\n\n\nvar createDefaultState = function createDefaultState(props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush.displayName);\n var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n var endIndex = brushItem && brushItem.props && brushItem.props.endIndex || props.data && props.data.length - 1 || 0;\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n };\n};\n\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\n\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} props Latest props\n * graphicalItems The instances of item\n * xAxisMap The configuration of x-axis\n * 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 */\n\n\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush.displayName);\n var legendItem = findChildByType(children, Legend.displayName);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, _get(result, \"\".concat(orientation)) + entry.height));\n }\n\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n\n var brushBottom = offset.bottom;\n\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n\n if (legendItem && prevLegendBBox) {\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n width: width - offset.left - offset.right,\n height: height - offset.top - offset.bottom\n });\n};\n\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _class, _temp;\n\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups\n });\n var formattedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, item);\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n childMaxBarSize = _item$props.maxBarSize;\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _objectSpread6;\n\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n var axis = axisMap && axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, (_objectSpread6 = {}, _defineProperty(_objectSpread6, entry.axisType, axis), _defineProperty(_objectSpread6, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread6));\n }, {});\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n\n // 如果是bar,计算bar的位置\n var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n\n var composedFn = item && item.type && item.type.getComposedData;\n\n if (composedFn) {\n var _objectSpread7;\n\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, (_objectSpread7 = {\n key: item.key || \"item-\".concat(index)\n }, _defineProperty(_objectSpread7, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread7, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread7, \"animationId\", updateId), _objectSpread7)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\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\n\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n\n var _super = _createSuper(CategoricalChartWrapper);\n\n // todo join specific chart propTypes\n function CategoricalChartWrapper(_props) {\n var _this;\n\n _classCallCheck(this, CategoricalChartWrapper);\n\n _this = _super.call(this, _props);\n _this.uniqueChartId = void 0;\n _this.clipPathId = void 0;\n _this.legendInstance = void 0;\n _this.deferId = void 0;\n _this.container = void 0;\n\n _this.clearDeferId = function () {\n if (!_isNil(_this.deferId) && deferClear) {\n deferClear(_this.deferId);\n }\n\n _this.deferId = null;\n };\n\n _this.handleLegendBBoxUpdate = function (box) {\n if (box && _this.legendInstance) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n };\n\n _this.handleReceiveSyncEvent = function (cId, chartId, data) {\n var syncId = _this.props.syncId;\n\n if (syncId === cId && chartId !== _this.uniqueChartId) {\n _this.clearDeferId();\n\n _this.deferId = defer && defer(_this.applySyncEvent.bind(_assertThisInitialized(_this), data));\n }\n };\n\n _this.handleBrushChange = function (_ref9) {\n var startIndex = _ref9.startIndex,\n endIndex = _ref9.endIndex;\n\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n };\n\n _this.handleMouseEnter = function (e) {\n var onMouseEnter = _this.props.onMouseEnter;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseEnter)) {\n onMouseEnter(nextState, e);\n }\n }\n };\n\n _this.triggeredAfterMouseMove = function (e) {\n var onMouseMove = _this.props.onMouseMove;\n\n var mouse = _this.getMouseInfo(e);\n\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n };\n\n _this.handleItemMouseEnter = function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n };\n\n _this.handleItemMouseLeave = function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n };\n\n _this.handleMouseMove = function (e) {\n if (e && _isFunction(e.persist)) {\n e.persist();\n }\n\n _this.triggeredAfterMouseMove(e);\n };\n\n _this.handleMouseLeave = function (e) {\n var onMouseLeave = _this.props.onMouseLeave;\n var nextState = {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n\n _this.cancelThrottledTriggerAfterMouseMove();\n };\n\n _this.handleOuterEvent = function (e) {\n var eventName = getReactEventByType(e);\n\n var event = _get(_this.props, \"\".concat(eventName));\n\n if (eventName && _isFunction(event)) {\n var mouse;\n\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n\n var handler = event;\n handler(mouse, e);\n }\n };\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onClick)) {\n onClick(nextState, e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n var onMouseDown = _this.props.onMouseDown;\n\n if (_isFunction(onMouseDown)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseDown(mouse, e);\n }\n };\n\n _this.handleMouseUp = function (e) {\n var onMouseUp = _this.props.onMouseUp;\n\n if (_isFunction(onMouseUp)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseUp(mouse, e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseMove(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchStart = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchEnd = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n };\n\n _this.verticalCoordinatesGenerator = function (_ref10) {\n var xAxis = _ref10.xAxis,\n width = _ref10.width,\n height = _ref10.height,\n offset = _ref10.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), xAxis), {}, {\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width);\n };\n\n _this.horizontalCoordinatesGenerator = function (_ref11) {\n var yAxis = _ref11.yAxis,\n width = _ref11.width,\n height = _ref11.height,\n offset = _ref11.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), yAxis), {}, {\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height);\n };\n\n _this.axesTicksGenerator = function (axis) {\n return getTicksOfAxis(axis, true);\n };\n\n _this.renderCursor = function (element) {\n var _this$state2 = _this.state,\n isTooltipActive = _this$state2.isTooltipActive,\n activeCoordinate = _this$state2.activeCoordinate,\n activePayload = _this$state2.activePayload,\n offset = _this$state2.offset,\n activeTooltipIndex = _this$state2.activeTooltipIndex;\n\n var tooltipEventType = _this.getTooltipEventType();\n\n if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n\n var layout = _this.props.layout;\n var restProps;\n var cursorComp = Curve;\n\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = _this.getCursorRectangle();\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _this$getCursorPoints = _this.getCursorPoints(),\n cx = _this$getCursorPoints.cx,\n cy = _this$getCursorPoints.cy,\n radius = _this$getCursorPoints.radius,\n startAngle = _this$getCursorPoints.startAngle,\n endAngle = _this$getCursorPoints.endAngle;\n\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: _this.getCursorPoints()\n };\n cursorComp = Curve;\n }\n\n var key = element.key || '_recharts-cursor';\n\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(element.props.cursor)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n key: key,\n className: 'recharts-tooltip-cursor'\n });\n\n return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n };\n\n _this.renderPolarAxis = function (element, displayName, index) {\n var axisType = _get(element, 'type.axisType');\n\n var axisMap = _get(_this.state, \"\".concat(axisType, \"Map\"));\n\n var axisOption = axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: axisType,\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n };\n\n _this.renderXAxis = function (element, displayName, index) {\n var xAxisMap = _this.state.xAxisMap;\n var axisObj = xAxisMap[element.props.xAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderYAxis = function (element, displayName, index) {\n var yAxisMap = _this.state.yAxisMap;\n var axisObj = yAxisMap[element.props.yAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderGrid = function (element) {\n var _this$state3 = _this.state,\n xAxisMap = _this$state3.xAxisMap,\n yAxisMap = _this$state3.yAxisMap,\n offset = _this$state3.offset;\n var _this$props = _this.props,\n width = _this$props.width,\n height = _this$props.height;\n var xAxis = getAnyElementOfObject(xAxisMap);\n\n var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n return _every(axis.domain, isFinit);\n });\n\n var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n var props = element.props || {};\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || 'grid',\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 xAxis: xAxis,\n yAxis: yAxis,\n offset: offset,\n chartWidth: width,\n chartHeight: height,\n verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n });\n };\n\n _this.renderPolarGrid = function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n var props = element.props || {};\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: _isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: _isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n };\n\n _this.renderLegend = function () {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n\n if (!props) {\n return null;\n }\n\n var item = props.item,\n otherProps = _objectWithoutProperties(props, [\"item\"]);\n\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n ref: function ref(legend) {\n _this.legendInstance = legend;\n },\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n };\n\n _this.renderTooltip = function () {\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n\n if (!tooltipItem) {\n return null;\n }\n\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isTooltipActive,\n label: activeLabel,\n payload: isTooltipActive ? activePayload : [],\n coordinate: activeCoordinate\n });\n };\n\n _this.renderBrush = function (element) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n data = _this$props3.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId; // TODO: update brush when children update\n\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n };\n\n _this.renderReferenceElement = function (element, displayName, index) {\n if (!element) {\n return null;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props2 = element.props,\n xAxisId = _element$props2.xAxisId,\n yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n };\n\n _this.renderActivePoints = function (_ref12) {\n var item = _ref12.item,\n activePoint = _ref12.activePoint,\n basePoint = _ref12.basePoint,\n childIndex = _ref12.childIndex,\n isRange = _ref12.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n dataKey = _item$item$props.dataKey;\n\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot)), adaptEventHandlers(activeDot));\n\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n\n return result;\n };\n\n _this.renderGraphicChild = function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n\n if (!item) {\n return null;\n }\n\n var tooltipEventType = _this.getTooltipEventType();\n\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var _item$props2 = item.props,\n points = _item$props2.points,\n isRange = _item$props2.isRange,\n baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n hide = _item$item$props2.hide;\n var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n var itemEvents = {};\n\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onCLick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, null, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onMouseEnter)\n };\n }\n\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n\n if (hasActive) {\n var activePoint, basePoint;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n\n if (!_isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n }\n\n if (isRange) {\n return [graphicalItem, null, null];\n }\n\n return [graphicalItem, null];\n };\n\n _this.renderCustomized = function (element, displayName, index) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n };\n\n _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n\n if (_props.throttleDelay) {\n _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n }\n\n _this.state = {};\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_isNil(this.props.syncId)) {\n this.addListener();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // add syncId\n if (_isNil(prevProps.syncId) && !_isNil(this.props.syncId)) {\n this.addListener();\n } // remove syncId\n\n\n if (!_isNil(prevProps.syncId) && _isNil(this.props.syncId)) {\n this.removeListener();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDeferId();\n\n if (!_isNil(this.props.syncId)) {\n this.removeListener();\n }\n\n this.cancelThrottledTriggerAfterMouseMove();\n }\n }, {\n key: \"cancelThrottledTriggerAfterMouseMove\",\n value: function cancelThrottledTriggerAfterMouseMove() {\n if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n this.triggeredAfterMouseMove.cancel();\n }\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip.displayName);\n\n if (tooltipItem && _isBoolean(tooltipItem.props.shared)) {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n\n return defaultTooltipEventType;\n }\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {Object} event The event object\n * @return {Object} Mouse data\n */\n\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n\n var containerOffset = getOffset(this.container);\n var e = calculateChartCoordinate(event, containerOffset);\n var rangeObj = this.inRange(e.chartX, e.chartY);\n\n if (!rangeObj) {\n return null;\n }\n\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n\n return null;\n }\n }, {\n key: \"getCursorRectangle\",\n value: function getCursorRectangle() {\n var layout = this.props.layout;\n var _this$state10 = this.state,\n activeCoordinate = _this$state10.activeCoordinate,\n offset = _this$state10.offset,\n tooltipAxisBandSize = _this$state10.tooltipAxisBandSize;\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n }\n }, {\n key: \"getCursorPoints\",\n value: function getCursorPoints() {\n var layout = this.props.layout;\n var _this$state11 = this.state,\n activeCoordinate = _this$state11.activeCoordinate,\n offset = _this$state11.offset;\n var 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 (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n var _cx = activeCoordinate.cx,\n _cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: _cx,\n cy: _cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n }\n\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x: x,\n y: y\n } : null;\n }\n\n var _this$state12 = this.state,\n angleAxisMap = _this$state12.angleAxisMap,\n radiusAxisMap = _this$state12.radiusAxisMap;\n\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: x,\n y: y\n }, angleAxis);\n }\n\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var tooltipEvents = {};\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 onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n /* eslint-disable no-underscore-dangle */\n\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n }\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n }\n }\n }, {\n key: \"triggerSyncEvent\",\n value: function triggerSyncEvent(data) {\n var syncId = this.props.syncId;\n\n if (!_isNil(syncId)) {\n eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n }\n }\n }, {\n key: \"applySyncEvent\",\n value: function applySyncEvent(data) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n syncMethod = _this$props4.syncMethod;\n var updateId = this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n\n if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, this.state)));\n } else if (!_isNil(data.activeTooltipIndex)) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state13 = this.state,\n offset = _this$state13.offset,\n tooltipTicks = _this$state13.tooltipTicks;\n\n if (!offset) {\n return;\n }\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\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }); // When a categotical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n\n\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n this.setState(data);\n }\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var entry = formattedGraphicalItems[i];\n\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n\n return null;\n }\n }, {\n key: \"renderAxis\",\n value:\n /**\n * Draw axis\n * @param {Object} axisOptions The options of axis\n * @param {Object} element The axis element\n * @param {String} displayName The display name of axis\n * @param {Number} index The index of element\n * @return {ReactElement} The instance of x-axes\n */\n function renderAxis(axisOptions, element, displayName, index) {\n var _this$props5 = this.props,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: \"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: this.axesTicksGenerator\n }));\n }\n /**\n * Draw grid\n * @param {ReactElement} element the grid item\n * @return {ReactElement} The instance of grid\n */\n\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n axisId = _ref14[0],\n axisProps = _ref14[1];\n\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n axisId = _ref16[0],\n axisProps = _ref16[1];\n\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap, _this$state$xAxisMap$;\n\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 ? void 0 : (_this$state$xAxisMap$ = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap$ === void 0 ? void 0 : _this$state$xAxisMap$.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap, _this$state$yAxisMap$;\n\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 ? void 0 : (_this$state$yAxisMap$ = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap$ === void 0 ? void 0 : _this$state$yAxisMap$.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formattedGraphicalItems[i];\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemDisplayName = getDisplayName(item.type);\n\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n others = _objectWithoutProperties(_this$props6, [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\"]);\n\n var attrs = filterProps(others);\n var map = {\n CartesianGrid: {\n handler: this.renderGrid,\n once: true\n },\n ReferenceArea: {\n handler: this.renderReferenceElement\n },\n ReferenceLine: {\n handler: this.renderReferenceElement\n },\n ReferenceDot: {\n handler: this.renderReferenceElement\n },\n XAxis: {\n handler: this.renderXAxis\n },\n YAxis: {\n handler: this.renderYAxis\n },\n Brush: {\n handler: this.renderBrush,\n once: true\n },\n Bar: {\n handler: this.renderGraphicChild\n },\n Line: {\n handler: this.renderGraphicChild\n },\n Area: {\n handler: this.renderGraphicChild\n },\n Radar: {\n handler: this.renderGraphicChild\n },\n RadialBar: {\n handler: this.renderGraphicChild\n },\n Scatter: {\n handler: this.renderGraphicChild\n },\n Pie: {\n handler: this.renderGraphicChild\n },\n Funnel: {\n handler: this.renderGraphicChild\n },\n Tooltip: {\n handler: this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: this.renderPolarAxis\n },\n Customized: {\n handler: this.renderCustomized\n }\n }; // The \"compact\" mode is mainly used as the panorama within Brush\n\n if (compact) {\n return /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map));\n }\n\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n }\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n }\n }]);\n\n return CategoricalChartWrapper;\n }(Component), _class.displayName = chartName, _class.defaultProps = _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps), _class.getDerivedStateFromProps = function (nextProps, prevState) {\n var data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n\n if (_isNil(prevState.updateId)) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n\n if (data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps); // Fixes https://github.com/recharts/recharts/issues/2143\n\n\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n // update configuration in chilren\n var hasGlobalData = !_isNil(data);\n var newUpdateId = hasGlobalData ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId\n }), prevState)), {}, {\n prevChildren: children\n });\n }\n\n return null;\n }, _class.renderActiveDot = function (option, props) {\n var dot;\n\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }, _temp;\n};","/**\n * @fileOverview X Axis\n */\n\n/** Define of XAxis props */\nexport var XAxis = function XAxis() {\n return null;\n};\nXAxis.displayName = 'XAxis';\nXAxis.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 domain: [0, 'auto'],\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};","/**\n * @fileOverview Y Axis\n */\nexport var YAxis = function YAxis() {\n return null;\n};\nYAxis.displayName = 'YAxis';\nYAxis.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 domain: [0, 'auto'],\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\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","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","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","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _upperFirst from \"lodash/upperFirst\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\n\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(_upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\n\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n\n case 'square':\n return size * size;\n\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n\n default:\n return Math.PI * size * size / 4;\n }\n};\n\nexport var Symbols = /*#__PURE__*/function (_PureComponent) {\n _inherits(Symbols, _PureComponent);\n\n var _super = _createSuper(Symbols);\n\n function Symbols() {\n _classCallCheck(this, Symbols);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Symbols, [{\n key: \"getPath\",\n value:\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n function getPath() {\n var _this$props = this.props,\n size = _this$props.size,\n sizeType = _this$props.sizeType,\n type = _this$props.type;\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n size = _this$props2.size;\n\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: this.getPath()\n }));\n }\n\n return null;\n }\n }]);\n\n return Symbols;\n}(PureComponent);\nSymbols.defaultProps = {\n type: 'circle',\n size: 64,\n sizeType: 'area'\n};\n\nSymbols.registerSymbol = function (key, factory) {\n symbolFactories[\"symbol\".concat(_upperFirst(key))] = factory;\n};","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function(type, size) {\n var context = null;\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 var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\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; }\n\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; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n _inherits(Line, _PureComponent);\n\n var _super = _createSuper(Line);\n\n function Line() {\n var _this;\n\n _classCallCheck(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.mainCurve = void 0;\n _this.state = {\n isAnimationFinished: true,\n totalLength: 0\n };\n\n _this.getStrokeDasharray = function (length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n\n for (var i = 0, sum = 0;; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n };\n\n _this.id = uniqueId('recharts-line-');\n\n _this.pathRef = function (node) {\n _this.mainCurve = node;\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n };\n\n return _this;\n }\n\n _createClass(Line, [{\n key: \"componentDidMount\",\n value:\n /* eslint-disable react/no-did-mount-set-state */\n function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props = this.props,\n points = _this$props.points,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n layout = _this$props.layout,\n children = _this$props.children;\n var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n if (!errorBarItems) {\n return null;\n }\n\n function dataPointFormatter(dataPoint, 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 return errorBarItems.map(function (item, i) {\n return /*#__PURE__*/React.cloneElement(item, {\n // eslint-disable-next-line react/no-array-index-key\n key: \"bar-\".concat(i),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var lineProps = filterProps(this.props);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _this$props3 = this.props,\n type = _this$props3.type,\n layout = _this$props3.layout,\n connectNulls = _this$props3.connectNulls,\n ref = _this$props3.ref,\n others = _objectWithoutProperties(_this$props3, [\"type\", \"layout\", \"connectNulls\", \"ref\"]);\n\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n\n return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n\n var _this$props4 = this.props,\n points = _this$props4.points,\n strokeDasharray = _this$props4.strokeDasharray,\n isAnimationActive = _this$props4.isAnimationActive,\n animationBegin = _this$props4.animationBegin,\n animationDuration = _this$props4.animationDuration,\n animationEasing = _this$props4.animationEasing,\n animationId = _this$props4.animationId,\n animateNewValues = _this$props4.animateNewValues,\n width = _this$props4.width,\n height = _this$props4.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n } // magic number of faking previous x and y location\n\n\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = \"\".concat(curLength, \"px \").concat(totalLength - curLength, \"px\");\n }\n\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props,\n points = _this$props5.points,\n isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n dot = _this$props6.dot,\n points = _this$props6.points,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n top = _this$props6.top,\n left = _this$props6.left,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n id = _this$props6.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-line', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClip ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(), (hasSinglePoint || dot) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n\n return null;\n }\n }, {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = classNames('recharts-line-dot', option ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n\n return dotItem;\n }\n }]);\n\n return Line;\n}(PureComponent);\nLine.displayName = 'Line';\nLine.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: [],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false\n};\n\nLine.getComposedData = function (_ref2) {\n var props = _ref2.props,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n dataKey = _ref2.dataKey,\n bandSize = _ref2.bandSize,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n\n return {\n x: _isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\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 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","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 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","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","export type RGBColorArray = [number, number, number];\n\nexport function assert(\n condition: boolean,\n message: string = 'Assertion failed'\n) {\n if (!condition) {\n if (typeof Error !== 'undefined') {\n throw new Error(message);\n }\n throw message;\n }\n}\n\nexport function getCSSVariable(name: string) {\n if (name.substr(0, 2) !== '--') {\n name = '--' + name;\n }\n const el = document.getElementById('core-layout');\n if (el) {\n return getComputedStyle(el).getPropertyValue(name);\n }\n}\n\nexport function clamp(target: number, min: number, max: number): number {\n return Math.max(Math.min(target, max), min);\n}\n\nexport function throttle(\n callback: (...args: any[]) => any,\n limit: number\n): (...args: any[]) => any {\n var waiting = false;\n return function (this: any, ...args: any) {\n if (!waiting) {\n callback.apply(this, args);\n waiting = true;\n setTimeout(function () {\n waiting = false;\n }, limit);\n }\n };\n}\n\nexport const hexToRgb = (hex: string): RGBColorArray | undefined => {\n const _hex = hex.substring(0, Math.min(hex.length, 7)); // Discard Alpha\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(_hex);\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : undefined;\n};\n\nexport const formatNumber = (\n value: number,\n options: Intl.NumberFormatOptions = { maximumFractionDigits: 2 }\n): string => Intl.NumberFormat('en', options).format(value);\n\nexport function updateUrl(\n url: string,\n obj: Record\n): string {\n const u = new URL(url);\n\n Object.entries(obj).forEach(([key, value]: [string, string | number]) => {\n if (u.searchParams.has(key)) {\n if (value.toString().length === 0) {\n u.searchParams.delete(key);\n } else {\n u.searchParams.set(key, value.toString());\n }\n } else {\n if (value.toString().length === 0) {\n u.searchParams.delete(key);\n } else {\n u.searchParams.append(key, value.toString());\n }\n }\n });\n console.log(u);\n return decodeURIComponent(u.href);\n}\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 apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","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 * 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","/**\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","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 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 root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","/**\n * 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","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n\n if (typeof hostWindow !== 'undefined') {\n _window = hostWindow;\n } else if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n /* Detect CSS Animations support to detect element display/re-attach */\n\n\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = _window.document.createElement('fakeelement');\n\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n\n var elementStyle = _window.getComputedStyle(element);\n\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '
' + '
';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n /* Listen for a css animation to detect element display/re-attach */\n\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n element.__resizeTriggers__.__animationListener__ = null;\n }\n\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n var cellCount = _ref.cellCount,\n cellSize = _ref.cellSize,\n computeMetadataCallback = _ref.computeMetadataCallback,\n computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n nextCellsCount = _ref.nextCellsCount,\n nextCellSize = _ref.nextCellSize,\n nextScrollToIndex = _ref.nextScrollToIndex,\n scrollToIndex = _ref.scrollToIndex,\n updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n // In that event users should use the manual recompute methods to inform of changes.\n if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n // In this case we should also update the scrollTop to ensure it stays visible.\n\n if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n updateScrollOffsetForScrollToIndex();\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n // Cache of size and position data for cells, mapped by cell index.\n // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n // Used in deferred mode to track which cells have been queued for measurement.\n function CellSizeAndPositionManager(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeGetter = _ref.cellSizeGetter,\n estimatedCellSize = _ref.estimatedCellSize;\n\n _classCallCheck(this, CellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n _defineProperty(this, \"_cellCount\", void 0);\n\n _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n this._cellSizeGetter = cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n }\n\n _createClass(CellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return false;\n }\n }, {\n key: \"configure\",\n value: function configure(_ref2) {\n var cellCount = _ref2.cellCount,\n estimatedCellSize = _ref2.estimatedCellSize,\n cellSizeGetter = _ref2.cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._cellSizeGetter = cellSizeGetter;\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellCount;\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._estimatedCellSize;\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._lastMeasuredIndex;\n }\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment() {\n return 0;\n }\n /**\n * This method returns the size and position for the cell at the specified index.\n * It just-in-time calculates (or used cached values) for cells leading up to the index.\n */\n\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n if (index < 0 || index >= this._cellCount) {\n throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n }\n\n if (index > this._lastMeasuredIndex) {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n var size = this._cellSizeGetter({\n index: i\n }); // undefined or NaN probably means a logic error in the size getter.\n // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n if (size === undefined || isNaN(size)) {\n throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n } else if (size === null) {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: 0\n };\n this._lastBatchedIndex = index;\n } else {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n this._lastMeasuredIndex = index;\n }\n }\n }\n\n return this._cellSizeAndPositionData[index];\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n offset: 0,\n size: 0\n };\n }\n /**\n * Total size of all cells being measured.\n * This value will be completely estimated initially.\n * As cells are measured, the estimate will be updated.\n */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n }\n /**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @param currentOffset Container's current (x or y) offset\n * @param totalSize Total size (width or height) of all cells\n * @return Offset to use to ensure the specified cell is visible\n */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n if (containerSize <= 0) {\n return 0;\n }\n\n var datum = this.getSizeAndPositionOfCell(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n var idealOffset;\n\n switch (align) {\n case 'start':\n idealOffset = maxOffset;\n break;\n\n case 'end':\n idealOffset = minOffset;\n break;\n\n case 'center':\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n break;\n }\n\n var totalSize = this.getTotalSize();\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n }\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(params) {\n var containerSize = params.containerSize,\n offset = params.offset;\n var totalSize = this.getTotalSize();\n\n if (totalSize === 0) {\n return {};\n }\n\n var maxOffset = offset + containerSize;\n\n var start = this._findNearestCell(offset);\n\n var datum = this.getSizeAndPositionOfCell(start);\n offset = datum.offset + datum.size;\n var stop = start;\n\n while (offset < maxOffset && stop < this._cellCount - 1) {\n stop++;\n offset += this.getSizeAndPositionOfCell(stop).size;\n }\n\n return {\n start: start,\n stop: stop\n };\n }\n /**\n * Clear all cached values for cells after the specified index.\n * This method should be called for any cell that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n */\n\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n }\n }, {\n key: \"_binarySearch\",\n value: function _binarySearch(high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n }\n }, {\n key: \"_exponentialSearch\",\n value: function _exponentialSearch(index, offset) {\n var interval = 1;\n\n while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n }\n /**\n * Searches for the cell (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest cell index will be returned.\n * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n */\n\n }, {\n key: \"_findNearestCell\",\n value: function _findNearestCell(offset) {\n if (isNaN(offset)) {\n throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n } // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n\n\n offset = Math.max(0, offset);\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n // If we've already measured cells within this range just use a binary search as it's faster.\n return this._binarySearch(lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n // The overall complexity for this approach is O(log n).\n return this._exponentialSearch(lastMeasuredIndex, offset);\n }\n }\n }]);\n\n return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n if (isBrowser()) {\n if (isChrome()) {\n return CHROME_MAX_ELEMENT_SIZE;\n }\n }\n\n return DEFAULT_MAX_ELEMENT_SIZE;\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n function ScalingCellSizeAndPositionManager(_ref) {\n var _ref$maxScrollSize = _ref.maxScrollSize,\n maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n _defineProperty(this, \"_maxScrollSize\", void 0);\n\n // Favor composition over inheritance to simplify IE10 support\n this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n this._maxScrollSize = maxScrollSize;\n }\n\n _createClass(ScalingCellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n }\n }, {\n key: \"configure\",\n value: function configure(params) {\n this._cellSizeAndPositionManager.configure(params);\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellSizeAndPositionManager.getCellCount();\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._cellSizeAndPositionManager.getEstimatedCellSize();\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n }\n /**\n * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n * The offset passed to this function is scaled (safe) as well.\n */\n\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment(_ref2) {\n var containerSize = _ref2.containerSize,\n offset = _ref2.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n }\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n }\n /** See CellSizeAndPositionManager#getTotalSize */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n }\n /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n currentOffset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: currentOffset\n });\n\n var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: align,\n containerSize: containerSize,\n currentOffset: currentOffset,\n targetIndex: targetIndex\n });\n\n return this._offsetToSafeOffset({\n containerSize: containerSize,\n offset: offset\n });\n }\n /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(_ref4) {\n var containerSize = _ref4.containerSize,\n offset = _ref4.offset;\n offset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: offset\n });\n return this._cellSizeAndPositionManager.getVisibleCellRange({\n containerSize: containerSize,\n offset: offset\n });\n }\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._cellSizeAndPositionManager.resetCell(index);\n }\n }, {\n key: \"_getOffsetPercentage\",\n value: function _getOffsetPercentage(_ref5) {\n var containerSize = _ref5.containerSize,\n offset = _ref5.offset,\n totalSize = _ref5.totalSize;\n return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n }\n }, {\n key: \"_offsetToSafeOffset\",\n value: function _offsetToSafeOffset(_ref6) {\n var containerSize = _ref6.containerSize,\n offset = _ref6.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: totalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n }\n }\n }, {\n key: \"_safeOffsetToOffset\",\n value: function _safeOffsetToOffset(_ref7) {\n var containerSize = _ref7.containerSize,\n offset = _ref7.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (totalSize - containerSize));\n }\n }\n }]);\n\n return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var cachedIndices = {};\n return function (_ref) {\n var callback = _ref.callback,\n indices = _ref.indices;\n var keys = Object.keys(indices);\n var allInitialized = !requireAllKeys || keys.every(function (key) {\n var value = indices[key];\n return Array.isArray(value) ? value.length > 0 : value >= 0;\n });\n var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n var cachedValue = cachedIndices[key];\n var value = indices[key];\n return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n });\n cachedIndices = indices;\n\n if (allInitialized && indexChanged) {\n callback(indices);\n }\n };\n}","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n var cellSize = _ref.cellSize,\n cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n previousCellsCount = _ref.previousCellsCount,\n previousCellSize = _ref.previousCellSize,\n previousScrollToAlignment = _ref.previousScrollToAlignment,\n previousScrollToIndex = _ref.previousScrollToIndex,\n previousSize = _ref.previousSize,\n scrollOffset = _ref.scrollOffset,\n scrollToAlignment = _ref.scrollToAlignment,\n scrollToIndex = _ref.scrollToIndex,\n size = _ref.size,\n sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n var cellCount = cellSizeAndPositionManager.getCellCount();\n var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n // We should ensure that the scroll target is visible.\n\n if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n // Make sure we aren't scrolled too far past the current content.\n } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n // We need to ensure that the current scroll offset is still within the collection's range.\n // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n // Just check to make sure we're still okay.\n // Only adjust the scroll position if we've scrolled below the last set of rows.\n if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n updateScrollIndexCallback(cellCount - 1);\n }\n }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n win = window;\n} else if (typeof self !== 'undefined') {\n win = self;\n} else {\n win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Grid, _React$PureComponent);\n\n // Invokes onSectionRendered callback only when start/stop row or column indices change\n function Grid(props) {\n var _this;\n\n _classCallCheck(this, Grid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n _this.setState({\n isScrolling: false,\n needToResetStyleCache: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n var onSectionRendered = _this.props.onSectionRendered;\n\n _this._onGridRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n columnOverscanStartIndex: _this._columnStartIndex,\n columnOverscanStopIndex: _this._columnStopIndex,\n columnStartIndex: _this._renderedColumnStartIndex,\n columnStopIndex: _this._renderedColumnStopIndex,\n rowOverscanStartIndex: _this._rowStartIndex,\n rowOverscanStopIndex: _this._rowStopIndex,\n rowStartIndex: _this._renderedRowStartIndex,\n rowStopIndex: _this._renderedRowStopIndex\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target === _this._scrollingContainer) {\n _this.handleScrollEvent(event.target);\n }\n });\n\n var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.columnCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.columnWidth)(params);\n },\n estimatedCellSize: Grid._getEstimatedColumnSize(props)\n });\n var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.rowCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.rowHeight)(params);\n },\n estimatedCellSize: Grid._getEstimatedRowSize(props)\n });\n _this.state = {\n instanceProps: {\n columnSizeAndPositionManager: columnSizeAndPositionManager,\n rowSizeAndPositionManager: rowSizeAndPositionManager,\n prevColumnWidth: props.columnWidth,\n prevRowHeight: props.rowHeight,\n prevColumnCount: props.columnCount,\n prevRowCount: props.rowCount,\n prevIsScrolling: props.isScrolling === true,\n prevScrollToColumn: props.scrollToColumn,\n prevScrollToRow: props.scrollToRow,\n scrollbarSize: 0,\n scrollbarSizeMeasured: false\n },\n isScrolling: false,\n scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: null,\n needToResetStyleCache: false\n };\n\n if (props.scrollToRow > 0) {\n _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n }\n\n if (props.scrollToColumn > 0) {\n _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n }\n\n return _this;\n }\n /**\n * Gets offsets for a given cell and alignment.\n */\n\n\n _createClass(Grid, [{\n key: \"getOffsetForCell\",\n value: function getOffsetForCell() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$alignment = _ref.alignment,\n alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n var offsetProps = _objectSpread({}, this.props, {\n scrollToAlignment: alignment,\n scrollToColumn: columnIndex,\n scrollToRow: rowIndex\n });\n\n return {\n scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n scrollTop: this._getCalculatedScrollTop(offsetProps)\n };\n }\n /**\n * Gets estimated total rows' height.\n */\n\n }, {\n key: \"getTotalRowsHeight\",\n value: function getTotalRowsHeight() {\n return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n }\n /**\n * Gets estimated total columns' width.\n */\n\n }, {\n key: \"getTotalColumnsWidth\",\n value: function getTotalColumnsWidth() {\n return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n }\n /**\n * This method handles a scroll event originating from an external scroll control.\n * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n */\n\n }, {\n key: \"handleScrollEvent\",\n value: function handleScrollEvent(_ref2) {\n var _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n // On iOS, we can arrive at negative offsets by swiping past the start.\n // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n if (scrollTopParam < 0) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n this._debounceScrollEnded();\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n autoWidth = _this$props.autoWidth,\n height = _this$props.height,\n width = _this$props.width;\n var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollbarSize = instanceProps.scrollbarSize;\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n // Don't change direction for an axis unless scroll offset has changed.\n var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n var newState = {\n isScrolling: true,\n scrollDirectionHorizontal: scrollDirectionHorizontal,\n scrollDirectionVertical: scrollDirectionVertical,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n };\n\n if (!autoHeight) {\n newState.scrollTop = scrollTop;\n }\n\n if (!autoWidth) {\n newState.scrollLeft = scrollLeft;\n }\n\n newState.needToResetStyleCache = false;\n this.setState(newState);\n }\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n /**\n * Invalidate Grid size and recompute visible cells.\n * This is a deferred wrapper for recomputeGridSize().\n * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n * This method is intended for advanced use-cases like CellMeasurer.\n */\n // @TODO (bvaughn) Add automated test coverage for this.\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref3) {\n var columnIndex = _ref3.columnIndex,\n rowIndex = _ref3.rowIndex;\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /**\n * Pre-measure all columns and rows in a Grid.\n * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n rowCount = _this$props2.rowCount;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n }\n /**\n * Forced recompute of row heights and column widths.\n * This function should be called if dynamic column or row sizes have changed but nothing else has.\n * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$columnIndex = _ref4.columnIndex,\n columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n _ref4$rowIndex = _ref4.rowIndex,\n rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n var _this$props3 = this.props,\n scrollToColumn = _this$props3.scrollToColumn,\n scrollToRow = _this$props3.scrollToRow;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n // In this case the cDU handler can't know if they changed.\n // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n // Invalid row heights likely mean invalid cached content as well.\n\n this._styleCache = {};\n this._cellCache = {};\n this.forceUpdate();\n }\n /**\n * Ensure column and row are visible.\n */\n\n }, {\n key: \"scrollToCell\",\n value: function scrollToCell(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n var columnCount = this.props.columnCount;\n var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n if (columnCount > 1 && columnIndex !== undefined) {\n this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n scrollToColumn: columnIndex\n }));\n }\n\n if (rowIndex !== undefined) {\n this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n scrollToRow: rowIndex\n }));\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n getScrollbarSize = _this$props4.getScrollbarSize,\n height = _this$props4.height,\n scrollLeft = _this$props4.scrollLeft,\n scrollToColumn = _this$props4.scrollToColumn,\n scrollTop = _this$props4.scrollTop,\n scrollToRow = _this$props4.scrollToRow,\n width = _this$props4.width;\n var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n this._initialScrollTop = 0;\n this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n\n if (!instanceProps.scrollbarSizeMeasured) {\n this.setState(function (prevState) {\n var stateUpdate = _objectSpread({}, prevState, {\n needToResetStyleCache: false\n });\n\n stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n return stateUpdate;\n });\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n } // refs don't work in `react-test-renderer`\n\n\n if (this._scrollingContainer) {\n // setting the ref's scrollLeft and scrollTop.\n // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n }\n\n if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n this._scrollingContainer.scrollTop = this.state.scrollTop;\n }\n } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollLeftForScrollToColumn();\n }\n\n if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollTopForScrollToRow();\n } // Update onRowsRendered callback\n\n\n this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n });\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) New scroll-to-cell props have been set\n */\n\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n autoHeight = _this$props5.autoHeight,\n autoWidth = _this$props5.autoWidth,\n columnCount = _this$props5.columnCount,\n height = _this$props5.height,\n rowCount = _this$props5.rowCount,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToColumn = _this$props5.scrollToColumn,\n scrollToRow = _this$props5.scrollToRow,\n width = _this$props5.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n scrollTop = _this$state.scrollTop,\n instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n // In this case we may have to restore a previously-specified scroll offset.\n // For more info see bvaughn/react-virtualized/issues/218\n\n\n var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Special case where the previous size was 0:\n // In this case we don't show any windowed cells at all.\n // So we should always recalculate offset afterwards.\n\n\n var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n if (this._recomputeScrollLeftFlag) {\n this._recomputeScrollLeftFlag = false;\n\n this._updateScrollLeftForScrollToColumn(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n previousCellsCount: prevProps.columnCount,\n previousCellSize: prevProps.columnWidth,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToColumn,\n previousSize: prevProps.width,\n scrollOffset: scrollLeft,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToColumn,\n size: width,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n }\n });\n }\n\n if (this._recomputeScrollTopFlag) {\n this._recomputeScrollTopFlag = false;\n\n this._updateScrollTopForScrollToRow(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n previousCellsCount: prevProps.rowCount,\n previousCellSize: prevProps.rowHeight,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToRow,\n previousSize: prevProps.height,\n scrollOffset: scrollTop,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToRow,\n size: height,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollTopForScrollToRow(_this2.props);\n }\n });\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n /**\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoContainerWidth = _this$props6.autoContainerWidth,\n autoHeight = _this$props6.autoHeight,\n autoWidth = _this$props6.autoWidth,\n className = _this$props6.className,\n containerProps = _this$props6.containerProps,\n containerRole = _this$props6.containerRole,\n containerStyle = _this$props6.containerStyle,\n height = _this$props6.height,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n role = _this$props6.role,\n style = _this$props6.style,\n tabIndex = _this$props6.tabIndex,\n width = _this$props6.width;\n var _this$state2 = this.state,\n instanceProps = _this$state2.instanceProps,\n needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n var isScrolling = this._isScrolling();\n\n var gridStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n width: autoWidth ? 'auto' : width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n };\n\n if (needToResetStyleCache) {\n this._styleCache = {};\n } // calculate _styleCache here\n // if state.isScrolling (not from _isScrolling) then reset\n\n\n if (!this.state.isScrolling) {\n this._resetStyleCache();\n } // calculate children to render here\n\n\n this._calculateChildrenToRender(this.props, this.state);\n\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n this._horizontalScrollBarSize = horizontalScrollBarSize;\n this._verticalScrollBarSize = verticalScrollBarSize;\n this._scrollbarPresenceChanged = true;\n } // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n var childrenToDisplay = this._childrenToDisplay;\n var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n return React.createElement(\"div\", _extends({\n ref: this._setScrollingContainerRef\n }, containerProps, {\n \"aria-label\": this.props['aria-label'],\n \"aria-readonly\": this.props['aria-readonly'],\n className: clsx('ReactVirtualized__Grid', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({}, gridStyle, {}, style),\n tabIndex: tabIndex\n }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Grid__innerScrollContainer\",\n role: containerRole,\n style: _objectSpread({\n width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n height: totalRowsHeight,\n maxWidth: totalColumnsWidth,\n maxHeight: totalRowsHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }, containerStyle)\n }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n }, {\n key: \"_calculateChildrenToRender\",\n value: function _calculateChildrenToRender() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n var cellRenderer = props.cellRenderer,\n cellRangeRenderer = props.cellRangeRenderer,\n columnCount = props.columnCount,\n deferredMeasurementCache = props.deferredMeasurementCache,\n height = props.height,\n overscanColumnCount = props.overscanColumnCount,\n overscanIndicesGetter = props.overscanIndicesGetter,\n overscanRowCount = props.overscanRowCount,\n rowCount = props.rowCount,\n width = props.width,\n isScrollingOptOut = props.isScrollingOptOut;\n var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n scrollDirectionVertical = state.scrollDirectionVertical,\n instanceProps = state.instanceProps;\n var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n var isScrolling = this._isScrolling(props, state);\n\n this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n if (height > 0 && width > 0) {\n var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n containerSize: width,\n offset: scrollLeft\n });\n var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n containerSize: height,\n offset: scrollTop\n });\n var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n containerSize: width,\n offset: scrollLeft\n });\n var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n containerSize: height,\n offset: scrollTop\n }); // Store for _invokeOnGridRenderedHelper()\n\n this._renderedColumnStartIndex = visibleColumnIndices.start;\n this._renderedColumnStopIndex = visibleColumnIndices.stop;\n this._renderedRowStartIndex = visibleRowIndices.start;\n this._renderedRowStopIndex = visibleRowIndices.stop;\n var overscanColumnIndices = overscanIndicesGetter({\n direction: 'horizontal',\n cellCount: columnCount,\n overscanCellsCount: overscanColumnCount,\n scrollDirection: scrollDirectionHorizontal,\n startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n });\n var overscanRowIndices = overscanIndicesGetter({\n direction: 'vertical',\n cellCount: rowCount,\n overscanCellsCount: overscanRowCount,\n scrollDirection: scrollDirectionVertical,\n startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n }); // Store for _invokeOnGridRenderedHelper()\n\n var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n var rowStartIndex = overscanRowIndices.overscanStartIndex;\n var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n if (deferredMeasurementCache) {\n // If rows have a dynamic height, scan the rows we are about to render.\n // If any have not yet been measured, then we need to render all columns initially,\n // Because the height of the row is equal to the tallest cell within that row,\n // (And so we can't know the height without measuring all column-cells first).\n if (!deferredMeasurementCache.hasFixedHeight()) {\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n if (!deferredMeasurementCache.has(rowIndex, 0)) {\n columnStartIndex = 0;\n columnStopIndex = columnCount - 1;\n break;\n }\n }\n } // If columns have a dynamic width, scan the columns we are about to render.\n // If any have not yet been measured, then we need to render all rows initially,\n // Because the width of the column is equal to the widest cell within that column,\n // (And so we can't know the width without measuring all row-cells first).\n\n\n if (!deferredMeasurementCache.hasFixedWidth()) {\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n if (!deferredMeasurementCache.has(0, columnIndex)) {\n rowStartIndex = 0;\n rowStopIndex = rowCount - 1;\n break;\n }\n }\n }\n }\n\n this._childrenToDisplay = cellRangeRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n columnStartIndex: columnStartIndex,\n columnStopIndex: columnStopIndex,\n deferredMeasurementCache: deferredMeasurementCache,\n horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n isScrolling: isScrolling,\n isScrollingOptOut: isScrollingOptOut,\n parent: this,\n rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n rowStartIndex: rowStartIndex,\n rowStopIndex: rowStopIndex,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n styleCache: this._styleCache,\n verticalOffsetAdjustment: verticalOffsetAdjustment,\n visibleColumnIndices: visibleColumnIndices,\n visibleRowIndices: visibleRowIndices\n }); // update the indices\n\n this._columnStartIndex = columnStartIndex;\n this._columnStopIndex = columnStopIndex;\n this._rowStartIndex = rowStartIndex;\n this._rowStopIndex = rowStopIndex;\n }\n }\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Grid.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_debounceScrollEnded\",\n value: function _debounceScrollEnded() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n\n /**\n * Check for batched CellMeasurer size invalidations.\n * This will occur the first time one or more previously unmeasured cells are rendered.\n */\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref6) {\n var _this3 = this;\n\n var scrollLeft = _ref6.scrollLeft,\n scrollTop = _ref6.scrollTop,\n totalColumnsWidth = _ref6.totalColumnsWidth,\n totalRowsHeight = _ref6.totalRowsHeight;\n\n this._onScrollMemoizer({\n callback: function callback(_ref7) {\n var scrollLeft = _ref7.scrollLeft,\n scrollTop = _ref7.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalRowsHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalColumnsWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_isScrolling\",\n value: function _isScrolling() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n // If isScrolling is defined in props, use it to override the value in state\n // This is a performance optimization for WindowScroller + Grid\n return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n }\n }, {\n key: \"_maybeCallOnScrollbarPresenceChange\",\n value: function _maybeCallOnScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n this._scrollbarPresenceChanged = false;\n onScrollbarPresenceChange({\n horizontal: this._horizontalScrollBarSize > 0,\n size: this.state.instanceProps.scrollbarSize,\n vertical: this._verticalScrollBarSize > 0\n });\n }\n }\n }, {\n key: \"scrollToPosition\",\n\n /**\n * Scroll to the specified offset(s).\n * Useful for animating position changes.\n */\n value: function scrollToPosition(_ref8) {\n var scrollLeft = _ref8.scrollLeft,\n scrollTop = _ref8.scrollTop;\n\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollLeft(props, state);\n }\n }, {\n key: \"_updateScrollLeftForScrollToColumn\",\n value: function _updateScrollLeftForScrollToColumn() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollTop(props, state);\n }\n }, {\n key: \"_resetStyleCache\",\n value: function _resetStyleCache() {\n var styleCache = this._styleCache;\n var cellCache = this._cellCache;\n var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n // This makes Grid simpler to use (since cells commonly change).\n // And it keeps the caches from growing too large.\n // Performance is most sensitive when a user is scrolling.\n // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n // This keeps the cellCache to a resonable size.\n\n this._cellCache = {};\n this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n this._styleCache[key] = styleCache[key];\n\n if (isScrollingOptOut) {\n this._cellCache[key] = cellCache[key];\n }\n }\n }\n }\n }, {\n key: \"_updateScrollTopForScrollToRow\",\n value: function _updateScrollTopForScrollToRow() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = {};\n\n if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n newState.scrollLeft = 0;\n newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n // scrollTo{Column,Row} should override scroll{Left,Top}\n } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: nextProps.scrollLeft,\n scrollTop: nextProps.scrollTop\n }));\n }\n\n var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n newState.needToResetStyleCache = false;\n\n if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n // Reset cache. set it to {} in render\n newState.needToResetStyleCache = true;\n }\n\n instanceProps.columnSizeAndPositionManager.configure({\n cellCount: nextProps.columnCount,\n estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n });\n instanceProps.rowSizeAndPositionManager.configure({\n cellCount: nextProps.rowCount,\n estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n });\n\n if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n instanceProps.prevColumnCount = 0;\n instanceProps.prevRowCount = 0;\n } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n Object.assign(newState, {\n isScrolling: false\n });\n }\n\n var maybeStateA;\n var maybeStateB;\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevColumnCount,\n cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.columnSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.columnCount,\n nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n nextScrollToIndex: nextProps.scrollToColumn,\n scrollToIndex: instanceProps.prevScrollToColumn,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n }\n });\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevRowCount,\n cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.rowSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.rowCount,\n nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n nextScrollToIndex: nextProps.scrollToRow,\n scrollToIndex: instanceProps.prevScrollToRow,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n }\n });\n instanceProps.prevColumnCount = nextProps.columnCount;\n instanceProps.prevColumnWidth = nextProps.columnWidth;\n instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n instanceProps.prevRowCount = nextProps.rowCount;\n instanceProps.prevRowHeight = nextProps.rowHeight;\n instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n if (instanceProps.scrollbarSize === undefined) {\n instanceProps.scrollbarSizeMeasured = false;\n instanceProps.scrollbarSize = 0;\n } else {\n instanceProps.scrollbarSizeMeasured = true;\n }\n\n newState.instanceProps = instanceProps;\n return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n }\n }, {\n key: \"_getEstimatedColumnSize\",\n value: function _getEstimatedColumnSize(props) {\n return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n }\n }, {\n key: \"_getEstimatedRowSize\",\n value: function _getEstimatedRowSize(props) {\n return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n }\n }, {\n key: \"_getScrollToPositionStateUpdate\",\n\n /**\n * Get the updated state after scrolling to\n * scrollLeft and scrollTop\n */\n value: function _getScrollToPositionStateUpdate(_ref9) {\n var prevState = _ref9.prevState,\n scrollLeft = _ref9.scrollLeft,\n scrollTop = _ref9.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollLeft = scrollLeft;\n }\n\n if (typeof scrollTop === 'number' && scrollTop >= 0) {\n newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollTop = scrollTop;\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n return newState;\n }\n\n return {};\n }\n }, {\n key: \"_wrapSizeGetter\",\n value: function _wrapSizeGetter(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft(nextProps, prevState) {\n var columnCount = nextProps.columnCount,\n height = nextProps.height,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToColumn = nextProps.scrollToColumn,\n width = nextProps.width;\n var scrollLeft = prevState.scrollLeft,\n instanceProps = prevState.instanceProps;\n\n if (columnCount > 0) {\n var finalColumn = columnCount - 1;\n var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: width - scrollBarSize,\n currentOffset: scrollLeft,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n var scrollLeft = prevState.scrollLeft;\n\n var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: calculatedScrollLeft,\n scrollTop: -1\n });\n }\n\n return {};\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop(nextProps, prevState) {\n var height = nextProps.height,\n rowCount = nextProps.rowCount,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToRow = nextProps.scrollToRow,\n width = nextProps.width;\n var scrollTop = prevState.scrollTop,\n instanceProps = prevState.instanceProps;\n\n if (rowCount > 0) {\n var finalRow = rowCount - 1;\n var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: height - scrollBarSize,\n currentOffset: scrollTop,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollTopForScrollToRowStateUpdate\",\n value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n var scrollTop = prevState.scrollTop;\n\n var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: -1,\n scrollTop: calculatedScrollTop\n });\n }\n\n return {};\n }\n }]);\n\n return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string.isRequired,\n \"aria-readonly\": PropTypes.bool,\n\n /**\n * Set the width of the inner scrollable container to 'auto'.\n * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n */\n \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoWidth\": PropTypes.bool.isRequired,\n\n /** Responsible for rendering a cell given an row and column index. */\n \"cellRenderer\": function cellRenderer() {\n return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a group of cells given their index ranges. */\n \"cellRangeRenderer\": function cellRangeRenderer() {\n return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n },\n\n /** Optional custom CSS class name to attach to root Grid element. */\n \"className\": PropTypes.string,\n\n /** Number of columns in grid. */\n \"columnCount\": PropTypes.number.isRequired,\n\n /** Either a fixed column width (number) or a function that returns the width of a column given its index. */\n \"columnWidth\": function columnWidth() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Unfiltered props for the Grid container. */\n \"containerProps\": PropTypes.object,\n\n /** ARIA role for the cell-container. */\n \"containerRole\": PropTypes.string.isRequired,\n\n /** Optional inline style applied to inner cell-container */\n \"containerStyle\": PropTypes.object.isRequired,\n\n /**\n * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n */\n \"deferredMeasurementCache\": PropTypes.object,\n\n /**\n * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n * The estimated total width is adjusted as columns are rendered.\n */\n \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n /**\n * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Exposed for testing purposes only. */\n \"getScrollbarSize\": PropTypes.func.isRequired,\n\n /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional custom id to attach to root Grid element. */\n \"id\": PropTypes.string,\n\n /**\n * Override internal is-scrolling state tracking.\n * This property is primarily intended for use with the WindowScroller component.\n */\n \"isScrolling\": PropTypes.bool,\n\n /**\n * Opt-out of isScrolling param passed to cellRangeRenderer.\n * To avoid the extra render when scroll stops.\n */\n \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */\n \"noContentRenderer\": function noContentRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /**\n * Called whenever a horizontal or vertical scrollbar is added or removed.\n * This prop is not intended for end-user use;\n * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n */\n \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n /** Callback invoked with information about the section of the Grid that was just rendered. */\n \"onSectionRendered\": PropTypes.func.isRequired,\n\n /**\n * Number of columns to render before/after the visible section of the grid.\n * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanColumnCount\": PropTypes.number.isRequired,\n\n /**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible section of the grid.\n * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** ARIA role for the grid element. */\n \"role\": PropTypes.string.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * Should implement the following interface: ({ index: number }): number\n */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in grid. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Horizontal offset. */\n \"scrollLeft\": PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Column index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToColumn\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToRow\": PropTypes.number.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n 'aria-label': 'grid',\n 'aria-readonly': true,\n autoContainerWidth: false,\n autoHeight: false,\n autoWidth: false,\n cellRangeRenderer: defaultCellRangeRenderer,\n containerRole: 'rowgroup',\n containerStyle: {},\n estimatedColumnSize: 100,\n estimatedRowSize: 30,\n getScrollbarSize: scrollbarSize,\n noContentRenderer: renderNull,\n onScroll: function onScroll() {},\n onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n onSectionRendered: function onSectionRendered() {},\n overscanColumnCount: 0,\n overscanIndicesGetter: defaultOverscanIndicesGetter,\n overscanRowCount: 10,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n scrollToAlignment: 'auto',\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n tabIndex: 0,\n isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start; // wait for end of processing current event handler, because event handler may be long\n\n Promise.resolve().then(function () {\n start = Date.now();\n });\n\n var timeout = function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n };\n\n var frame = {\n id: raf(timeout)\n };\n return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n var cellCache = _ref.cellCache,\n cellRenderer = _ref.cellRenderer,\n columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n deferredMeasurementCache = _ref.deferredMeasurementCache,\n horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n isScrolling = _ref.isScrolling,\n isScrollingOptOut = _ref.isScrollingOptOut,\n parent = _ref.parent,\n rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex,\n styleCache = _ref.styleCache,\n verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n visibleColumnIndices = _ref.visibleColumnIndices,\n visibleRowIndices = _ref.visibleRowIndices;\n var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n // User cannot scroll beyond these size limitations.\n // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n // We should never cache styles for compressed offsets though as this can lead to bugs.\n // See issue #576 for more.\n\n var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n if (canCacheStyle && styleCache[key]) {\n style = styleCache[key];\n } else {\n // In deferred mode, cells will be initially rendered before we know their size.\n // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n // Position not-yet-measured cells at top/left 0,0,\n // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n // Positioning them further to the right/bottom influences their measured size.\n style = {\n height: 'auto',\n left: 0,\n position: 'absolute',\n top: 0,\n width: 'auto'\n };\n } else {\n style = {\n height: rowDatum.size,\n left: columnDatum.offset + horizontalOffsetAdjustment,\n position: 'absolute',\n top: rowDatum.offset + verticalOffsetAdjustment,\n width: columnDatum.size\n };\n styleCache[key] = style;\n }\n }\n\n var cellRendererParams = {\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent,\n rowIndex: rowIndex,\n style: style\n };\n var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling completes.\n // However if we are scaling scroll positions and sizes, we should also avoid caching.\n // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n // For more info refer to issue #395\n //\n // If isScrollingOptOut is specified, we always cache cells.\n // For more info refer to issue #1028\n\n if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n if (!cellCache[key]) {\n cellCache[key] = cellRenderer(cellRendererParams);\n }\n\n renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n } else {\n renderedCell = cellRenderer(cellRendererParams);\n }\n\n if (renderedCell == null || renderedCell === false) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnAboutMissingStyle(parent, renderedCell);\n }\n\n renderedCells.push(renderedCell);\n }\n }\n\n return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n if (process.env.NODE_ENV !== 'production') {\n if (renderedCell) {\n // If the direct child is a CellMeasurer, then we should check its child\n // See issue #611\n if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n renderedCell = renderedCell.props.children;\n }\n\n if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n parent.__warnedAboutMissingStyle = true;\n console.warn('Rendered cell should include style property for positioning.');\n }\n }\n }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n // Make sure we render at least 1 cell extra before and after (except near boundaries)\n // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n // For more info see issues #625\n overscanCellsCount = Math.max(1, overscanCellsCount);\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex - 1),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ArrowKeyStepper, _React$PureComponent);\n\n function ArrowKeyStepper() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ArrowKeyStepper);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollToColumn: 0,\n scrollToRow: 0,\n instanceProps: {\n prevScrollToColumn: 0,\n prevScrollToRow: 0\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n var _this$props = _this.props,\n columnCount = _this$props.columnCount,\n disabled = _this$props.disabled,\n mode = _this$props.mode,\n rowCount = _this$props.rowCount;\n\n if (disabled) {\n return;\n }\n\n var _this$_getScrollState = _this._getScrollState(),\n scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n var _this$_getScrollState2 = _this._getScrollState(),\n scrollToColumn = _this$_getScrollState2.scrollToColumn,\n scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n // This is to keep the grid from scrolling after the snap-to update.\n\n\n switch (event.key) {\n case 'ArrowDown':\n scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n break;\n\n case 'ArrowLeft':\n scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n break;\n\n case 'ArrowRight':\n scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n break;\n\n case 'ArrowUp':\n scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n break;\n }\n\n if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n event.preventDefault();\n\n _this._updateScrollState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n var columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex;\n _this._columnStartIndex = columnStartIndex;\n _this._columnStopIndex = columnStopIndex;\n _this._rowStartIndex = rowStartIndex;\n _this._rowStopIndex = rowStopIndex;\n });\n\n return _this;\n }\n\n _createClass(ArrowKeyStepper, [{\n key: \"setScrollIndexes\",\n value: function setScrollIndexes(_ref2) {\n var scrollToColumn = _ref2.scrollToColumn,\n scrollToRow = _ref2.scrollToRow;\n this.setState({\n scrollToRow: scrollToRow,\n scrollToColumn: scrollToColumn\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n children = _this$props2.children;\n\n var _this$_getScrollState3 = this._getScrollState(),\n scrollToColumn = _this$_getScrollState3.scrollToColumn,\n scrollToRow = _this$_getScrollState3.scrollToRow;\n\n return React.createElement(\"div\", {\n className: className,\n onKeyDown: this._onKeyDown\n }, children({\n onSectionRendered: this._onSectionRendered,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n }));\n }\n }, {\n key: \"_getScrollState\",\n value: function _getScrollState() {\n return this.props.isControlled ? this.props : this.state;\n }\n }, {\n key: \"_updateScrollState\",\n value: function _updateScrollState(_ref3) {\n var scrollToColumn = _ref3.scrollToColumn,\n scrollToRow = _ref3.scrollToRow;\n var _this$props3 = this.props,\n isControlled = _this$props3.isControlled,\n onScrollToChange = _this$props3.onScrollToChange;\n\n if (typeof onScrollToChange === 'function') {\n onScrollToChange({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n\n if (!isControlled) {\n this.setState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isControlled) {\n return {};\n }\n\n if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n return _objectSpread({}, prevState, {\n scrollToColumn: nextProps.scrollToColumn,\n scrollToRow: nextProps.scrollToRow,\n instanceProps: {\n prevScrollToColumn: nextProps.scrollToColumn,\n prevScrollToRow: nextProps.scrollToRow\n }\n });\n }\n\n return {};\n }\n }]);\n\n return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"children\": PropTypes.func.isRequired,\n \"className\": PropTypes.string,\n \"columnCount\": PropTypes.number.isRequired,\n \"disabled\": PropTypes.bool.isRequired,\n \"isControlled\": PropTypes.bool.isRequired,\n \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n \"onScrollToChange\": PropTypes.func,\n \"rowCount\": PropTypes.number.isRequired,\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n disabled: false,\n isControlled: false,\n mode: 'edges',\n scrollToColumn: 0,\n scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(AutoSizer, _React$Component);\n\n function AutoSizer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n var height = _this._parentNode.offsetHeight || 0;\n var width = _this._parentNode.offsetWidth || 0;\n var win = _this._window || window;\n var style = win.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(style.paddingRight, 10) || 0;\n var paddingTop = parseInt(style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n var newHeight = height - paddingTop - paddingBottom;\n var newWidth = width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: height - paddingTop - paddingBottom,\n width: width - paddingLeft - paddingRight\n });\n\n onResize({\n height: height,\n width: width\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n _this._autoSizer = autoSizer;\n });\n\n return _this;\n }\n\n _createClass(AutoSizer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n\n this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disableHeight = _this$props2.disableHeight,\n disableWidth = _this$props2.disableWidth,\n style = _this$props2.style;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = {\n overflow: 'visible'\n };\n var childParams = {};\n\n if (!disableHeight) {\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n outerStyle.width = 0;\n childParams.width = width;\n }\n /**\n * TODO: Avoid rendering children before the initial measurements have been collected.\n * At best this would just be wasting cycles.\n * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n * Note that if default width/height props were provided this would still work with SSR.\n if (\n height !== 0 &&\n width !== 0\n ) {\n child = children({ height, width })\n }\n */\n\n\n return React.createElement(\"div\", {\n className: className,\n ref: this._setRef,\n style: _objectSpread({}, outerStyle, {}, style)\n }, children(childParams));\n }\n }]);\n\n return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /** Function responsible for rendering children.*/\n \"children\": PropTypes.func.isRequired,\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n \"className\": PropTypes.string,\n\n /** Default height to use for initial render; useful for SSR */\n \"defaultHeight\": PropTypes.number,\n\n /** Default width to use for initial render; useful for SSR */\n \"defaultWidth\": PropTypes.number,\n\n /** Disable dynamic :height property */\n \"disableHeight\": PropTypes.bool.isRequired,\n\n /** Disable dynamic :width property */\n \"disableWidth\": PropTypes.bool.isRequired,\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n \"nonce\": PropTypes.string,\n\n /** Callback to be invoked on-resize */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CellMeasurer, _React$PureComponent);\n\n function CellMeasurer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CellMeasurer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n var _this$props = _this.props,\n cache = _this$props.cache,\n _this$props$columnInd = _this$props.columnIndex,\n columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n parent = _this$props.parent,\n _this$props$rowIndex = _this$props.rowIndex,\n rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n var _this$_getCellMeasure = _this._getCellMeasurements(),\n height = _this$_getCellMeasure.height,\n width = _this$_getCellMeasure.width;\n\n if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n cache.set(rowIndex, columnIndex, width, height);\n\n if (parent && typeof parent.recomputeGridSize === 'function') {\n parent.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('CellMeasurer registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n if (element) {\n _this._maybeMeasureCell();\n }\n });\n\n return _this;\n }\n\n _createClass(CellMeasurer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return typeof children === 'function' ? children({\n measure: this._measure,\n registerChild: this._registerChild\n }) : children;\n }\n }, {\n key: \"_getCellMeasurements\",\n value: function _getCellMeasurements() {\n var cache = this.props.cache;\n var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var styleWidth = node.style.width;\n var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n // It will have a hard-coded width/height from the previous measurement.\n // The fact that we are measuring indicates this measurement is probably stale,\n // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n // See issue #593 for more info.\n // Even if we are measuring initially- if we're inside of a MultiGrid component,\n // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n // eg top/left Grid renders before bottom/right Grid\n // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n if (!cache.hasFixedWidth()) {\n node.style.width = 'auto';\n }\n\n if (!cache.hasFixedHeight()) {\n node.style.height = 'auto';\n }\n\n var height = Math.ceil(node.offsetHeight);\n var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n if (styleWidth) {\n node.style.width = styleWidth;\n }\n\n if (styleHeight) {\n node.style.height = styleHeight;\n }\n\n return {\n height: height,\n width: width\n };\n } else {\n return {\n height: 0,\n width: 0\n };\n }\n }\n }, {\n key: \"_maybeMeasureCell\",\n value: function _maybeMeasureCell() {\n var _this$props2 = this.props,\n cache = _this$props2.cache,\n _this$props2$columnIn = _this$props2.columnIndex,\n columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n parent = _this$props2.parent,\n _this$props2$rowIndex = _this$props2.rowIndex,\n rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n if (!cache.has(rowIndex, columnIndex)) {\n var _this$_getCellMeasure2 = this._getCellMeasurements(),\n height = _this$_getCellMeasure2.height,\n width = _this$_getCellMeasure2.width;\n\n cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n parent.invalidateCellSizeAfterRender({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }\n }]);\n\n return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"cache\": function cache() {\n return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n },\n \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n \"columnIndex\": PropTypes.number,\n \"index\": PropTypes.number,\n \"parent\": PropTypes.shape({\n invalidateCellSizeAfterRender: PropTypes.func,\n recomputeGridSize: PropTypes.func\n }).isRequired,\n \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CollectionView, _React$PureComponent);\n\n // Invokes callbacks only when their values have changed.\n function CollectionView() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CollectionView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n // We handle this case in componentDidMount()\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n var _this$props = _this.props,\n cellLayoutManager = _this$props.cellLayoutManager,\n onSectionRendered = _this$props.onSectionRendered;\n\n _this._onSectionRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n indices: cellLayoutManager.getLastRenderedIndices()\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n var _this$props2 = _this.props,\n cellLayoutManager = _this$props2.cellLayoutManager,\n height = _this$props2.height,\n scrollToAlignment = _this$props2.scrollToAlignment,\n scrollToCell = _this$props2.scrollToCell,\n width = _this$props2.width;\n var _this$state = _this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n\n if (scrollToCell >= 0) {\n var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n align: scrollToAlignment,\n cellIndex: scrollToCell,\n height: height,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n\n if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n _this._setScrollPosition(scrollPosition);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target !== _this._scrollingContainer) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n var _this$props3 = _this.props,\n cellLayoutManager = _this$props3.cellLayoutManager,\n height = _this$props3.height,\n isScrollingChange = _this$props3.isScrollingChange,\n width = _this$props3.width;\n var scrollbarSize = _this._scrollbarSize;\n\n var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge.height,\n totalWidth = _cellLayoutManager$ge.width;\n\n var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n // All things considered, this seems to be the best current work around that I'm aware of.\n // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n if (!_this.state.isScrolling) {\n isScrollingChange(true);\n }\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollPositionChangeReason: scrollPositionChangeReason,\n scrollTop: scrollTop\n });\n }\n\n _this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalWidth: totalWidth,\n totalHeight: totalHeight\n });\n });\n\n _this._scrollbarSize = getScrollbarSize();\n\n if (_this._scrollbarSize === undefined) {\n _this._scrollbarSizeMeasured = false;\n _this._scrollbarSize = 0;\n } else {\n _this._scrollbarSizeMeasured = true;\n }\n\n return _this;\n }\n /**\n * Forced recompute of cell sizes and positions.\n * This function should be called if cell sizes have changed but nothing else has.\n * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n */\n\n\n _createClass(CollectionView, [{\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._calculateSizeAndPositionDataOnNextUpdate = true;\n this.forceUpdate();\n }\n /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n cellLayoutManager = _this$props4.cellLayoutManager,\n scrollLeft = _this$props4.scrollLeft,\n scrollToCell = _this$props4.scrollToCell,\n scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n if (!this._scrollbarSizeMeasured) {\n this._scrollbarSize = getScrollbarSize();\n this._scrollbarSizeMeasured = true;\n this.setState({});\n }\n\n if (scrollToCell >= 0) {\n this._updateScrollPositionForScrollToCell();\n } else if (scrollLeft >= 0 || scrollTop >= 0) {\n this._setScrollPosition({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n } // Update onSectionRendered callback.\n\n\n this._invokeOnSectionRenderedHelper();\n\n var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge2.height,\n totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalHeight: totalHeight,\n totalWidth: totalWidth\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props5 = this.props,\n height = _this$props5.height,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToCell = _this$props5.scrollToCell,\n width = _this$props5.width;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n this._updateScrollPositionForScrollToCell();\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnSectionRenderedHelper();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoHeight = _this$props6.autoHeight,\n cellCount = _this$props6.cellCount,\n cellLayoutManager = _this$props6.cellLayoutManager,\n className = _this$props6.className,\n height = _this$props6.height,\n horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n style = _this$props6.style,\n verticalOverscanSize = _this$props6.verticalOverscanSize,\n width = _this$props6.width;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollLeft = _this$state3.scrollLeft,\n scrollTop = _this$state3.scrollTop; // Memoization reset\n\n if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n this._lastRenderedCellCount = cellCount;\n this._lastRenderedCellLayoutManager = cellLayoutManager;\n this._calculateSizeAndPositionDataOnNextUpdate = false;\n cellLayoutManager.calculateSizeAndPositionData();\n }\n\n var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge3.height,\n totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n var top = Math.max(0, scrollTop - verticalOverscanSize);\n var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n height: bottom - top,\n isScrolling: isScrolling,\n width: right - left,\n x: left,\n y: top\n }) : [];\n var collectionStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n WebkitOverflowScrolling: 'touch',\n width: width,\n willChange: 'transform'\n }; // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Collection', className),\n id: id,\n onScroll: this._onScroll,\n role: \"grid\",\n style: _objectSpread({}, collectionStyle, {}, style),\n tabIndex: 0\n }, cellCount > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Collection__innerScrollContainer\",\n style: {\n height: totalHeight,\n maxHeight: totalHeight,\n maxWidth: totalWidth,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n width: totalWidth\n }\n }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Collection.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_enablePointerEventsAfterDelay\",\n value: function _enablePointerEventsAfterDelay() {\n var _this2 = this;\n\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = setTimeout(function () {\n var isScrollingChange = _this2.props.isScrollingChange;\n isScrollingChange(false);\n _this2._disablePointerEventsTimeoutId = null;\n\n _this2.setState({\n isScrolling: false\n });\n }, IS_SCROLLING_TIMEOUT);\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref) {\n var _this3 = this;\n\n var scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n totalHeight = _ref.totalHeight,\n totalWidth = _ref.totalWidth;\n\n this._onScrollMemoizer({\n callback: function callback(_ref2) {\n var scrollLeft = _ref2.scrollLeft,\n scrollTop = _ref2.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_setScrollPosition\",\n value: function _setScrollPosition(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (scrollLeft >= 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0) {\n newState.scrollTop = scrollTop;\n }\n\n if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n this.setState(newState);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n return {\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n }\n\n return null;\n }\n }]);\n\n return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n 'aria-label': 'grid',\n horizontalOverscanSize: 0,\n noContentRenderer: function noContentRenderer() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n onSectionRendered: function onSectionRendered() {\n return null;\n },\n scrollToAlignment: 'auto',\n scrollToCell: -1,\n style: {},\n verticalOverscanSize: 0\n});\n\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /**\n * Number of cells in collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n */\n cellLayoutManager: PropTypes.object.isRequired,\n\n /**\n * Optional custom CSS class name to attach to root Collection element.\n */\n className: PropTypes.string,\n\n /**\n * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * Optional custom id to attach to root Collection element.\n */\n id: PropTypes.string,\n\n /**\n * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n horizontalOverscanSize: PropTypes.number.isRequired,\n isScrollingChange: PropTypes.func,\n\n /**\n * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n */\n noContentRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /**\n * Callback invoked with information about the section of the Collection that was just rendered.\n * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n */\n onSectionRendered: PropTypes.func.isRequired,\n\n /**\n * Horizontal offset.\n */\n scrollLeft: PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /**\n * Cell index to ensure visible (by forcefully scrolling if necessary).\n */\n scrollToCell: PropTypes.number.isRequired,\n\n /**\n * Vertical offset.\n */\n scrollTop: PropTypes.number,\n\n /**\n * Optional custom inline style to attach to root Collection element.\n */\n style: PropTypes.object,\n\n /**\n * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n verticalOverscanSize: PropTypes.number.isRequired,\n\n /**\n * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n */\n width: PropTypes.number.isRequired\n} : {};\npolyfill(CollectionView);\nexport default CollectionView;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section =\n/*#__PURE__*/\nfunction () {\n function Section(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n _classCallCheck(this, Section);\n\n this.height = height;\n this.width = width;\n this.x = x;\n this.y = y;\n this._indexMap = {};\n this._indices = [];\n }\n /** Add a cell to this section. */\n\n\n _createClass(Section, [{\n key: \"addCellIndex\",\n value: function addCellIndex(_ref2) {\n var index = _ref2.index;\n\n if (!this._indexMap[index]) {\n this._indexMap[index] = true;\n\n this._indices.push(index);\n }\n }\n /** Get all cell indices that have been added to this section. */\n\n }, {\n key: \"getCellIndices\",\n value: function getCellIndices() {\n return this._indices;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n }\n }]);\n\n return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager =\n/*#__PURE__*/\nfunction () {\n function SectionManager() {\n var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n _classCallCheck(this, SectionManager);\n\n this._sectionSize = sectionSize;\n this._cellMetadata = [];\n this._sections = {};\n }\n /**\n * Gets all cell indices contained in the specified region.\n * A region may encompass 1 or more Sections.\n */\n\n\n _createClass(SectionManager, [{\n key: \"getCellIndices\",\n value: function getCellIndices(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n var indices = {};\n this.getSections({\n height: height,\n width: width,\n x: x,\n y: y\n }).forEach(function (section) {\n return section.getCellIndices().forEach(function (index) {\n indices[index] = index;\n });\n }); // Object keys are strings; this function returns numbers\n\n return Object.keys(indices).map(function (index) {\n return indices[index];\n });\n }\n /** Get size and position information for the cell specified. */\n\n }, {\n key: \"getCellMetadata\",\n value: function getCellMetadata(_ref2) {\n var index = _ref2.index;\n return this._cellMetadata[index];\n }\n /** Get all Sections overlapping the specified region. */\n\n }, {\n key: \"getSections\",\n value: function getSections(_ref3) {\n var height = _ref3.height,\n width = _ref3.width,\n x = _ref3.x,\n y = _ref3.y;\n var sectionXStart = Math.floor(x / this._sectionSize);\n var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n var sectionYStart = Math.floor(y / this._sectionSize);\n var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n var sections = [];\n\n for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n if (!this._sections[key]) {\n this._sections[key] = new Section({\n height: this._sectionSize,\n width: this._sectionSize,\n x: sectionX * this._sectionSize,\n y: sectionY * this._sectionSize\n });\n }\n\n sections.push(this._sections[key]);\n }\n }\n\n return sections;\n }\n /** Total number of Sections based on the currently registered cells. */\n\n }, {\n key: \"getTotalSectionCount\",\n value: function getTotalSectionCount() {\n return Object.keys(this._sections).length;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n return Object.keys(this._sections).map(function (index) {\n return _this._sections[index].toString();\n });\n }\n /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n }, {\n key: \"registerCell\",\n value: function registerCell(_ref4) {\n var cellMetadatum = _ref4.cellMetadatum,\n index = _ref4.index;\n this._cellMetadata[index] = cellMetadatum;\n this.getSections(cellMetadatum).forEach(function (section) {\n return section.addCellIndex({\n index: index\n });\n });\n }\n }]);\n\n return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? 'auto' : _ref$align,\n cellOffset = _ref.cellOffset,\n cellSize = _ref.cellSize,\n containerSize = _ref.containerSize,\n currentOffset = _ref.currentOffset;\n var maxOffset = cellOffset;\n var minOffset = maxOffset - containerSize + cellSize;\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return maxOffset - (containerSize - cellSize) / 2;\n\n default:\n return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Collection, _React$PureComponent);\n\n function Collection(props, context) {\n var _this;\n\n _classCallCheck(this, Collection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n _this._cellMetadata = [];\n _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n _this._cellCache = [];\n _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Collection, [{\n key: \"forceUpdate\",\n value: function forceUpdate() {\n if (this._collectionView !== undefined) {\n this._collectionView.forceUpdate();\n }\n }\n /** See Collection#recomputeCellSizesAndPositions */\n\n }, {\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._cellCache = [];\n\n this._collectionView.recomputeCellSizesAndPositions();\n }\n /** React lifecycle methods */\n\n }, {\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n return React.createElement(CollectionView, _extends({\n cellLayoutManager: this,\n isScrollingChange: this._isScrollingChange,\n ref: this._setCollectionViewRef\n }, props));\n }\n /** CellLayoutManager interface */\n\n }, {\n key: \"calculateSizeAndPositionData\",\n value: function calculateSizeAndPositionData() {\n var _this$props = this.props,\n cellCount = _this$props.cellCount,\n cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n sectionSize = _this$props.sectionSize;\n\n var data = _calculateSizeAndPositionData({\n cellCount: cellCount,\n cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n sectionSize: sectionSize\n });\n\n this._cellMetadata = data.cellMetadata;\n this._sectionManager = data.sectionManager;\n this._height = data.height;\n this._width = data.width;\n }\n /**\n * Returns the most recently rendered set of cell indices.\n */\n\n }, {\n key: \"getLastRenderedIndices\",\n value: function getLastRenderedIndices() {\n return this._lastRenderedCellIndices;\n }\n /**\n * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n */\n\n }, {\n key: \"getScrollPositionForCell\",\n value: function getScrollPositionForCell(_ref) {\n var align = _ref.align,\n cellIndex = _ref.cellIndex,\n height = _ref.height,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n width = _ref.width;\n var cellCount = this.props.cellCount;\n\n if (cellIndex >= 0 && cellIndex < cellCount) {\n var cellMetadata = this._cellMetadata[cellIndex];\n scrollLeft = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.x,\n cellSize: cellMetadata.width,\n containerSize: width,\n currentOffset: scrollLeft,\n targetIndex: cellIndex\n });\n scrollTop = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.y,\n cellSize: cellMetadata.height,\n containerSize: height,\n currentOffset: scrollTop,\n targetIndex: cellIndex\n });\n }\n\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n }\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return {\n height: this._height,\n width: this._width\n };\n }\n }, {\n key: \"cellRenderers\",\n value: function cellRenderers(_ref2) {\n var _this2 = this;\n\n var height = _ref2.height,\n isScrolling = _ref2.isScrolling,\n width = _ref2.width,\n x = _ref2.x,\n y = _ref2.y;\n var _this$props2 = this.props,\n cellGroupRenderer = _this$props2.cellGroupRenderer,\n cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n height: height,\n width: width,\n x: x,\n y: y\n });\n return cellGroupRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n var index = _ref3.index;\n return _this2._sectionManager.getCellMetadata({\n index: index\n });\n },\n indices: this._lastRenderedCellIndices,\n isScrolling: isScrolling\n });\n }\n }, {\n key: \"_isScrollingChange\",\n value: function _isScrollingChange(isScrolling) {\n if (!isScrolling) {\n this._cellCache = [];\n }\n }\n }, {\n key: \"_setCollectionViewRef\",\n value: function _setCollectionViewRef(ref) {\n this._collectionView = ref;\n }\n }]);\n\n return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n 'aria-label': 'grid',\n cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Number of cells in Collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a group of cells given their indices.\n * Should implement the following interface: ({\n * cellSizeAndPositionGetter:Function,\n * indices: Array,\n * cellRenderer: Function\n * }): Array\n */\n cellGroupRenderer: PropTypes.func.isRequired,\n\n /**\n * Responsible for rendering a cell given an row and column index.\n * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n */\n cellRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback responsible for returning size and offset/position information for a given cell (index).\n * ({ index: number }): { height: number, width: number, x: number, y: number }\n */\n cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n /**\n * Optionally override the size of the sections a Collection's cells are split into.\n */\n sectionSize: PropTypes.number\n} : {};\n\nfunction defaultCellGroupRenderer(_ref4) {\n var cellCache = _ref4.cellCache,\n cellRenderer = _ref4.cellRenderer,\n cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n indices = _ref4.indices,\n isScrolling = _ref4.isScrolling;\n return indices.map(function (index) {\n var cellMetadata = cellSizeAndPositionGetter({\n index: index\n });\n var cellRendererProps = {\n index: index,\n isScrolling: isScrolling,\n key: index,\n style: {\n height: cellMetadata.height,\n left: cellMetadata.x,\n position: 'absolute',\n top: cellMetadata.y,\n width: cellMetadata.width\n }\n }; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling complets.\n\n if (isScrolling) {\n if (!(index in cellCache)) {\n cellCache[index] = cellRenderer(cellRendererProps);\n }\n\n return cellCache[index];\n } else {\n return cellRenderer(cellRendererProps);\n }\n }).filter(function (renderedCell) {\n return !!renderedCell;\n });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n sectionSize = _ref.sectionSize;\n var cellMetadata = [];\n var sectionManager = new SectionManager(sectionSize);\n var height = 0;\n var width = 0;\n\n for (var index = 0; index < cellCount; index++) {\n var cellMetadatum = cellSizeAndPositionGetter({\n index: index\n });\n\n if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n }\n\n height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n cellMetadata[index] = cellMetadatum;\n sectionManager.registerCell({\n cellMetadatum: cellMetadatum,\n index: index\n });\n }\n\n return {\n cellMetadata: cellMetadata,\n height: height,\n sectionManager: sectionManager,\n width: width\n };\n}","import Collection from './Collection';\nexport default Collection;\nexport { Collection };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ColumnSizer, _React$PureComponent);\n\n function ColumnSizer(props, context) {\n var _this;\n\n _classCallCheck(this, ColumnSizer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ColumnSizer, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n columnMaxWidth = _this$props.columnMaxWidth,\n columnMinWidth = _this$props.columnMinWidth,\n columnCount = _this$props.columnCount,\n width = _this$props.width;\n\n if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n columnMaxWidth = _this$props2.columnMaxWidth,\n columnMinWidth = _this$props2.columnMinWidth,\n columnCount = _this$props2.columnCount,\n width = _this$props2.width;\n var safeColumnMinWidth = columnMinWidth || 1;\n var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n var columnWidth = width / columnCount;\n columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n columnWidth = Math.floor(columnWidth);\n var adjustedWidth = Math.min(width, columnWidth * columnCount);\n return children({\n adjustedWidth: adjustedWidth,\n columnWidth: columnWidth,\n getColumnWidth: function getColumnWidth() {\n return columnWidth;\n },\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(child) {\n if (child && typeof child.recomputeGridSize !== 'function') {\n throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n }\n\n this._registeredChild = child;\n\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }]);\n\n return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized Grid.\n * This function should implement the following signature:\n * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n *\n * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n * The :registerChild should be passed to the Grid's :ref property.\n * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n */\n children: PropTypes.func.isRequired,\n\n /** Optional maximum allowed column width */\n columnMaxWidth: PropTypes.number,\n\n /** Optional minimum allowed column width */\n columnMinWidth: PropTypes.number,\n\n /** Number of columns in Grid or Table child */\n columnCount: PropTypes.number.isRequired,\n\n /** Width of Grid or Table child */\n width: PropTypes.number.isRequired\n} : {};","import ColumnSizer from './ColumnSizer';\nexport default ColumnSizer;\nexport { ColumnSizer };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(InfiniteLoader, _React$PureComponent);\n\n function InfiniteLoader(props, context) {\n var _this;\n\n _classCallCheck(this, InfiniteLoader);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(InfiniteLoader, [{\n key: \"resetLoadMoreRowsCache\",\n value: function resetLoadMoreRowsCache(autoReload) {\n this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n if (autoReload) {\n this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n onRowsRendered: this._onRowsRendered,\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_loadUnloadedRanges\",\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n var loadMoreRows = this.props.loadMoreRows;\n unloadedRanges.forEach(function (unloadedRange) {\n var promise = loadMoreRows(unloadedRange);\n\n if (promise) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: unloadedRange.startIndex,\n stopIndex: unloadedRange.stopIndex\n })) {\n if (_this2._registeredChild) {\n forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n }\n }\n });\n }\n });\n }\n }, {\n key: \"_onRowsRendered\",\n value: function _onRowsRendered(_ref) {\n var startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n this._lastRenderedStartIndex = startIndex;\n this._lastRenderedStopIndex = stopIndex;\n\n this._doStuff(startIndex, stopIndex);\n }\n }, {\n key: \"_doStuff\",\n value: function _doStuff(startIndex, stopIndex) {\n var _ref2,\n _this3 = this;\n\n var _this$props = this.props,\n isRowLoaded = _this$props.isRowLoaded,\n minimumBatchSize = _this$props.minimumBatchSize,\n rowCount = _this$props.rowCount,\n threshold = _this$props.threshold;\n var unloadedRanges = scanForUnloadedRanges({\n isRowLoaded: isRowLoaded,\n minimumBatchSize: minimumBatchSize,\n rowCount: rowCount,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n }); // For memoize comparison\n\n var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n var startIndex = _ref3.startIndex,\n stopIndex = _ref3.stopIndex;\n return [startIndex, stopIndex];\n })));\n\n this._loadMoreRowsMemoizer({\n callback: function callback() {\n _this3._loadUnloadedRanges(unloadedRanges);\n },\n indices: {\n squashedUnloadedRanges: squashedUnloadedRanges\n }\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(registeredChild) {\n this._registeredChild = registeredChild;\n }\n }]);\n\n return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n minimumBatchSize: 10,\n rowCount: 0,\n threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized component.\n * This function should implement the following signature:\n * ({ onRowsRendered, registerChild }) => PropTypes.element\n *\n * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n * The :registerChild callback should be set as the virtualized component's :ref.\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Function responsible for tracking the loaded state of each row.\n * It should implement the following signature: ({ index: number }): boolean\n */\n isRowLoaded: PropTypes.func.isRequired,\n\n /**\n * Callback to be invoked when more rows must be loaded.\n * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n * The returned Promise should be resolved once row data has finished loading.\n * It will be used to determine when to refresh the list with the newly-loaded data.\n * This callback may be called multiple times in reaction to a single scroll event.\n */\n loadMoreRows: PropTypes.func.isRequired,\n\n /**\n * Minimum number of rows to be loaded at a time.\n * This property can be used to batch requests to reduce HTTP requests.\n */\n minimumBatchSize: PropTypes.number.isRequired,\n\n /**\n * Number of rows in list; can be arbitrary high number if actual number is unknown.\n */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Threshold at which to pre-fetch data.\n * A threshold X means that data will start loading when a user scrolls within X rows.\n * This value defaults to 15.\n */\n threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n startIndex = _ref4.startIndex,\n stopIndex = _ref4.stopIndex;\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n var isRowLoaded = _ref5.isRowLoaded,\n minimumBatchSize = _ref5.minimumBatchSize,\n rowCount = _ref5.rowCount,\n startIndex = _ref5.startIndex,\n stopIndex = _ref5.stopIndex;\n var unloadedRanges = [];\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var index = startIndex; index <= stopIndex; index++) {\n var loaded = isRowLoaded({\n index: index\n });\n\n if (!loaded) {\n rangeStopIndex = index;\n\n if (rangeStartIndex === null) {\n rangeStartIndex = index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n rangeStartIndex = rangeStopIndex = null;\n }\n } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n\n\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n if (!isRowLoaded({\n index: _index\n })) {\n rangeStopIndex = _index;\n } else {\n break;\n }\n }\n\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n } // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n if (unloadedRanges.length) {\n var firstUnloadedRange = unloadedRanges[0];\n\n while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n var _index2 = firstUnloadedRange.startIndex - 1;\n\n if (!isRowLoaded({\n index: _index2\n })) {\n firstUnloadedRange.startIndex = _index2;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n if (recomputeSize) {\n recomputeSize.call(component, currentIndex);\n } else {\n component.forceUpdate();\n }\n}","import InfiniteLoader from './InfiniteLoader';\nexport default InfiniteLoader;\nexport { InfiniteLoader };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(List, _React$PureComponent);\n\n function List() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, List);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n var parent = _ref.parent,\n rowIndex = _ref.rowIndex,\n style = _ref.style,\n isScrolling = _ref.isScrolling,\n isVisible = _ref.isVisible,\n key = _ref.key;\n var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n // This prevents new style objects from bypassing shallowCompare().\n // However as of React 16, style props are auto-frozen (at least in dev mode)\n // Check to make sure we can still modify the style before proceeding.\n // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n if (widthDescriptor && widthDescriptor.writable) {\n // By default, List cells should be 100% width.\n // This prevents them from flowing under a scrollbar (if present).\n style.width = '100%';\n }\n\n return rowRenderer({\n index: rowIndex,\n style: style,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n _this.Grid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n var clientHeight = _ref2.clientHeight,\n scrollHeight = _ref2.scrollHeight,\n scrollTop = _ref2.scrollTop;\n var onScroll = _this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n rowStartIndex = _ref3.rowStartIndex,\n rowStopIndex = _ref3.rowStopIndex;\n var onRowsRendered = _this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n });\n\n return _this;\n }\n\n _createClass(List, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref4) {\n var alignment = _ref4.alignment,\n index = _ref4.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index,\n columnIndex: 0\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$columnIndex = _ref6.columnIndex,\n columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n _ref6$rowIndex = _ref6.rowIndex,\n rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index,\n columnIndex: 0\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n noRowsRenderer = _this$props.noRowsRenderer,\n scrollToIndex = _this$props.scrollToIndex,\n width = _this$props.width;\n var classNames = clsx('ReactVirtualized__List', className);\n return React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n cellRenderer: this._cellRenderer,\n className: classNames,\n columnWidth: width,\n columnCount: 1,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n scrollToRow: scrollToIndex\n }));\n }\n }]);\n\n return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /** Optional CSS class name */\n \"className\": PropTypes.string,\n\n /**\n * Used to estimate the total height of a List before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Height constraint for list (determines how many actual rows are rendered) */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional renderer to be used in place of rows when rowCount is 0 */\n \"noRowsRenderer\": function noRowsRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /** Callback invoked with information about the slice of rows that were just rendered. */\n \"onRowsRendered\": PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** Either a fixed row height (number) or a function that returns the height of a row given its index. */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a row given an index; ({ index: number }): node */\n \"rowRenderer\": function rowRenderer() {\n return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in list. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** See Grid#scrollToAlignment */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToIndex\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of list */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n autoHeight: false,\n estimatedRowSize: 30,\n onScroll: function onScroll() {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {},\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x >= y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _GTA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x > y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LTA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x < y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LEA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x <= y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _EQA(a, l, h, y) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x === y) {\n return m;\n } else if (x <= y) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c(x, y);\n\n if (p === 0) {\n return m;\n } else if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nexport default {\n ge: dispatchBsearchGE,\n gt: dispatchBsearchGT,\n lt: dispatchBsearchLT,\n le: dispatchBsearchLE,\n eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n this.mid = mid;\n this.left = left;\n this.right = right;\n this.leftPoints = leftPoints;\n this.rightPoints = rightPoints;\n this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n a.mid = b.mid;\n a.left = b.left;\n a.right = b.right;\n a.leftPoints = b.leftPoints;\n a.rightPoints = b.rightPoints;\n a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n var ntree = createIntervalTree(intervals);\n node.mid = ntree.mid;\n node.left = ntree.left;\n node.right = ntree.right;\n node.leftPoints = ntree.leftPoints;\n node.rightPoints = ntree.rightPoints;\n node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n var intervals = node.intervals([]);\n intervals.push(interval);\n rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n var intervals = node.intervals([]);\n var idx = intervals.indexOf(interval);\n\n if (idx < 0) {\n return NOT_FOUND;\n }\n\n intervals.splice(idx, 1);\n rebuild(node, intervals);\n return SUCCESS;\n}\n\nproto.intervals = function (result) {\n result.push.apply(result, this.leftPoints);\n\n if (this.left) {\n this.left.intervals(result);\n }\n\n if (this.right) {\n this.right.intervals(result);\n }\n\n return result;\n};\n\nproto.insert = function (interval) {\n var weight = this.count - this.leftPoints.length;\n this.count += 1;\n\n if (interval[1] < this.mid) {\n if (this.left) {\n if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.left.insert(interval);\n }\n } else {\n this.left = createIntervalTree([interval]);\n }\n } else if (interval[0] > this.mid) {\n if (this.right) {\n if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.right.insert(interval);\n }\n } else {\n this.right = createIntervalTree([interval]);\n }\n } else {\n var l = bounds.ge(this.leftPoints, interval, compareBegin);\n var r = bounds.ge(this.rightPoints, interval, compareEnd);\n this.leftPoints.splice(l, 0, interval);\n this.rightPoints.splice(r, 0, interval);\n }\n};\n\nproto.remove = function (interval) {\n var weight = this.count - this.leftPoints;\n\n if (interval[1] < this.mid) {\n if (!this.left) {\n return NOT_FOUND;\n }\n\n var rw = this.right ? this.right.count : 0;\n\n if (4 * rw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.left.remove(interval);\n\n if (r === EMPTY) {\n this.left = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else if (interval[0] > this.mid) {\n if (!this.right) {\n return NOT_FOUND;\n }\n\n var lw = this.left ? this.left.count : 0;\n\n if (4 * lw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.right.remove(interval);\n\n if (r === EMPTY) {\n this.right = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else {\n if (this.count === 1) {\n if (this.leftPoints[0] === interval) {\n return EMPTY;\n } else {\n return NOT_FOUND;\n }\n }\n\n if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n if (this.left && this.right) {\n var p = this;\n var n = this.left;\n\n while (n.right) {\n p = n;\n n = n.right;\n }\n\n if (p === this) {\n n.right = this.right;\n } else {\n var l = this.left;\n var r = this.right;\n p.count -= n.count;\n p.right = n.left;\n n.left = l;\n n.right = r;\n }\n\n copy(this, n);\n this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n } else if (this.left) {\n copy(this, this.left);\n } else {\n copy(this, this.right);\n }\n\n return SUCCESS;\n }\n\n for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n if (this.leftPoints[l][0] !== interval[0]) {\n break;\n }\n\n if (this.leftPoints[l] === interval) {\n this.count -= 1;\n this.leftPoints.splice(l, 1);\n\n for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n if (this.rightPoints[r][1] !== interval[1]) {\n break;\n } else if (this.rightPoints[r] === interval) {\n this.rightPoints.splice(r, 1);\n return SUCCESS;\n }\n }\n }\n }\n\n return NOT_FOUND;\n }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRange(arr, cb) {\n for (var i = 0; i < arr.length; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nproto.queryPoint = function (x, cb) {\n if (x < this.mid) {\n if (this.left) {\n var r = this.left.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportLeftRange(this.leftPoints, x, cb);\n } else if (x > this.mid) {\n if (this.right) {\n var r = this.right.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportRightRange(this.rightPoints, x, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n if (lo < this.mid && this.left) {\n var r = this.left.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi > this.mid && this.right) {\n var r = this.right.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi < this.mid) {\n return reportLeftRange(this.leftPoints, hi, cb);\n } else if (lo > this.mid) {\n return reportRightRange(this.rightPoints, lo, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction compareBegin(a, b) {\n var d = a[0] - b[0];\n\n if (d) {\n return d;\n }\n\n return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n var d = a[1] - b[1];\n\n if (d) {\n return d;\n }\n\n return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n if (intervals.length === 0) {\n return null;\n }\n\n var pts = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n pts.push(intervals[i][0], intervals[i][1]);\n }\n\n pts.sort(compareNumbers);\n var mid = pts[pts.length >> 1];\n var leftIntervals = [];\n var rightIntervals = [];\n var centerIntervals = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n var s = intervals[i];\n\n if (s[1] < mid) {\n leftIntervals.push(s);\n } else if (mid < s[0]) {\n rightIntervals.push(s);\n } else {\n centerIntervals.push(s);\n }\n } //Split center intervals\n\n\n var leftPoints = centerIntervals;\n var rightPoints = centerIntervals.slice();\n leftPoints.sort(compareBegin);\n rightPoints.sort(compareEnd);\n return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n if (this.root) {\n this.root.insert(interval);\n } else {\n this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n }\n};\n\ntproto.remove = function (interval) {\n if (this.root) {\n var r = this.root.remove(interval);\n\n if (r === EMPTY) {\n this.root = null;\n }\n\n return r !== NOT_FOUND;\n }\n\n return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n if (this.root) {\n return this.root.queryPoint(p, cb);\n }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n if (lo <= hi && this.root) {\n return this.root.queryInterval(lo, hi, cb);\n }\n};\n\nObject.defineProperty(tproto, 'count', {\n get: function get() {\n if (this.root) {\n return this.root.count;\n }\n\n return 0;\n }\n});\nObject.defineProperty(tproto, 'intervals', {\n get: function get() {\n if (this.root) {\n return this.root.intervals([]);\n }\n\n return [];\n }\n});\nexport default function createWrapper(intervals) {\n if (!intervals || intervals.length === 0) {\n return new IntervalTree(null);\n }\n\n return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n// O(log(n)) lookup of cells to render for a given viewport size\n// O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache =\n/*#__PURE__*/\nfunction () {\n function PositionCache() {\n _classCallCheck(this, PositionCache);\n\n _defineProperty(this, \"_columnSizeMap\", {});\n\n _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n _defineProperty(this, \"_leftMap\", {});\n }\n\n _createClass(PositionCache, [{\n key: \"estimateTotalHeight\",\n value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n var unmeasuredCellCount = cellCount - this.count;\n return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n } // Render all cells visible within the viewport range defined.\n\n }, {\n key: \"range\",\n value: function range(scrollTop, clientHeight, renderCallback) {\n var _this = this;\n\n this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n top = _ref2[0],\n _ = _ref2[1],\n index = _ref2[2];\n\n return renderCallback(index, _this._leftMap[index], top);\n });\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(index, left, top, height) {\n this._intervalTree.insert([top, top + height, index]);\n\n this._leftMap[index] = left;\n var columnSizeMap = this._columnSizeMap;\n var columnHeight = columnSizeMap[left];\n\n if (columnHeight === undefined) {\n columnSizeMap[left] = top + height;\n } else {\n columnSizeMap[left] = Math.max(columnHeight, top + height);\n }\n }\n }, {\n key: \"count\",\n get: function get() {\n return this._intervalTree.count;\n }\n }, {\n key: \"shortestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = size === 0 ? height : Math.min(size, height);\n }\n\n return size;\n }\n }, {\n key: \"tallestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = Math.max(size, height);\n }\n\n return size;\n }\n }]);\n\n return PositionCache;\n}();\n\nexport { PositionCache as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n * At this time the positioner has access to cached size measurements for all cells.\n * The positions it returns are cached by Masonry for fast access later.\n * Phase one is repeated if the user scrolls beyond the current layout's bounds.\n * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n * Simple animations are supported (eg translate/slide into place on initial reveal).\n * More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n * This component supports multi-column layout.\n * The height of each item may vary.\n * The width of each item must not exceed the width of the column it is \"in\".\n * The left position of all items within a column must align.\n * (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Masonry, _React$PureComponent);\n\n function Masonry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Masonry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n var height = _this.props.height;\n var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n if (eventScrollTop !== scrollTop) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n\n if (_this.state.scrollTop !== scrollTop) {\n _this.setState({\n isScrolling: true,\n scrollTop: scrollTop\n });\n }\n });\n\n return _this;\n }\n\n _createClass(Masonry, [{\n key: \"clearCellPositions\",\n value: function clearCellPositions() {\n this._positionCache = new PositionCache();\n this.forceUpdate();\n } // HACK This method signature was intended for Grid\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref) {\n var index = _ref.rowIndex;\n\n if (this._invalidateOnUpdateStartIndex === null) {\n this._invalidateOnUpdateStartIndex = index;\n this._invalidateOnUpdateStopIndex = index;\n } else {\n this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n }\n }\n }, {\n key: \"recomputeCellPositions\",\n value: function recomputeCellPositions() {\n var stopIndex = this._positionCache.count - 1;\n this._positionCache = new PositionCache();\n\n this._populatePositionCache(0, stopIndex);\n\n this.forceUpdate();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n\n if (this.props.scrollTop !== prevProps.scrollTop) {\n this._debounceResetIsScrolling();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n cellCount = _this$props.cellCount,\n cellMeasurerCache = _this$props.cellMeasurerCache,\n cellRenderer = _this$props.cellRenderer,\n className = _this$props.className,\n height = _this$props.height,\n id = _this$props.id,\n keyMapper = _this$props.keyMapper,\n overscanByPixels = _this$props.overscanByPixels,\n role = _this$props.role,\n style = _this$props.style,\n tabIndex = _this$props.tabIndex,\n width = _this$props.width,\n rowDirection = _this$props.rowDirection;\n var _this$state = this.state,\n isScrolling = _this$state.isScrolling,\n scrollTop = _this$state.scrollTop;\n var children = [];\n\n var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n var shortestColumnSize = this._positionCache.shortestColumnSize;\n var measuredCellCount = this._positionCache.count;\n var startIndex = 0;\n var stopIndex;\n\n this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n var _style;\n\n if (typeof stopIndex === 'undefined') {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n\n children.push(cellRenderer({\n index: index,\n isScrolling: isScrolling,\n key: keyMapper(index),\n parent: _this2,\n style: (_style = {\n height: cellMeasurerCache.getHeight(index)\n }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n }));\n }); // We need to measure additional cells for this layout\n\n\n if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n stopIndex = _index;\n children.push(cellRenderer({\n index: _index,\n isScrolling: isScrolling,\n key: keyMapper(_index),\n parent: this,\n style: {\n width: cellMeasurerCache.getWidth(_index)\n }\n }));\n }\n }\n\n this._startIndex = startIndex;\n this._stopIndex = stopIndex;\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Masonry', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n overflowX: 'hidden',\n overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n position: 'relative',\n width: width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n }, style),\n tabIndex: tabIndex\n }, React.createElement(\"div\", {\n className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n style: {\n width: '100%',\n height: estimateTotalHeight,\n maxWidth: '100%',\n maxHeight: estimateTotalHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }\n }, children));\n }\n }, {\n key: \"_checkInvalidateOnUpdate\",\n value: function _checkInvalidateOnUpdate() {\n if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n var startIndex = this._invalidateOnUpdateStartIndex;\n var stopIndex = this._invalidateOnUpdateStopIndex;\n this._invalidateOnUpdateStartIndex = null;\n this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n this._populatePositionCache(startIndex, stopIndex);\n\n this.forceUpdate();\n }\n }\n }, {\n key: \"_debounceResetIsScrolling\",\n value: function _debounceResetIsScrolling() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n\n this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_getEstimatedTotalHeight\",\n value: function _getEstimatedTotalHeight() {\n var _this$props2 = this.props,\n cellCount = _this$props2.cellCount,\n cellMeasurerCache = _this$props2.cellMeasurerCache,\n width = _this$props2.width;\n var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n }\n }, {\n key: \"_invokeOnScrollCallback\",\n value: function _invokeOnScrollCallback() {\n var _this$props3 = this.props,\n height = _this$props3.height,\n onScroll = _this$props3.onScroll;\n var scrollTop = this.state.scrollTop;\n\n if (this._onScrollMemoized !== scrollTop) {\n onScroll({\n clientHeight: height,\n scrollHeight: this._getEstimatedTotalHeight(),\n scrollTop: scrollTop\n });\n this._onScrollMemoized = scrollTop;\n }\n }\n }, {\n key: \"_invokeOnCellsRenderedCallback\",\n value: function _invokeOnCellsRenderedCallback() {\n if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n var onCellsRendered = this.props.onCellsRendered;\n onCellsRendered({\n startIndex: this._startIndex,\n stopIndex: this._stopIndex\n });\n this._startIndexMemoized = this._startIndex;\n this._stopIndexMemoized = this._stopIndex;\n }\n }\n }, {\n key: \"_populatePositionCache\",\n value: function _populatePositionCache(startIndex, stopIndex) {\n var _this$props4 = this.props,\n cellMeasurerCache = _this$props4.cellMeasurerCache,\n cellPositioner = _this$props4.cellPositioner;\n\n for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n var _cellPositioner = cellPositioner(_index2),\n left = _cellPositioner.left,\n top = _cellPositioner.top;\n\n this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n return {\n isScrolling: true,\n scrollTop: nextProps.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"autoHeight\": PropTypes.bool.isRequired,\n \"cellCount\": PropTypes.number.isRequired,\n \"cellMeasurerCache\": function cellMeasurerCache() {\n return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellPositioner\": function cellPositioner() {\n return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellRenderer\": function cellRenderer() {\n return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"className\": PropTypes.string,\n \"height\": PropTypes.number.isRequired,\n \"id\": PropTypes.string,\n \"keyMapper\": function keyMapper() {\n return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"onCellsRendered\": function onCellsRendered() {\n return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n },\n \"onScroll\": function onScroll() {\n return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n },\n \"overscanByPixels\": PropTypes.number.isRequired,\n \"role\": PropTypes.string.isRequired,\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"tabIndex\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"rowDirection\": PropTypes.string.isRequired,\n \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n autoHeight: false,\n keyMapper: identity,\n onCellsRendered: noop,\n onScroll: noop,\n overscanByPixels: 20,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n style: emptyObject,\n tabIndex: 0,\n rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n \"defaultHeight\": PropTypes.number.isRequired,\n \"defaultWidth\": PropTypes.number.isRequired,\n \"getHeight\": PropTypes.func.isRequired,\n \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import createCellPositioner from './createCellPositioner';\nimport Masonry from './Masonry';\nexport default Masonry;\nexport { createCellPositioner, Masonry };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCacheDecorator() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCacheDecorator);\n\n _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n _this._cellMeasurerCache.columnWidth({\n index: index + _this._columnIndexOffset\n });\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n _this._cellMeasurerCache.rowHeight({\n index: index + _this._rowIndexOffset\n });\n });\n\n var cellMeasurerCache = params.cellMeasurerCache,\n _params$columnIndexOf = params.columnIndexOffset,\n columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n _params$rowIndexOffse = params.rowIndexOffset,\n rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n this._cellMeasurerCache = cellMeasurerCache;\n this._columnIndexOffset = columnIndexOffset;\n this._rowIndexOffset = rowIndexOffset;\n }\n\n _createClass(CellMeasurerCacheDecorator, [{\n key: \"clear\",\n value: function clear(rowIndex, columnIndex) {\n this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellMeasurerCache.clearAll();\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._cellMeasurerCache.hasFixedHeight();\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._cellMeasurerCache.hasFixedWidth();\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._cellMeasurerCache.defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._cellMeasurerCache.defaultWidth;\n }\n }]);\n\n return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(MultiGrid, _React$PureComponent);\n\n function MultiGrid(props, context) {\n var _this;\n\n _classCallCheck(this, MultiGrid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollLeft: 0,\n scrollTop: 0,\n scrollbarSize: 0,\n showHorizontalScrollbar: false,\n showVerticalScrollbar: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n _this._bottomLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n _this._bottomRightGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n var rowIndex = _ref.rowIndex,\n rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n var _this$props = _this.props,\n cellRenderer = _this$props.cellRenderer,\n fixedRowCount = _this$props.fixedRowCount,\n rowCount = _this$props.rowCount;\n\n if (rowIndex === rowCount - fixedRowCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n height: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex,\n rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n var _this$props2 = _this.props,\n cellRenderer = _this$props2.cellRenderer,\n fixedColumnCount = _this$props2.fixedColumnCount,\n fixedRowCount = _this$props2.fixedRowCount;\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n var columnIndex = _ref3.columnIndex,\n rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n var _this$props3 = _this.props,\n cellRenderer = _this$props3.cellRenderer,\n columnCount = _this$props3.columnCount,\n fixedColumnCount = _this$props3.fixedColumnCount;\n\n if (columnIndex === columnCount - fixedColumnCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n width: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this)\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n var index = _ref4.index;\n var _this$props4 = _this.props,\n columnCount = _this$props4.columnCount,\n fixedColumnCount = _this$props4.fixedColumnCount,\n columnWidth = _this$props4.columnWidth;\n var _this$state = _this.state,\n scrollbarSize = _this$state.scrollbarSize,\n showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n return scrollbarSize;\n }\n\n return typeof columnWidth === 'function' ? columnWidth({\n index: index + fixedColumnCount\n }) : columnWidth;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft,\n scrollTop = scrollInfo.scrollTop;\n\n _this.setState({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n var onScroll = _this.props.onScroll;\n\n if (onScroll) {\n onScroll(scrollInfo);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n var horizontal = _ref5.horizontal,\n size = _ref5.size,\n vertical = _ref5.vertical;\n var _this$state2 = _this.state,\n showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n _this.setState({\n scrollbarSize: size,\n showHorizontalScrollbar: horizontal,\n showVerticalScrollbar: vertical\n });\n\n var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n if (typeof onScrollbarPresenceChange === 'function') {\n onScrollbarPresenceChange({\n horizontal: horizontal,\n size: size,\n vertical: vertical\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft;\n\n _this._onScroll({\n scrollLeft: scrollLeft,\n scrollTop: _this.state.scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n var scrollTop = scrollInfo.scrollTop;\n\n _this._onScroll({\n scrollTop: scrollTop,\n scrollLeft: _this.state.scrollLeft\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n var index = _ref6.index;\n var _this$props5 = _this.props,\n fixedRowCount = _this$props5.fixedRowCount,\n rowCount = _this$props5.rowCount,\n rowHeight = _this$props5.rowHeight;\n var _this$state3 = _this.state,\n scrollbarSize = _this$state3.scrollbarSize,\n showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n return scrollbarSize;\n }\n\n return typeof rowHeight === 'function' ? rowHeight({\n index: index + fixedRowCount\n }) : rowHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n _this._topLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n _this._topRightGrid = ref;\n });\n\n var deferredMeasurementCache = props.deferredMeasurementCache,\n _fixedColumnCount = props.fixedColumnCount,\n _fixedRowCount = props.fixedRowCount;\n\n _this._maybeCalculateCachedStyles(true);\n\n if (deferredMeasurementCache) {\n _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: 0,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: 0\n }) : deferredMeasurementCache;\n }\n\n return _this;\n }\n\n _createClass(MultiGrid, [{\n key: \"forceUpdateGrids\",\n value: function forceUpdateGrids() {\n this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n this._topLeftGrid && this._topLeftGrid.forceUpdate();\n this._topRightGrid && this._topRightGrid.forceUpdate();\n }\n /** See Grid#invalidateCellSizeAfterRender */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$columnIndex = _ref7.columnIndex,\n columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n _ref7$rowIndex = _ref7.rowIndex,\n rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n this._topLeftGrid && this._topLeftGrid.measureAllCells();\n this._topRightGrid && this._topRightGrid.measureAllCells();\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref8$columnIndex = _ref8.columnIndex,\n columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n _ref8$rowIndex = _ref8.rowIndex,\n rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n var _this$props6 = this.props,\n fixedColumnCount = _this$props6.fixedColumnCount,\n fixedRowCount = _this$props6.fixedRowCount;\n var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: adjustedRowIndex\n });\n this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: adjustedRowIndex\n });\n this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this._topRightGrid && this._topRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: rowIndex\n });\n this._leftGridWidth = null;\n this._topGridHeight = null;\n\n this._maybeCalculateCachedStyles(true);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n scrollLeft = _this$props7.scrollLeft,\n scrollTop = _this$props7.scrollTop;\n\n if (scrollLeft > 0 || scrollTop > 0) {\n var newState = {};\n\n if (scrollLeft > 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop > 0) {\n newState.scrollTop = scrollTop;\n }\n\n this.setState(newState);\n }\n\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n onScroll = _this$props8.onScroll,\n onSectionRendered = _this$props8.onSectionRendered,\n onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n scrollLeftProp = _this$props8.scrollLeft,\n scrollToColumn = _this$props8.scrollToColumn,\n scrollTopProp = _this$props8.scrollTop,\n scrollToRow = _this$props8.scrollToRow,\n rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n // This mirrors what Grid does,\n // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n if (this.props.width === 0 || this.props.height === 0) {\n return null;\n } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n var _this$state4 = this.state,\n scrollLeft = _this$state4.scrollLeft,\n scrollTop = _this$state4.scrollTop;\n return React.createElement(\"div\", {\n style: this._containerOuterStyle\n }, React.createElement(\"div\", {\n style: this._containerTopStyle\n }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollLeft: scrollLeft\n }))), React.createElement(\"div\", {\n style: this._containerBottomStyle\n }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollTop: scrollTop\n })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n onSectionRendered: onSectionRendered,\n scrollLeft: scrollLeft,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow,\n scrollTop: scrollTop\n }))));\n }\n }, {\n key: \"_getBottomGridHeight\",\n value: function _getBottomGridHeight(props) {\n var height = props.height;\n\n var topGridHeight = this._getTopGridHeight(props);\n\n return height - topGridHeight;\n }\n }, {\n key: \"_getLeftGridWidth\",\n value: function _getLeftGridWidth(props) {\n var fixedColumnCount = props.fixedColumnCount,\n columnWidth = props.columnWidth;\n\n if (this._leftGridWidth == null) {\n if (typeof columnWidth === 'function') {\n var leftGridWidth = 0;\n\n for (var index = 0; index < fixedColumnCount; index++) {\n leftGridWidth += columnWidth({\n index: index\n });\n }\n\n this._leftGridWidth = leftGridWidth;\n } else {\n this._leftGridWidth = columnWidth * fixedColumnCount;\n }\n }\n\n return this._leftGridWidth;\n }\n }, {\n key: \"_getRightGridWidth\",\n value: function _getRightGridWidth(props) {\n var width = props.width;\n\n var leftGridWidth = this._getLeftGridWidth(props);\n\n return width - leftGridWidth;\n }\n }, {\n key: \"_getTopGridHeight\",\n value: function _getTopGridHeight(props) {\n var fixedRowCount = props.fixedRowCount,\n rowHeight = props.rowHeight;\n\n if (this._topGridHeight == null) {\n if (typeof rowHeight === 'function') {\n var topGridHeight = 0;\n\n for (var index = 0; index < fixedRowCount; index++) {\n topGridHeight += rowHeight({\n index: index\n });\n }\n\n this._topGridHeight = topGridHeight;\n } else {\n this._topGridHeight = rowHeight * fixedRowCount;\n }\n }\n\n return this._topGridHeight;\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this.forceUpdate();\n }\n }\n /**\n * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n * This method recalculates styles only when specific props change.\n */\n\n }, {\n key: \"_maybeCalculateCachedStyles\",\n value: function _maybeCalculateCachedStyles(resetAll) {\n var _this$props9 = this.props,\n columnWidth = _this$props9.columnWidth,\n enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n height = _this$props9.height,\n fixedColumnCount = _this$props9.fixedColumnCount,\n fixedRowCount = _this$props9.fixedRowCount,\n rowHeight = _this$props9.rowHeight,\n style = _this$props9.style,\n styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n styleTopRightGrid = _this$props9.styleTopRightGrid,\n width = _this$props9.width;\n var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n this._containerOuterStyle = _objectSpread({\n height: height,\n overflow: 'visible',\n // Let :focus outline show through\n width: width\n }, style);\n }\n\n if (resetAll || sizeChange || topSizeChange) {\n this._containerTopStyle = {\n height: this._getTopGridHeight(this.props),\n position: 'relative',\n width: width\n };\n this._containerBottomStyle = {\n height: height - this._getTopGridHeight(this.props),\n overflow: 'visible',\n // Let :focus outline show through\n position: 'relative',\n width: width\n };\n }\n\n if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n this._bottomLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n position: 'absolute'\n }, styleBottomLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n this._bottomRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n position: 'absolute'\n }, styleBottomRightGrid);\n }\n\n if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n this._topLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n this._topRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopRightGrid);\n }\n\n this._lastRenderedColumnWidth = columnWidth;\n this._lastRenderedFixedColumnCount = fixedColumnCount;\n this._lastRenderedFixedRowCount = fixedRowCount;\n this._lastRenderedHeight = height;\n this._lastRenderedRowHeight = rowHeight;\n this._lastRenderedStyle = style;\n this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n this._lastRenderedWidth = width;\n }\n }, {\n key: \"_prepareForRender\",\n value: function _prepareForRender() {\n if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n this._leftGridWidth = null;\n }\n\n if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n this._topGridHeight = null;\n }\n\n this._maybeCalculateCachedStyles();\n\n this._lastRenderedColumnWidth = this.props.columnWidth;\n this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n this._lastRenderedRowHeight = this.props.rowHeight;\n }\n }, {\n key: \"_renderBottomLeftGrid\",\n value: function _renderBottomLeftGrid(props) {\n var enableFixedColumnScroll = props.enableFixedColumnScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n if (!fixedColumnCount) {\n return null;\n }\n\n var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n height = this._getBottomGridHeight(props),\n width = this._getLeftGridWidth(props),\n scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomLeftGrid,\n className: this.props.classNameBottomLeftGrid,\n columnCount: fixedColumnCount,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n height: height,\n onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n ref: this._bottomLeftGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n rowHeight: this._rowHeightBottomGrid,\n style: this._bottomLeftGridStyle,\n tabIndex: null,\n width: gridWidth\n }));\n\n if (hideBottomLeftGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"BottomLeftGrid_ScrollWrapper\",\n style: _objectSpread({}, this._bottomLeftGridStyle, {\n height: height,\n width: width,\n overflowY: 'hidden'\n })\n }, bottomLeftGrid);\n }\n\n return bottomLeftGrid;\n }\n }, {\n key: \"_renderBottomRightGrid\",\n value: function _renderBottomRightGrid(props) {\n var columnCount = props.columnCount,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n scrollToColumn = props.scrollToColumn,\n scrollToRow = props.scrollToRow;\n return React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomRightGrid,\n className: this.props.classNameBottomRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount),\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n height: this._getBottomGridHeight(props),\n onScroll: this._onScroll,\n onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n ref: this._bottomRightGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount),\n rowHeight: this._rowHeightBottomGrid,\n scrollToColumn: scrollToColumn - fixedColumnCount,\n scrollToRow: scrollToRow - fixedRowCount,\n style: this._bottomRightGridStyle,\n width: this._getRightGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopLeftGrid\",\n value: function _renderTopLeftGrid(props) {\n var fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n if (!fixedColumnCount || !fixedRowCount) {\n return null;\n }\n\n return React.createElement(Grid, _extends({}, props, {\n className: this.props.classNameTopLeftGrid,\n columnCount: fixedColumnCount,\n height: this._getTopGridHeight(props),\n ref: this._topLeftGridRef,\n rowCount: fixedRowCount,\n style: this._topLeftGridStyle,\n tabIndex: null,\n width: this._getLeftGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopRightGrid\",\n value: function _renderTopRightGrid(props) {\n var columnCount = props.columnCount,\n enableFixedRowScroll = props.enableFixedRowScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n scrollLeft = props.scrollLeft,\n hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n var _this$state5 = this.state,\n showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n scrollbarSize = _this$state5.scrollbarSize;\n\n if (!fixedRowCount) {\n return null;\n }\n\n var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n height = this._getTopGridHeight(props),\n width = this._getRightGridWidth(props),\n additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n var gridHeight = height,\n style = this._topRightGridStyle;\n\n if (hideTopRightGridScrollbar) {\n gridHeight = height + additionalHeight;\n style = _objectSpread({}, this._topRightGridStyle, {\n left: 0\n });\n }\n\n var topRightGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererTopRightGrid,\n className: this.props.classNameTopRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n height: gridHeight,\n onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n ref: this._topRightGridRef,\n rowCount: fixedRowCount,\n scrollLeft: scrollLeft,\n style: style,\n tabIndex: null,\n width: width\n }));\n\n if (hideTopRightGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"TopRightGrid_ScrollWrapper\",\n style: _objectSpread({}, this._topRightGridStyle, {\n height: height,\n width: width,\n overflowX: 'hidden'\n })\n }, topRightGrid);\n }\n\n return topRightGrid;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n classNameBottomLeftGrid: '',\n classNameBottomRightGrid: '',\n classNameTopLeftGrid: '',\n classNameTopRightGrid: '',\n enableFixedColumnScroll: false,\n enableFixedRowScroll: false,\n fixedColumnCount: 0,\n fixedRowCount: 0,\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n styleBottomLeftGrid: {},\n styleBottomRightGrid: {},\n styleTopLeftGrid: {},\n styleTopRightGrid: {},\n hideTopRightGridScrollbar: false,\n hideBottomLeftGridScrollbar: false\n});\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n classNameBottomLeftGrid: PropTypes.string.isRequired,\n classNameBottomRightGrid: PropTypes.string.isRequired,\n classNameTopLeftGrid: PropTypes.string.isRequired,\n classNameTopRightGrid: PropTypes.string.isRequired,\n enableFixedColumnScroll: PropTypes.bool.isRequired,\n enableFixedRowScroll: PropTypes.bool.isRequired,\n fixedColumnCount: PropTypes.number.isRequired,\n fixedRowCount: PropTypes.number.isRequired,\n onScrollbarPresenceChange: PropTypes.func,\n style: PropTypes.object.isRequired,\n styleBottomLeftGrid: PropTypes.object.isRequired,\n styleBottomRightGrid: PropTypes.object.isRequired,\n styleTopLeftGrid: PropTypes.object.isRequired,\n styleTopRightGrid: PropTypes.object.isRequired,\n hideTopRightGridScrollbar: PropTypes.bool,\n hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\npolyfill(MultiGrid);\nexport default MultiGrid;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ScrollSync, _React$PureComponent);\n\n function ScrollSync(props, context) {\n var _this;\n\n _classCallCheck(this, ScrollSync);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n _this.state = {\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0\n };\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ScrollSync, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state = this.state,\n clientHeight = _this$state.clientHeight,\n clientWidth = _this$state.clientWidth,\n scrollHeight = _this$state.scrollHeight,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop,\n scrollWidth = _this$state.scrollWidth;\n return children({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n onScroll: this._onScroll,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref) {\n var clientHeight = _ref.clientHeight,\n clientWidth = _ref.clientWidth,\n scrollHeight = _ref.scrollHeight,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n scrollWidth = _ref.scrollWidth;\n this.setState({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }]);\n\n return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering 2 or more virtualized components.\n * This function should implement the following signature:\n * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n */\n children: PropTypes.func.isRequired\n} : {};","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n style = _ref.style;\n return React.createElement(\"div\", {\n className: className,\n role: \"row\",\n style: style\n }, columns);\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","var SortDirection = {\n /**\n * Sort items in ascending order.\n * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n */\n ASC: 'ASC',\n\n /**\n * Sort items in descending order.\n * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n */\n DESC: 'DESC'\n};\nexport default SortDirection;","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n var sortDirection = _ref.sortDirection;\n var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n });\n return React.createElement(\"svg\", {\n className: classNames,\n width: 18,\n height: 18,\n viewBox: \"0 0 24 24\"\n }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n d: \"M7 14l5-5 5 5z\"\n }) : React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n }), React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n}\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n var dataKey = _ref.dataKey,\n label = _ref.label,\n sortBy = _ref.sortBy,\n sortDirection = _ref.sortDirection;\n var showSortIndicator = sortBy === dataKey;\n var children = [React.createElement(\"span\", {\n className: \"ReactVirtualized__Table__headerTruncatedText\",\n key: \"label\",\n title: typeof label === 'string' ? label : null\n }, label)];\n\n if (showSortIndicator) {\n children.push(React.createElement(SortIndicator, {\n key: \"SortIndicator\",\n sortDirection: sortDirection\n }));\n }\n\n return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n index = _ref.index,\n key = _ref.key,\n onRowClick = _ref.onRowClick,\n onRowDoubleClick = _ref.onRowDoubleClick,\n onRowMouseOut = _ref.onRowMouseOut,\n onRowMouseOver = _ref.onRowMouseOver,\n onRowRightClick = _ref.onRowRightClick,\n rowData = _ref.rowData,\n style = _ref.style;\n var a11yProps = {\n 'aria-rowindex': index + 1\n };\n\n if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n a11yProps['aria-label'] = 'row';\n a11yProps.tabIndex = 0;\n\n if (onRowClick) {\n a11yProps.onClick = function (event) {\n return onRowClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowDoubleClick) {\n a11yProps.onDoubleClick = function (event) {\n return onRowDoubleClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOut) {\n a11yProps.onMouseOut = function (event) {\n return onRowMouseOut({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOver) {\n a11yProps.onMouseOver = function (event) {\n return onRowMouseOver({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowRightClick) {\n a11yProps.onContextMenu = function (event) {\n return onRowRightClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n }\n\n return React.createElement(\"div\", _extends({}, a11yProps, {\n className: className,\n key: key,\n role: \"row\",\n style: style\n }), columns);\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Column, _React$Component);\n\n function Column() {\n _classCallCheck(this, Column);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n }\n\n return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n defaultSortDirection: SortDirection.ASC,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** Optional direction to be used when clicked the first time */\n defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional inline style to apply to this column's header */\n headerStyle: PropTypes.object,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Table, _React$PureComponent);\n\n function Table(props) {\n var _this;\n\n _classCallCheck(this, Table);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n _this.state = {\n scrollbarWidth: 0\n };\n _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Table, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref) {\n var alignment = _ref.alignment,\n index = _ref.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$columnIndex = _ref3.columnIndex,\n columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n _ref3$rowIndex = _ref3.rowIndex,\n rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"getScrollbarWidth\",\n value: function getScrollbarWidth() {\n if (this.Grid) {\n var _Grid = findDOMNode(this.Grid);\n\n var clientWidth = _Grid.clientWidth || 0;\n var offsetWidth = _Grid.offsetWidth || 0;\n return offsetWidth - clientWidth;\n }\n\n return 0;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n disableHeader = _this$props.disableHeader,\n gridClassName = _this$props.gridClassName,\n gridStyle = _this$props.gridStyle,\n headerHeight = _this$props.headerHeight,\n headerRowRenderer = _this$props.headerRowRenderer,\n height = _this$props.height,\n id = _this$props.id,\n noRowsRenderer = _this$props.noRowsRenderer,\n rowClassName = _this$props.rowClassName,\n rowStyle = _this$props.rowStyle,\n scrollToIndex = _this$props.scrollToIndex,\n style = _this$props.style,\n width = _this$props.width;\n var scrollbarWidth = this.state.scrollbarWidth;\n var availableRowsHeight = disableHeader ? height : height - headerHeight;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: -1\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: -1\n }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n this._cachedColumnStyles = [];\n React.Children.toArray(children).forEach(function (column, index) {\n var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n _this2._cachedColumnStyles[index] = _objectSpread({\n overflow: 'hidden'\n }, flexStyles);\n }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n return React.createElement(\"div\", {\n \"aria-label\": this.props['aria-label'],\n \"aria-labelledby\": this.props['aria-labelledby'],\n \"aria-colcount\": React.Children.toArray(children).length,\n \"aria-rowcount\": this.props.rowCount,\n className: clsx('ReactVirtualized__Table', className),\n id: id,\n role: \"grid\",\n style: style\n }, !disableHeader && headerRowRenderer({\n className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n columns: this._getHeaderColumns(),\n style: _objectSpread({\n height: headerHeight,\n overflow: 'hidden',\n paddingRight: scrollbarWidth,\n width: width\n }, rowStyleObject)\n }), React.createElement(Grid, _extends({}, this.props, {\n \"aria-readonly\": null,\n autoContainerWidth: true,\n className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n cellRenderer: this._createRow,\n columnWidth: width,\n columnCount: 1,\n height: availableRowsHeight,\n id: undefined,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n role: \"rowgroup\",\n scrollbarWidth: scrollbarWidth,\n scrollToRow: scrollToIndex,\n style: _objectSpread({}, gridStyle, {\n overflowX: 'hidden'\n })\n })));\n }\n }, {\n key: \"_createColumn\",\n value: function _createColumn(_ref4) {\n var column = _ref4.column,\n columnIndex = _ref4.columnIndex,\n isScrolling = _ref4.isScrolling,\n parent = _ref4.parent,\n rowData = _ref4.rowData,\n rowIndex = _ref4.rowIndex;\n var onColumnClick = this.props.onColumnClick;\n var _column$props = column.props,\n cellDataGetter = _column$props.cellDataGetter,\n cellRenderer = _column$props.cellRenderer,\n className = _column$props.className,\n columnData = _column$props.columnData,\n dataKey = _column$props.dataKey,\n id = _column$props.id;\n var cellData = cellDataGetter({\n columnData: columnData,\n dataKey: dataKey,\n rowData: rowData\n });\n var renderedCell = cellRenderer({\n cellData: cellData,\n columnData: columnData,\n columnIndex: columnIndex,\n dataKey: dataKey,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: rowIndex\n });\n\n var onClick = function onClick(event) {\n onColumnClick && onColumnClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var style = this._cachedColumnStyles[columnIndex];\n var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n return React.createElement(\"div\", {\n \"aria-colindex\": columnIndex + 1,\n \"aria-describedby\": id,\n className: clsx('ReactVirtualized__Table__rowColumn', className),\n key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n onClick: onClick,\n role: \"gridcell\",\n style: style,\n title: title\n }, renderedCell);\n }\n }, {\n key: \"_createHeader\",\n value: function _createHeader(_ref5) {\n var column = _ref5.column,\n index = _ref5.index;\n var _this$props2 = this.props,\n headerClassName = _this$props2.headerClassName,\n headerStyle = _this$props2.headerStyle,\n onHeaderClick = _this$props2.onHeaderClick,\n sort = _this$props2.sort,\n sortBy = _this$props2.sortBy,\n sortDirection = _this$props2.sortDirection;\n var _column$props2 = column.props,\n columnData = _column$props2.columnData,\n dataKey = _column$props2.dataKey,\n defaultSortDirection = _column$props2.defaultSortDirection,\n disableSort = _column$props2.disableSort,\n headerRenderer = _column$props2.headerRenderer,\n id = _column$props2.id,\n label = _column$props2.label;\n var sortEnabled = !disableSort && sort;\n var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n });\n\n var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n var renderedHeader = headerRenderer({\n columnData: columnData,\n dataKey: dataKey,\n disableSort: disableSort,\n label: label,\n sortBy: sortBy,\n sortDirection: sortDirection\n });\n var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n if (sortEnabled || onHeaderClick) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n // Otherwise, invert the direction of the sort.\n\n var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n var onClick = function onClick(event) {\n sortEnabled && sort({\n defaultSortDirection: defaultSortDirection,\n event: event,\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n onHeaderClick && onHeaderClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var onKeyDown = function onKeyDown(event) {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n headerAriaLabel = column.props['aria-label'] || label || dataKey;\n headerAriaSort = 'none';\n headerTabIndex = 0;\n headerOnClick = onClick;\n headerOnKeyDown = onKeyDown;\n }\n\n if (sortBy === dataKey) {\n headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n } // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n return React.createElement(\"div\", {\n \"aria-label\": headerAriaLabel,\n \"aria-sort\": headerAriaSort,\n className: classNames,\n id: id,\n key: 'Header-Col' + index,\n onClick: headerOnClick,\n onKeyDown: headerOnKeyDown,\n role: \"columnheader\",\n style: style,\n tabIndex: headerTabIndex\n }, renderedHeader);\n }\n }, {\n key: \"_createRow\",\n value: function _createRow(_ref6) {\n var _this3 = this;\n\n var index = _ref6.rowIndex,\n isScrolling = _ref6.isScrolling,\n key = _ref6.key,\n parent = _ref6.parent,\n style = _ref6.style;\n var _this$props3 = this.props,\n children = _this$props3.children,\n onRowClick = _this$props3.onRowClick,\n onRowDoubleClick = _this$props3.onRowDoubleClick,\n onRowRightClick = _this$props3.onRowRightClick,\n onRowMouseOver = _this$props3.onRowMouseOver,\n onRowMouseOut = _this$props3.onRowMouseOut,\n rowClassName = _this$props3.rowClassName,\n rowGetter = _this$props3.rowGetter,\n rowRenderer = _this$props3.rowRenderer,\n rowStyle = _this$props3.rowStyle;\n var scrollbarWidth = this.state.scrollbarWidth;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: index\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: index\n }) : rowStyle;\n var rowData = rowGetter({\n index: index\n });\n var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n return _this3._createColumn({\n column: column,\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: index,\n scrollbarWidth: scrollbarWidth\n });\n });\n var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n var flattenedStyle = _objectSpread({}, style, {\n height: this._getRowHeight(index),\n overflow: 'hidden',\n paddingRight: scrollbarWidth\n }, rowStyleObject);\n\n return rowRenderer({\n className: className,\n columns: columns,\n index: index,\n isScrolling: isScrolling,\n key: key,\n onRowClick: onRowClick,\n onRowDoubleClick: onRowDoubleClick,\n onRowRightClick: onRowRightClick,\n onRowMouseOver: onRowMouseOver,\n onRowMouseOut: onRowMouseOut,\n rowData: rowData,\n style: flattenedStyle\n });\n }\n /**\n * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n */\n\n }, {\n key: \"_getFlexStyleForColumn\",\n value: function _getFlexStyleForColumn(column) {\n var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n var style = _objectSpread({}, customStyle, {\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n });\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n }, {\n key: \"_getHeaderColumns\",\n value: function _getHeaderColumns() {\n var _this4 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n disableHeader = _this$props4.disableHeader;\n var items = disableHeader ? [] : React.Children.toArray(children);\n return items.map(function (column, index) {\n return _this4._createHeader({\n column: column,\n index: index\n });\n });\n }\n }, {\n key: \"_getRowHeight\",\n value: function _getRowHeight(rowIndex) {\n var rowHeight = this.props.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight({\n index: rowIndex\n }) : rowHeight;\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref7) {\n var clientHeight = _ref7.clientHeight,\n scrollHeight = _ref7.scrollHeight,\n scrollTop = _ref7.scrollTop;\n var onScroll = this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n }\n }, {\n key: \"_onSectionRendered\",\n value: function _onSectionRendered(_ref8) {\n var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n rowStartIndex = _ref8.rowStartIndex,\n rowStopIndex = _ref8.rowStopIndex;\n var onRowsRendered = this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }\n }, {\n key: \"_setRef\",\n value: function _setRef(ref) {\n this.Grid = ref;\n }\n }, {\n key: \"_setScrollbarWidth\",\n value: function _setScrollbarWidth() {\n var scrollbarWidth = this.getScrollbarWidth();\n this.setState({\n scrollbarWidth: scrollbarWidth\n });\n }\n }]);\n\n return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n disableHeader: false,\n estimatedRowSize: 30,\n headerHeight: 0,\n headerStyle: {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n rowRenderer: defaultRowRenderer,\n headerRowRenderer: defaultHeaderRowRenderer,\n rowStyle: {},\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { Table as default };\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** This is just set on the grid top element. */\n 'aria-label': PropTypes.string,\n\n /** This is just set on the grid top element. */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /** One or more Columns describing the data displayed in this row */\n children: function children(props) {\n var children = React.Children.toArray(props.children);\n\n for (var i = 0; i < children.length; i++) {\n var childType = children[i].type;\n\n if (childType !== Column && !(childType.prototype instanceof Column)) {\n return new Error('Table only accepts children of type Column');\n }\n }\n },\n\n /** Optional CSS class name */\n className: PropTypes.string,\n\n /** Disable rendering the header at all */\n disableHeader: PropTypes.bool,\n\n /**\n * Used to estimate the total height of a Table before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n /** Optional custom CSS class name to attach to inner Grid element. */\n gridClassName: PropTypes.string,\n\n /** Optional inline style to attach to inner Grid element. */\n gridStyle: PropTypes.object,\n\n /** Optional CSS class to apply to all column headers */\n headerClassName: PropTypes.string,\n\n /** Fixed height of header row */\n headerHeight: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: any[],\n * style: any\n * }): PropTypes.node\n */\n headerRowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table header columns. */\n headerStyle: PropTypes.object,\n\n /** Fixed/available height for out DOM element */\n height: PropTypes.number.isRequired,\n\n /** Optional id */\n id: PropTypes.string,\n\n /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n noRowsRenderer: PropTypes.func,\n\n /**\n * Optional callback when a column is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onColumnClick: PropTypes.func,\n\n /**\n * Optional callback when a column's header is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onHeaderClick: PropTypes.func,\n\n /**\n * Callback invoked when a user clicks on a table row.\n * ({ index: number }): void\n */\n onRowClick: PropTypes.func,\n\n /**\n * Callback invoked when a user double-clicks on a table row.\n * ({ index: number }): void\n */\n onRowDoubleClick: PropTypes.func,\n\n /**\n * Callback invoked when the mouse leaves a table row.\n * ({ index: number }): void\n */\n onRowMouseOut: PropTypes.func,\n\n /**\n * Callback invoked when a user moves the mouse over a table row.\n * ({ index: number }): void\n */\n onRowMouseOver: PropTypes.func,\n\n /**\n * Callback invoked when a user right-clicks on a table row.\n * ({ index: number }): void\n */\n onRowRightClick: PropTypes.func,\n\n /**\n * Callback invoked with information about the slice of rows that were just rendered.\n * ({ startIndex, stopIndex }): void\n */\n onRowsRendered: PropTypes.func,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, scrollHeight, scrollTop }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n overscanIndicesGetter: PropTypes.func.isRequired,\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n /**\n * Optional CSS class to apply to all table rows (including the header row).\n * This property can be a CSS class name (string) or a function that returns a class name.\n * If a function is provided its signature should be: ({ index: number }): string\n */\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n /**\n * Callback responsible for returning a data row given an index.\n * ({ index: number }): any\n */\n rowGetter: PropTypes.func.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * ({ index: number }): number\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n /** Number of rows in table. */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: Array,\n * index: number,\n * isScrolling: boolean,\n * onRowClick: ?Function,\n * onRowDoubleClick: ?Function,\n * onRowMouseOver: ?Function,\n * onRowMouseOut: ?Function,\n * rowData: any,\n * style: any\n * }): PropTypes.node\n */\n rowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table rows. */\n rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n /** See Grid#scrollToAlignment */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToIndex: PropTypes.number.isRequired,\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n /**\n * Sort function to be called if a sortable header is clicked.\n * Should implement the following interface: ({\n * defaultSortDirection: 'ASC' | 'DESC',\n * event: MouseEvent,\n * sortBy: string,\n * sortDirection: SortDirection\n * }): void\n */\n sort: PropTypes.func,\n\n /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n sortBy: PropTypes.string,\n\n /** Table data is currently sorted in this direction (if it is sorted at all) */\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** Optional inline style */\n style: PropTypes.object,\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n /** Width of list */\n width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n var dataKey = _ref.dataKey,\n rowData = _ref.rowData;\n\n if (typeof rowData.get === 'function') {\n return rowData.get(dataKey);\n } else {\n return rowData[dataKey];\n }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n var cellData = _ref.cellData;\n\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import createMultiSort from './createMultiSort';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport Column from './Column';\nimport SortDirection from './SortDirection';\nimport SortIndicator from './SortIndicator';\nimport Table from './Table';\nexport default Table;\nexport { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n if (disablePointerEventsTimeoutId) {\n disablePointerEventsTimeoutId = null;\n\n if (document.body && originalBodyPointerEvents != null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n }\n\n originalBodyPointerEvents = null;\n }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n enablePointerEventsIfDisabled();\n mountedInstances.forEach(function (instance) {\n return instance.__resetIsScrolling();\n });\n}\n\nfunction enablePointerEventsAfterDelay() {\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n }\n\n var maximumTimeout = 0;\n mountedInstances.forEach(function (instance) {\n maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n });\n disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n document.body.style.pointerEvents = 'none';\n }\n\n enablePointerEventsAfterDelay();\n mountedInstances.forEach(function (instance) {\n if (instance.props.scrollElement === event.currentTarget) {\n instance.__handleWindowScrollEvent();\n }\n });\n}\n\nexport function registerScrollListener(component, element) {\n if (!mountedInstances.some(function (instance) {\n return instance.props.scrollElement === element;\n })) {\n element.addEventListener('scroll', onScrollWindow);\n }\n\n mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n mountedInstances = mountedInstances.filter(function (instance) {\n return instance !== component;\n });\n\n if (!mountedInstances.length) {\n element.removeEventListener('scroll', onScrollWindow);\n\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n enablePointerEventsIfDisabled();\n }\n }\n}\nimport { bpfrpt_proptype_WindowScroller } from \"../WindowScroller.js\";","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n if (!scrollElement) {\n return {\n height: props.serverHeight,\n width: props.serverWidth\n };\n } else if (isWindow(scrollElement)) {\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n return {\n height: typeof innerHeight === 'number' ? innerHeight : 0,\n width: typeof innerWidth === 'number' ? innerWidth : 0\n };\n } else {\n return getBoundingBox(scrollElement);\n }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n if (isWindow(container) && document.documentElement) {\n var containerElement = document.documentElement;\n var elementRect = getBoundingBox(element);\n var containerRect = getBoundingBox(containerElement);\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left\n };\n } else {\n var scrollOffset = getScrollOffset(container);\n\n var _elementRect = getBoundingBox(element);\n\n var _containerRect = getBoundingBox(container);\n\n return {\n top: _elementRect.top + scrollOffset.top - _containerRect.top,\n left: _elementRect.left + scrollOffset.left - _containerRect.left\n };\n }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n if (isWindow(element) && document.documentElement) {\n return {\n top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n };\n } else {\n return {\n top: element.scrollTop,\n left: element.scrollLeft\n };\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(WindowScroller, _React$PureComponent);\n\n function WindowScroller() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WindowScroller);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('WindowScroller registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n var scrollTop = _ref.scrollTop;\n\n if (_this.state.scrollTop === scrollTop) {\n return;\n }\n\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n if (typeof scrollElement.scrollTo === 'function') {\n scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n } else {\n scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n if (element === window) {\n window.addEventListener('resize', _this._onResize, false);\n } else {\n _this._detectElementResize.addResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n if (element === window) {\n window.removeEventListener('resize', _this._onResize, false);\n } else if (element) {\n _this._detectElementResize.removeResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n if (!_this._isMounted) {\n return;\n }\n\n var onScroll = _this.props.onScroll;\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n var scrollOffset = getScrollOffset(scrollElement);\n var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n onScroll({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n return _this;\n }\n\n _createClass(WindowScroller, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n var onResize = this.props.onResize;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width;\n var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n if (thisNode instanceof Element && scrollElement) {\n var offset = getPositionOffset(thisNode, scrollElement);\n this._positionFromTop = offset.top;\n this._positionFromLeft = offset.left;\n }\n\n var dimensions = getDimensions(scrollElement, this.props);\n\n if (height !== dimensions.height || width !== dimensions.width) {\n this.setState({\n height: dimensions.height,\n width: dimensions.width\n });\n onResize({\n height: dimensions.height,\n width: dimensions.width\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var scrollElement = this.props.scrollElement;\n this._detectElementResize = createDetectElementResize();\n this.updatePosition(scrollElement);\n\n if (scrollElement) {\n registerScrollListener(this, scrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n\n this._isMounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var scrollElement = this.props.scrollElement;\n var prevScrollElement = prevProps.scrollElement;\n\n if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n this.updatePosition(scrollElement);\n unregisterScrollListener(this, prevScrollElement);\n registerScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(prevScrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var scrollElement = this.props.scrollElement;\n\n if (scrollElement) {\n unregisterScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(scrollElement);\n }\n\n this._isMounted = false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state2 = this.state,\n isScrolling = _this$state2.isScrolling,\n scrollTop = _this$state2.scrollTop,\n scrollLeft = _this$state2.scrollLeft,\n height = _this$state2.height,\n width = _this$state2.width;\n return children({\n onChildScroll: this._onChildScroll,\n registerChild: this._registerChild,\n height: height,\n isScrolling: isScrolling,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n }\n }]);\n\n return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /**\n * Function responsible for rendering children.\n * This function should implement the following signature:\n * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n */\n \"children\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-resize: ({ height, width }) */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** Element to attach scroll event listeners. Defaults to window. */\n \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n }]),\n\n /**\n * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Height used for server-side rendering */\n \"serverHeight\": PropTypes.number.isRequired,\n\n /** Width used for server-side rendering */\n \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n onResize: function onResize() {},\n onScroll: function onScroll() {},\n scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n scrollElement: getWindow(),\n serverHeight: 0,\n serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";","import WindowScroller, { IS_SCROLLING_TIMEOUT } from './WindowScroller';\nexport default WindowScroller;\nexport { WindowScroller, IS_SCROLLING_TIMEOUT };","import { SpainMunicipality } from 'apps/spain-summer-length/service';\nimport React from 'react';\nimport { List, ListRowProps, ListRowRenderer } from 'react-virtualized';\n\nimport './SearchInput.scss';\n\nexport interface SearchInputProps {\n searchTerm: string;\n results: any[];\n rowHeight?: number;\n rowWidth?: number;\n onTermChange(term: string): void;\n rowRender(rowProps: ListRowProps, element: any): JSX.Element;\n}\nexport const SearchInput = (props: SearchInputProps) => {\n const rowRender = React.useCallback(\n (rowProps: ListRowProps) => {\n const data = props.results[rowProps.index];\n return props.rowRender(rowProps, data);\n },\n [props.results, props.rowRender]\n );\n\n return (\n
\n
\n props.onTermChange(target.value)}\n placeholder='Search...'\n />\n {props.results.length !== 0 && (\n {`${props.results.length} results`}\n )}\n props.onTermChange('')}>\n Clear\n \n
\n
\n \n
\n
\n );\n};\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 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","/** 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","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","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\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","/**\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","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 * 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","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","/**\n * 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 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","/**\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 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 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 overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var 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","/**\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 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","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 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 nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var 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","/**\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 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 * 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 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 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 WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\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 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 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 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 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","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a