Source code

Revision control

Copy as Markdown

Other Tools

{"version":3,"sources":["../node_modules/prop-types/index.js","../node_modules/react/index.js","../../../../src/lib/utils/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/histogram.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../../../src/lib/GenericChartComponent.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/duration.js","../../../src/lib/GenericComponent.js","../../../../src/lib/calculator/defaultOptionsForComputation.js","../../../../src/lib/indicator/baseIndicator.js","../../../../src/lib/calculator/index.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/nest.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-collection/src/keys.js","../node_modules/d3-collection/src/values.js","../node_modules/d3-collection/src/entries.js","../node_modules/react-stockcharts/node_modules/d3-format/src/index.js","../node_modules/react-stockcharts/node_modules/d3-time-format/src/defaultLocale.js","../node_modules/react-stockcharts/node_modules/d3-format/src/exponent.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/selection/attr.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/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/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","../../../../src/lib/axes/index.js","../../../../src/lib/tooltip/ToolTipText.js","../../../../src/lib/tooltip/ToolTipTSpanLabel.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatDecimal.js","../../../../src/lib/series/index.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/week.js","../../../../src/lib/tooltip/displayValuesFor.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/point.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/array.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/ordinal.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/band.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/constant.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/number.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/continuous.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/linear.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/tickFormat.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/identity.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/nice.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/log.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/pow.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/quantile.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/quantize.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/millisecond.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/time.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/utcTime.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/colors.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/category10.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/category20b.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/category20c.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/category20.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/cubehelix.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/rainbow.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/viridis.js","../node_modules/react-stockcharts/node_modules/d3-scale/src/sequential.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/selection/on.js","../../../../../src/lib/utils/noop.js","../../../../../src/lib/utils/identity.js","../../../../../src/lib/utils/zipper.js","../../../../../src/lib/utils/shallowEqual.js","../../../../../src/lib/utils/mappedSlidingWindow.js","../../../../../src/lib/utils/PureComponent.js","../../../../../src/lib/utils/strokeDasharray.js","../../../../../src/lib/utils/index.js","../../../../src/lib/Chart.js","../../../../../src/lib/utils/ChartDataUtil.js","../../../../src/lib/EventCapture.js","../../../../src/lib/CanvasContainer.js","../../../../../src/lib/scale/evaluator.js","../../../../src/lib/ChartCanvas.js","../../../../../src/lib/utils/zoomBehavior.js","../../../../src/lib/GenericComponent.js","../../../../src/lib/GenericChartComponent.js","../../../../src/lib/BackgroundText.js","../../../../src/lib/ZoomButtons.js","../../../../src/lib/series/LineSeries.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/sourceEvent.js","../../../../src/lib/indicator/index.js","../../../../src/lib/utils/identity.js","../../../../src/lib/utils/noop.js","../../../../src/lib/series/StraightLine.js","../../../../src/lib/calculator/ema.js","../node_modules/d3-interpolate/src/number.js","../../../../src/lib/tooltip/index.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcYear.js","../node_modules/react-stockcharts/node_modules/d3-format/src/defaultLocale.js","../../../../src/lib/series/StackedBarSeries.js","../../../../src/lib/coordinates/EdgeCoordinateV3.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.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/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/link/index.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/react-stockcharts/node_modules/d3-time-format/src/isoFormat.js","../node_modules/react-stockcharts/node_modules/d3-time-format/src/isoParse.js","../node_modules/react-stockcharts/node_modules/d3-time-format/src/locale.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatRounded.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatTypes.js","../node_modules/react-stockcharts/node_modules/d3-format/src/identity.js","../node_modules/react-stockcharts/node_modules/d3-format/src/locale.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatGroup.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatNumerals.js","../node_modules/react-stockcharts/node_modules/d3-format/src/formatTrim.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/lib/helper/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../src/lib/series/AreaOnlySeries.js","../../../../src/lib/calculator/atr.js","../../../../src/lib/indicator/defaultOptionsForAppearance.js","../node_modules/react-dom/index.js","../../../../src/lib/coordinates/index.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/formatDefault.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/object-assign/index.js","../node_modules/webpack/buildin/global.js","../node_modules/react-stockcharts/node_modules/d3-format/src/precisionPrefix.js","../node_modules/react-stockcharts/node_modules/d3-format/src/precisionRound.js","../node_modules/react-stockcharts/node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/touches.js","../../../../src/lib/series/AreaSeries.js","../../../../src/lib/utils/zipper.js","../../../../src/lib/utils/shallowEqual.js","../../../../src/lib/series/SVGComponent.js","../../../../src/lib/series/BarSeries.js","../../../../src/lib/axes/Axis.js","../../../../src/lib/scale/financeDiscontinuousScale.js","../../../../src/lib/scale/levels.js","../../../../src/lib/calculator/sma.js","../../../../src/lib/calculator/forceIndex.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-selection/src/touch.js","../node_modules/lodash.flattendeep/index.js","../../../../src/lib/scale/index.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/day.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/fbjs/lib/invariant.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../src/lib/utils/rebind.js","../../../../src/lib/utils/merge.js","../../../../src/lib/utils/slidingWindow.js","../../../../src/lib/utils/mappedSlidingWindow.js","../../../../src/lib/utils/accumulatingWindow.js","../../../../src/lib/utils/PureComponent.js","../../../../src/lib/utils/barWidth.js","../../../../src/lib/utils/strokeDasharray.js","../../../../src/lib/series/AlternatingFillAreaSeries.js","../../../../src/lib/series/ScatterSeries.js","../../../../src/lib/series/CircleMarker.js","../../../../src/lib/series/TriangleMarker.js","../../../../src/lib/series/SquareMarker.js","../../../../src/lib/series/CandlestickSeries.js","../../../../src/lib/series/OHLCSeries.js","../../../../src/lib/series/GroupedBarSeries.js","../../../../src/lib/series/KagiSeries.js","../../../../src/lib/series/PointAndFigureSeries.js","../../../../src/lib/series/RenkoSeries.js","../../../../src/lib/series/MACDSeries.js","../../../../src/lib/series/BollingerSeries.js","../../../../src/lib/series/RSISeries.js","../../../../src/lib/series/StochasticSeries.js","../../../../src/lib/series/ElderRaySeries.js","../../../../src/lib/series/OverlayBarSeries.js","../../../../src/lib/series/VolumeProfileSeries.js","../../../../src/lib/series/SARSeries.js","../../../../src/lib/axes/XAxis.js","../../../../src/lib/axes/AxisZoomCapture.js","../../../../src/lib/axes/YAxis.js","../../../../src/lib/coordinates/EdgeIndicator.js","../../../../src/lib/coordinates/CurrentCoordinate.js","../../../../src/lib/coordinates/MouseCoordinateX.js","../../../../src/lib/coordinates/MouseCoordinateXV2.js","../../../../src/lib/coordinates/MouseCoordinateY.js","../../../../src/lib/coordinates/CrossHairCursor.js","../../../../src/lib/coordinates/PriceCoordinate.js","../../../../src/lib/tooltip/MACDTooltip.js","../../../../src/lib/tooltip/OHLCTooltip.js","../../../../src/lib/tooltip/SingleValueTooltip.js","../../../../src/lib/tooltip/MovingAverageTooltip.js","../../../../src/lib/tooltip/BollingerBandTooltip.js","../../../../src/lib/tooltip/RSITooltip.js","../../../../src/lib/tooltip/StochasticTooltip.js","../../../../src/lib/tooltip/HoverTooltip.js","../../../../src/lib/tooltip/GroupTooltip.js","../../../../src/lib/scale/discontinuousTimeScaleProvider.js","../../../../src/lib/indicator/ema.js","../../../../src/lib/calculator/wma.js","../../../../src/lib/calculator/tma.js","../../../../src/lib/calculator/bollingerband.js","../../../../src/lib/calculator/heikinAshi.js","../../../../src/lib/calculator/kagi.js","../../../../src/lib/calculator/pointAndFigure.js","../../../../src/lib/calculator/renko.js","../../../../src/lib/calculator/macd.js","../../../../src/lib/calculator/rsi.js","../../../../src/lib/calculator/sto.js","../../../../src/lib/calculator/smoothedForceIndex.js","../../../../src/lib/calculator/elderRay.js","../../../../src/lib/calculator/sar.js","../../../../src/lib/calculator/compare.js","../../../../src/lib/calculator/change.js","../../../../src/lib/indicator/sma.js","../../../../src/lib/indicator/wma.js","../../../../src/lib/indicator/tma.js","../../../../src/lib/indicator/bollingerBand.js","../../../../src/lib/indicator/heikinAshi.js","../../../../src/lib/indicator/kagi.js","../../../../src/lib/indicator/pointAndFigure.js","../../../../src/lib/indicator/renko.js","../../../../src/lib/indicator/macd.js","../../../../src/lib/indicator/rsi.js","../../../../src/lib/indicator/atr.js","../../../../src/lib/indicator/stochasticOscillator.js","../../../../src/lib/indicator/forceIndex.js","../../../../src/lib/indicator/sar.js","../../../../src/lib/indicator/elderRay.js","../../../../src/lib/indicator/change.js","../../../../src/lib/indicator/elderImpulse.js","../../../../src/lib/indicator/compare.js","../../../../src/lib/helper/TypeChooser.js","../../../../src/lib/helper/SaveChartAsImage.js","../node_modules/save-svg-as-png/lib/saveSvgAsPng.js","../../../../src/lib/helper/fitWidth.js","../../../../src/lib/helper/fitDimensions.js","../node_modules/d3-force/src/center.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.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-force/src/collide.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/link.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-path/src/path.js"],"names":["module","exports","require","default","Object","enumerable","get","getLogger","prefix","process","logger","sign","x","path","loc","key","Array","isArray","length","obj","defaultValue","isDefined","index","functor","v","createVerticalLinearGradient","stops","moreProps","ctx","height","chartConfig","grd","createLinearGradient","forEach","each","addColorStop","stop","color","getClosestItemIndexes2","array","value","accessor","left","bisector","Math","max","right","min","item","degrees","radians","PI","getClosestValue","inputValue","currentValue","diff","map","reduce","diff1","diff2","abs","find","list","predicate","context","this","i","call","d3Window","node","ownerDocument","defaultView","document","getTouchProps","touch","pageX","pageY","clientX","clientY","getClosestItemIndexes","getClosestItem","log","closest","console","head","tail","slice","undefined","last","isNotDefined","d","isObject","touchPosition","e","container","target","rect","getBoundingClientRect","clientLeft","y","top","clientTop","round","mousePosition","defaultRect","currentTarget","clearCanvas","canvasList","ratio","setTransform","clearRect","canvas","width","scale","capitalizeFirst","str","charAt","toUpperCase","substring","hexToRGBA","inputHex","opacity","hex","replace","indexOf","multiplier","r","parseInt","g","b","result","toObject","iteratee","returnObj","a","_iteratee2","mapValue","object","keys","mappedValue","mapObject","props","replaceAtIndex","concat","forOwn","yes","MOUSEENTER","MOUSELEAVE","MOUSEMOVE","MOUSEUP","TOUCHMOVE","TOUCHEND","lo","hi","mid","valueOf","overlayColors","scaleOrdinal","first","NaN","compare","f","ascending","ascendingBisect","bisectRight","bisectLeft","pair","n","p","pairs","values0","values1","i0","i1","value0","n0","n1","values","valueof","delta","m","mean","sum","isNaN","number","variance","sqrt","prototype","start","step","arguments","ceil","range","e10","e5","e2","count","reverse","ticks","tickIncrement","isFinite","floor","power","LN10","error","pow","tickStep","step0","step1","LN2","identity","domain","extent","threshold","sturges","histogram","data","xz","x0","x1","tz","shift","pop","bin","bins","bisect","push","_","constant","thresholds","sort","quantile","deviation","numbers","arrays","merged","j","indexes","permutes","xi","xj","t","random","matrix","transpose","row","ALWAYS_TRUE_TYPES","GenericChartComponent","_classCallCheck","_this","preCanvasDraw","bind","postCanvasDraw","shouldTypeProceed","preEvaluate","_get","save","margin","canvasOriginX","origin","canvasOriginY","clip","edgeClip","beginPath","translate","restore","chartConfigList","chartId","id","ox","oy","mouseXY","startPos","type","disablePan","currentCharts","propTypes","_GenericComponent3","defaultProps","contextTypes","_propTypes2","oneOfType","string","isRequired","t0","Date","t1","newInterval","floori","offseti","field","interval","date","d0","d1","offset","previous","filter","test","setTime","end","every","durationSecond","durationMinute","durationHour","durationDay","durationWeek","getAxisCanvas","contexts","axes","getMouseCanvas","mouseCoord","aliases","mouseleave","panend","pinchzoom","mousedown","click","contextmenu","dblclick","dragstart","dragend","dragcancel","GenericComponent","drawOnCanvas","getMoreProps","listener","draw","updateMoreProps","evaluateType","isHover","getPanConditions","generateSubscriptionId","suscriberId","state","updateCount","_this2","evaluationInProgress","newType","drawOn","hovering","onUnHover","onContextMenu","onContextMenuWhenHover","onMouseDown","onClickWhenHover","onClickOutside","onClick","prevHover","amIOnTop","setCursorClass","selected","onHover","iSetTheCursorClass","interactiveCursorClass","onMouseMove","onDoubleClick","onDoubleClickWhenHover","onPan","onPanEnd","draggable","dragInProgress","onDragStart","someDragInProgress","onDrag","onDragComplete","enableDragOnHover","panEnabled","force","trigger","proceed","chartCanvasType","canvasDraw","setState","subscribe","componentWillReceiveProps","unsubscribe","componentDidUpdate","prevProps","nextProps","nextContext","xScale","plotData","getMutableState","debug","morePropsDecorator","xAccessor","displayXAccessor","fullData","canvasToDraw","getCanvasContexts","svgDraw","suffix","style","_react2","func","bool","BollingerBand","windowSize","sourcePath","movingAverageType","ATR","ForceIndex","volumePath","SmoothedForceIndex","smoothingType","smoothingWindow","Change","Compare","basePath","mainKeys","compareKeys","ElderRay","ElderImpulse","SAR","accelerationFactor","maxAccelerationFactor","MACD","fast","slow","signal","FullStochasticOscillator","kWindowSize","dWindowSize","RSI","EMA","SMA","WMA","TMA","Kagi","reversalType","reversal","Renko","fixedBrickSize","PointAndFigure","boxSize","stroke","fill","echo","baseIndicator","Map","set","o","constructor","has","remove","property","clear","entries","size","empty","sortValues","rollup","nest","sortKeys","apply","depth","createResult","setResult","keyValue","valuesByKey","sortKey","k","createObject","setObject","createMap","setMap","order","Set","proto","add","locale","timeFormat","timeParse","utcFormat","utcParse","defaultLocale","definition","formatLocale","format","parse","dateTime","time","periods","days","shortDays","months","shortMonths","formatDecimalParts","update","EnterNode","parent","datum","namespaceURI","_next","_parent","__data__","appendChild","child","insertBefore","next","querySelector","selector","querySelectorAll","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","attrRemove","name","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","propertyRemove","propertyConstant","propertyFunction","classArray","trim","split","classList","ClassList","_node","_names","getAttribute","classedAdd","names","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","params","window","event","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","selection","documentElement","select","subgroups","subnode","subgroup","selectAll","selectorAll","match","matcher","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","append","merge","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","callback","nodes","attr","namespace","getAttributeNS","selection_style","classed","text","html","create","creator","insert","before","deep","on","selection_on","dispatch","ToolTipText","fontFamily","fontSize","className","children","ToolTipTSpanLabel","toExponential","coefficient","toLocaleString","toString","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","weekday","setDate","getDate","getDay","setHours","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","currentItem","creatorInherit","uri","xhtml","createElement","createElementNS","creatorFixed","svg","ownerSVGElement","createSVGPoint","point","matrixTransform","getScreenCTM","inverse","implicit","ordinal","unknown","copy","band","bandwidth","ordinalRange","paddingInner","paddingOuter","align","rescale","sequence","rangeRound","padding","pointish","factory","extend","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","l","toLowerCase","exec","rgbn","Rgb","rgba","hsla","hasOwnProperty","rgbConvert","rgb_formatHex","rgb_formatRgb","h","s","Hsl","hslConvert","hsl2rgb","m2","basis","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","formatHsl","linear","gamma","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","colors","c","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","reA","reB","source","am","bm","bs","bi","lastIndex","q","one","zero","numberArray","unit","deinterpolateLinear","bimap","deinterpolate","reinterpolate","r0","r1","polymap","interpolate","clamp","continuous","piecewise","output","input","interpolateValue","deinterpolateClamp","invert","reinterpolateClamp","interpolateRound","linearish","tickFormat","specifier","precision","formatSpecifier","precisionPrefix","formatPrefix","precisionRound","precisionFixed","nice","pow10","powp","base","E","exp","logp","log10","log2","reflect","logs","pows","u","z","Infinity","exponent","invertExtent","quantiles","quantize","month","setMonth","getMonth","getFullYear","hour","getMilliseconds","getSeconds","getMinutes","getHours","minute","second","getUTCSeconds","millisecond","durationMonth","durationYear","calendar","year","week","day","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcHour","setUTCMinutes","getUTCHours","utcMinute","setUTCSeconds","getUTCMinutes","utcYear","utcWeek","utcDay","utcSecond","utcMillisecond","UTC","deg2rad","rad2deg","A","B","C","D","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","atan2","cubehelix","hue","cubehelixGamma","colorCubehelix","cosh","cos","sinh","sin","cubehelixLong","interpolateCubehelixLong","warm","cool","rainbow","ts","ramp","magma","inferno","plasma","sequential","interpolator","xlink","xml","xmlns","filterEvents","mouseenter","filterContextListener","contextListener","related","relatedTarget","event1","event0","parseTypenames","typenames","onRemove","typename","__on","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","that","args","sourceEvent","zipper","combine","zip","d3_zipLength","zips","isDate","shallowEqual","val1","val2","numKeysA","numKeysB","getTime","PureComponent","nextState","React","Component","noop","schemeCategory10","Chart","yScale","_this3","transform","PropTypes","yExtents","yExtentsCalculator","propName","componentName","Error","flipYScale","shape","bottom","scaleLinear","yPan","yPanEnabled","childContextTypes","getDimensions","chartProps","availableHeight","isArraySize2AndNumber","yExtentsProp","getNewChartConfig","innerDimension","existingChartConfig","Children","yScaleProp","prevChartConfig","originalYExtentsProp","getCurrentCharts","eachConfig","config","getChartConfigWithUpdatedYScales","xDomain","dy","chartsToPan","yDomains","realYDomain","yValues","eachExtent","allYValues","flattenDeep","yDomainFromYExtents","yDomainDY","prevYDomain","_config$yPanEnabled","another","newYScale","rangeRoundPoints","setRange","getCurrentItem","idx","EventCapture","handleEnter","handleLeave","handleWheel","handleMouseMove","handleMouseDown","handlePanEnd","handlePan","handleTouchStart","handleTouchMove","handlePinchZoom","handlePinchZoomEnd","handleClick","handleRightClick","handleDrag","handleDragEnd","shouldPan","canPan","saveNode","mouseInside","mouseInteraction","panInProgress","focus","componentDidMount","win","d3Event","onMouseEnter","onMouseLeave","zoom","onZoom","yZoom","deltaY","deltaX","preventDefault","panStart","panStartXScale","lastNewPos","panHappened","dx","dxdy","panOrigin","queuePanEnd","panEndTimeout","clearTimeout","setTimeout","mouseMove","mouse","dragHappened","clicked","stopPropagation","dragStartPosition","getAllPanConditions","initialPanEnabled","pan","somethingSelected","button","touches","touchXY","touch1Pos","touch2Pos","pinchZoomStart","_touches2","zoomEnabled","onPinchZoom","initialPinch","onPinchZoomEnd","cursorOverrideClass","disableInteraction","useCrossHairStyleCursor","interactionProps","onWheel","onTouchStart","onTouchMove","ref","panSpeedMultiplier","CanvasContainer","setDrawCanvas","drawCanvas","getContext","zIndex","position","getNewEnd","fallbackEnd","initialXScale","lastItem","lastItemX","lastItemXValue","_initialXScale$range2","rangeStart","canShowTheseManyPeriods","arrayLength","maxThreshold","minThreshold","showMinThreshold","showMaxThreshold","showMax","getFilteredResponse","newLeftIndex","newRightIndex","useWholeData","pointsPerPxThreshold","minPointsPerPxThreshold","flipXScale","filterData","inputDomain","currentPlotData","currentDomain","fallbackStart","clampedDomain","filteredData","realInputDomain","chartWidth","newEnd","newXScale","newWidth","extentsWrapper","CANDIDATES_FOR_RESET","getXScaleDirection","calculateFullData","plotFull","evaluator","resetChart","calculateState","initialPlotData","postCalculator","dimensions","inputXAccesor","xExtentsProp","xExtents","direction","d3Extent","updatedXScale","setXRange","pinchCoordinates","pinch","topLeft","bottomRight","ChartCanvas","getDataInfo","handleMouseEnter","handleMouseLeave","handleZoom","handleDoubleClick","handleContextMenu","handleDragStart","panHelper","pinchZoomHelper","xAxisZoom","yAxisZoom","resetYDomain","calculateStateForDomain","redraw","subscriptions","saveEventCaptureNode","saveCanvasContainerNode","interactiveState","mutableState","lastSubscriptionId","eventCaptureNode","canvasContainerNode","canvases","bg","rest","dragableComponents","triggerEvent","newDomain","initialChartConfig","beforePlotData","updatedScale","finalPinch","initialPinchXScale","iTL","iBR","fTL","fBR","xDash","yDash","cancelDrag","waitingForPinchZoomAnimationFrame","requestAnimationFrame","clearBothCanvas","clearThreeCanvas","firstItem","onLoadMore","zoomDirection","zoomMultiplier","zoomAnchor","cx","show","hackyWayToStopPanBeyondBounds__plotData","hackyWayToStopPanBeyondBounds__domain","waitingForPanAnimationFrame","_this4","_this5","inputType","waitingForMouseMoveAnimationFrame","prevMouseXY","_this6","clearMouseCanvas","_this7","_this8","_this9","reset","thisProps","shouldResetChart","interaction","isInteractionEnabled","newState","_state$xScale$domain2","prevLastItem","calculatedState","lastItemWasVisible","_initialXScale$domain2","maintainPointsPerPixelOnResize","rangeEnd","_updatedXScale$range2","newRangeStart","newRangeEnd","newStart","response","_initialXScale$range$2","updateChart","changed","newChartConfig","defaultFocus","mouseMoveEvent","panEvent","zoomEvent","onSelect","cursorStyle","cursor","tooltipStyle","oneOf","seriesName","warn","arrayOf","yExtentsProvider","mouseCoordinates","at","ohlcv","open","high","low","close","volume","BackgroundText","strokeOpacity","textAnchor","getText","strokeStyle","font","fillStyle","textAlign","strokeText","fillText","ZoomButtons","handleZoomOut","handleZoomIn","_xScale$domain2","_xScale$range$map$map2","interpolateNumber","foo","setInterval","clearInterval","heightFromBase","rx","ry","strokeWidth","fillOpacity","textFill","textStrokeWidth","onReset","centerX","w","textY","resetX","zoomOut","d3Path","zoomOutX","moveTo","lineTo","closePath","zoomIn","zoomInX","textDy","LineSeries","renderSVG","highlightOnHover","yAccessor","hoverTolerance","radius","cy","y1","x2","desiredY","hoverStrokeWidth","defined","strokeDasharray","interpolation","canvasClip","connectNulls","lineWidth","setLineDash","getStrokeDasharray","dataSeries","curve","hoverProps","re","FormatSpecifier","symbol","comma","none","namespaces","current","defaultOptionsForComputation","defaultOptionsForAppearance","StraightLine","yValue","xValue","getLineCoordinates","y2","lineCoordinates","options","calculator","alpha","initialAccumulator","skip","initialValue","nextValue","undefinedLength","setFullYear","setUTCFullYear","decimal","thousands","grouping","currency","minus","identityStack","drawOnCanvasHelper","svgHelper","getBarsSVG2","drawOnCanvas2","getBars","StackedBarSeries","stack","stackFn","defaultPostAction","postRotateAction","rotateXY","bars","doStuff","convertToArray","swapScales","baseAt","widthRatio","outer","fillRect","strokeRect","after","_props$spaceBetweenBa","spaceBetweenBar","getClassName","getFill","getBase","widthFunctor","barWidth","eachBarWidth","ds","appearance","eachYAccessor","newData","groupOffset","groupWidth","bar","edge","helper","line","coordinateBase","coordinate","rectWidth","rectHeight","arrowWidth","orient","edgeXRect","edgeYRect","strokeLinejoin","edgeXText","edgeYText","displayCoordinate","textBaseline","measureText","dashArray","rectRadius","halfHeight","quadraticCurveTo","roundRect","edgeAt","hideLine","lineStrokeDasharray","lineStroke","lineOpacity","epsilon","pi","halfPi","tau","acos","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","y0","x3","y3","x10","y10","x32","y32","cornerTangents","rc","cw","x01","y01","x11","y11","x00","y00","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","arc","buffer","a0","a1","da","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","pointX","pointY","curveLinear","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","descending","pie","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","angle","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","link","argv","curveHorizontal","bezierCurveTo","curveVertical","pointRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","tan30","tan30_2","kr","kx","ky","sqrt3","symbols","circle","cross","diamond","square","star","triangle","wye","_x0","_x1","_y0","_y1","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","beta","_basis","_beta","_x","_y","custom","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","_t0","px","py","Step","_t","stepBefore","stepAfter","series","stackValue","orderNone","offsetNone","oz","kz","sz","sij","ki","si","yp","yn","s2","sij0","s3","sk","peaks","peak","vi","vj","sums","tops","bottoms","isoSpecifier","formatIso","toISOString","parseIso","localDate","H","M","S","L","utcDate","newDate","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","newFormat","pad","charCodeAt","pads","newParse","Z","Q","V","timeMonday","W","U","X","numberRe","percentRe","requoteRe","requote","timeSunday","dISO","timeThursday","getUTCMilliseconds","dow","UTCdISO","matches","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","prefixExponent","toFixed","formatDecimal","toPrecision","formatRounded","prefixes","Number","currencyPrefix","currencySuffix","numerals","formatNumerals","String","percent","nan","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","defineProperty","_createClass","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_typeof","Symbol","iterator","_possibleConstructorReturn","self","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Super","NewTarget","newYear","_setPrototypeOf","_inherits","subClass","superClass","AreaOnlySeries","canvasGradient","newBase","areaSeries","newClassName","trueRangeAlgorithm","slidingWindow","undefinedValue","accumulator","prev","prevATR","skipInitial","tr","atr","atrAlgorithm","themes","light","middle","up","down","neutral","divergence","macd","dLine","kLine","dark","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","val","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","from","to","Function","changedTouches","points","AreaSeries","hoverHighlight","SVGComponent","BarSeries","_StackedBarSeries2","Axis","showDomain","showTicks","getScale","outerTickSize","xAxis","drawAxisLine","tickStroke","tickStrokeOpacity","tickLabelFill","fontWeight","showTickLabel","tick","tickStrokeWidth","tickStrokeDasharray","drawEachTick","canvas_dy","labelX","labelY","drawEachTickLabel","drawTicks","tickHelper","Tick","axisTicksSVG","domainClassName","axisLineSVG","axisZoomCallback","zoomCursorClassName","inverted","getMouseDelta","zoomCapture","innerTickSize","tickPadding","flexTicks","tickArguments","tickValuesProp","tickValues","tickIntervalFunction","_scale$domain2","baseTickValues","baseFormat","tickSpacing","fy","origX","simulation","forceSimulation","forceX","strength","forceCollide","shapeRendering","tickSize","financeDiscontinuousScale","futureProvider","backingLinearScale","backingTicks","ticksMap","_backingLinearScale$d2","domainStart","domainEnd","desiredTickCount","MAX_LEVEL","ticksAtLevel","temp","level","unsortedTicks","ticksSet","distance","_levels","defaultFormatters","yearFormat","quarterFormat","monthFormat","weekFormat","dayFormat","hourFormat","minuteFormat","secondFormat","milliSecondFormat","levelDefinition","startOfYear","startOfQuarter","startOfMonth","startOfWeek","startOfDay","startOfHalfDay","startOfQuarterDay","startOfEighthOfADay","startOfHour","startOf30Minutes","startOf15Minutes","startOf5Minutes","startOfMinute","startOf30Seconds","average","curr","forceIndexCalulator","nextId","Local","identifier","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","freeGlobal","global","freeSelf","arrayPush","objectProto","objectToString","spreadableSymbol","isConcatSpreadable","baseFlatten","isStrict","isFlattenable","isObjectLike","isLength","tag","isFunction","isArrayLike","isArrayLikeObject","isArguments","discontinuousTimeScaleProviderBuilder","defaultScaleProvider","EOL","EOF","objectConverter","columns","JSON","stringify","delimiter","reFormat","DELIMITER","parseRows","rows","N","I","eof","eol","token","formatRow","formatValue","convert","customConverter","columnSet","column","inferColumns","formatRows","csv","dsv","tsv","tsvParse","for","aa","ba","ca","framesToPop","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","F","G","isReactComponent","forceUpdate","isPureReactComponent","J","K","__self","__source","$$typeof","_owner","O","P","keyPrefix","R","T","done","escape","ea","fa","toArray","only","createRef","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","forwardRef","render","lazy","_ctor","_status","_result","memo","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","Fragment","StrictMode","Suspense","cloneElement","createFactory","isValidElement","version","unstable_ConcurrentMode","unstable_Profiler","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentOwner","Y","onError","ha","ia","ja","ka","ma","oa","extractEvents","eventTypes","ra","phasedRegistrationNames","sa","registrationName","ta","ua","dependencies","va","wa","xa","ya","la","za","Aa","Ba","Ca","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Da","injectEventPluginOrder","injectEventPluginsByName","Ea","stateNode","disabled","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","return","Oa","dispatchConfig","Pa","_targetInst","Qa","Ra","Sa","Ta","Ua","Va","animationend","animationiteration","animationstart","transitionend","Wa","Xa","Ya","animation","transition","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","kb","eventPool","lb","destructor","jb","getPooled","cancelBubble","persist","eventPhase","timeStamp","now","isTrusted","mb","ob","pb","qb","documentMode","rb","sb","tb","vb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","wb","xb","keyCode","yb","zb","Cb","which","Ab","ctrlKey","altKey","metaKey","char","Bb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","datetime","email","password","search","tel","url","Pb","nodeName","Qb","srcElement","correspondingUseElement","nodeType","Sb","Tb","Vb","_valueTracker","getOwnPropertyDescriptor","getValue","setValue","stopTracking","Ub","Wb","checked","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","mc","displayName","nc","_debugOwner","_debugSource","fileName","lineNumber","pc","qc","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","vc","wc","xc","tc","uc","sc","yc","zc","defaultChecked","_wrapperState","initialChecked","Ac","controlled","Bc","Cc","Dc","Ec","activeElement","tabIndex","Fc","change","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","detachEvent","Oc","Pc","attachEvent","Qc","Rc","Sc","Tc","_isInputEventSupported","Uc","view","Vc","Alt","Control","Meta","Shift","Wc","getModifierState","Xc","Yc","Zc","$c","ad","bd","screenX","screenY","shiftKey","buttons","fromElement","toElement","movementX","movementY","cd","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","dd","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ed","parentWindow","alternate","fd","gd","hd","kd","effectTag","ld","nd","sibling","md","od","animationName","elapsedTime","pseudoElement","pd","clipboardData","qd","rd","charCode","sd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","td","ud","location","repeat","vd","dataTransfer","wd","targetTouches","xd","yd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","zd","Ad","Bd","Cd","isInteractive","Dd","isInteractiveTopLevelEventType","Ed","Fd","Gd","targetInst","ancestors","containerInfo","topLevelType","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","body","Qd","Rd","Sd","Td","HTMLIFrameElement","contentDocument","Ud","contentEditable","Vd","Wd","Xd","Yd","Zd","$d","ae","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","be","de","ce","ee","defaultSelected","fe","dangerouslySetInnerHTML","ge","he","ie","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","je","ke","le","me","ne","MSApp","execUnsafeLocalFunction","oe","lastChild","nodeValue","pe","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDashoffset","strokeMiterlimit","qe","se","te","menuitem","br","col","embed","hr","img","keygen","meta","param","track","wbr","ue","ve","is","we","blur","xe","ye","ze","Ae","autoFocus","Be","__html","Ce","De","Ee","unstable_scheduleCallback","Fe","unstable_cancelCallback","He","Ie","Je","Ke","Le","Me","Oe","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Pe","Qe","Re","Se","getChildContext","Te","__reactInternalMemoizedMergedChildContext","Ue","Ve","We","Xe","Ze","elementType","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","mode","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","$e","bf","cf","df","ef","ff","gf","pendingChildren","implementation","hf","didError","earliestPendingTime","latestPendingTime","jf","kf","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","lf","nextExpirationTimeToWorkOn","nf","of","baseState","xf","_reactInternalFiber","pf","rf","qf","payload","sf","tf","uf","vf","wf","yf","shouldComponentUpdate","zf","contextType","Af","Bf","UNSAFE_componentWillReceiveProps","Cf","Df","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Ef","Ff","_stringRef","Gf","Hf","delete","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","tagName","Qf","Rf","Sf","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","queue","baseUpdate","ug","vg","wg","action","xg","eagerReducer","eagerState","yg","destroy","deps","zg","Bg","Cg","Dg","Eg","readContext","$f","Vf","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","UNSAFE_componentWillUpdate","componentWillUpdate","Yg","getDerivedStateFromError","Zg","pendingContext","$g","timedOutAt","fallback","ah","bh","then","mf","af","element","hydrate","hidden","observedBits","unstable_observedBits","ch","dh","eh","fh","gh","jh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","kh","lh","mh","nh","oh","ph","qh","rh","sh","wh","yh","zh","onclick","Ah","WeakSet","Bh","Ch","Dh","Eh","Gh","componentWillUnmount","Hh","Ih","Jh","_reactRootContainer","Kh","wasMultiple","multiple","Ge","display","Fh","Lh","Mh","WeakMap","Nh","Oh","Ph","componentDidCatch","Qh","componentStack","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","ci","di","ei","fi","gi","createTextNode","ii","pendingCommitExpirationTime","ji","maxDuration","pingCache","finishedWork","li","mi","ni","oi","qi","ri","ti","ui","wi","yi","zi","Ai","unstable_now","Bi","Ci","Di","Ei","Fi","Gi","timeout","timeoutHandle","Hi","Ii","Ji","nextScheduledRoot","Ki","Li","Mi","unstable_shouldYield","_onComplete","Oi","firstBatch","_expirationTime","_defer","rangeCount","ub","focusedElem","selectionRange","Ag","Ni","__reactInternalSnapshotBeforeUpdate","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","qa","Rb","dj","th","uh","ej","jd","vh","Ne","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","_root","_callbacks","_hasChildren","_didComplete","_children","Xi","_didCommit","_onCommit","Yi","_internalRoot","Zi","aj","legacy_renderSubtreeIntoContainer","hasAttribute","$i","bj","form","commit","unmount","createBatch","fj","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Ye","overrideProps","currentDispatcherRef","findHostInstanceByFiber","bundleType","rendererPackageName","gj","hj","priorityLevel","cancelAnimationFrame","performance","_schedMock","MessageChannel","port2","port1","onmessage","postMessage","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_IdlePriority","unstable_LowPriority","unstable_runWithPriority","unstable_next","unstable_wrapCallback","unstable_getCurrentPriorityLevel","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","emptyFunction","invariant","ReactPropTypesSecret","shim","propFullName","secret","getShim","ReactPropTypes","any","instanceOf","objectOf","exact","checkPropTypes","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","condition","argIndex","createReboundMethod","method","_didIteratorError","_iteratorError","_iterator","algorithm","skipUndefined","mergeCompute","indicator","misc","sourceFunction","windowData","accumulatorIdx","undef","mappedSlidingWindow","mapped","accumulateTill","discardTillStart","discardTillEnd","accumulatingWindow","accumulatedWindow","plotDataLengthBarWidth","_xScale$range2","totalWidth","dl","dr","timeIntervalBarWidth","getStrokeDasharrayCanvas","strokeDashTypes","AlternatingFillAreaSeries","renderClip","topClip","bottomClip","id1","clipPathId1","id2","clipPathId2","style1","style2","ScatterSeries","markerProps","fillGroup","fillKey","fillValues","strokeGroup","marker","Marker","markerProvider","mProps","Circle","drawOnCanvasWithNoStateChange","Triangle","rotation","getRotationInDegrees","fillColor","getFillColor","strokeColor","getStrokeColor","getTrianglePoints","innerOpposite","innerHypotenuse","directionVal","rotate","rotationDeg","Square","CandlestickSeries","candleStrokeWidth","candleData","getCandleData","wick","y4","strokeKey","strokeValues","inner","wickClassName","candleClassName","getWicksSVG","getCandlesSVG","wickStrokeProp","wickStroke","classNames","fillProp","strokeProp","trueOffset","candles","ohlc","OHLCSeries","barData","wickNest","openX1","openY","openX2","closeX1","closeY","closeX2","getOHLCBars","classNamesProp","strokeFunc","classNameFunc","absoluteChange","GroupedBarSeries","postProcessor","KagiSeries","currentValueStroke","paths","begin","prevX","plot","lastPlot","kagiLine","kagi","startAs","changeTo","changePoint","added","reverseAt","yang","yin","PointAndFigureSeries","getColumns","offsetX","offsetY","boxes","box","columnWidth","boxHeight","ellipse","anyBox","xOffset","RenkoSeries","renko","getRenko","candleWidth","fullyFormed","partial","MACDSeries","yAccessorForMACD","yAccessorForSignal","yAccessorForDivergence","yAccessorForDivergenceBase","divergenceStroke","zeroLineStroke","zeroLineOpacity","_BarSeries2","BollingerSeries","yAccessorForTop","yAccessorForMiddle","yAccessorForBottom","yAccessorForScalledBottom","areaClassName","RSISeries","topAndBottomClip","mainClip","overSold","overBought","insideThreshold","outsideThreshold","StochasticSeries","yAccessorForD","yAccessorForK","refLineOpacity","ElderRaySeries","fillForEachBar","yAccessorTop","yAccessorBullTop","yAccessorBearTop","yAccessorBullBottom","yAccessorBearBottom","yAccessorForBarBase","bullPower","bearPower","yAccessorNumber","bullPowerFill","bearPowerFill","straightLineStroke","straightLineOpacity","OverlayBarSeries","innerBars","VolumeProfileSeries","rects","sessionBg","sessionBackGround","sessionBackGroundOpacity","showSessionBackground","w1","w2","stroke1","stroke2","fill1","fill2","sessionBgSvg","realXScale","sessionStart","bySession","partialStartOK","partialEndOK","maxProfileWidthPercent","sessionBuilder","allRects","session","finish","sessionWidth","histogram2","leaves","volumeInBins","arr","volumeValues","_ref4","totalVolumes","volumes","totalVolume","totalVolumeX","ws","_ref6$","SARSeries","currentY","centerY","falling","rising","XAxis","newXDomain","axisAt","xZoomHeight","axisLocation","getXScale","trueRange","trueDomain","startXY","AxisZoomCapture","handleDragStartMouse","handleDragStartTouch","startPosition","contextMenuClicked","startScale","center","tempRange","YAxis","newYDomain","yZoomWidth","getYScale","EdgeIndicator","itemType","edgeType","displayFormat","yAxisPad","edgeX","getEdge","CurrentCoordinate","MouseCoordinateX","customX","snapX","xPosition","drawCoordinate","fontStyle","textWidth","_props$text","halfWidth","MouseCoordinateXV2","getXCoordinateInfo","getYCoordinate","MouseCoordinateY","displayValue","CrossHairCursor","lines","originX","originY","line1","PriceCoordinate","_yScale$domain2","lowerYValue","upperYValue","price","MACDTooltip","labelFill","displayValuesFor","macdValue","originProp","_origin2","OHLCTooltip","xDisplayFormat","volumeFormat","ohlcFormat","percentFormat","displayTexts","displayDate","itemsToDisplay","SingleValueTooltip","valueFill","yDisplayFormat","xLabel","yLabel","xDisplayValue","yDisplayValue","SingleMAToolTip","forChart","MovingAverageTooltip","tooltipLabel","BollingerBandTooltip","tooltipValue","RSITooltip","rsi","StochasticTooltip","label","stochastic","HoverTooltip","pointer","bgFill","bgOpacity","backgroundShapeCanvas","tooltipCanvas","content","pointWidth","bgSize","backgroundShapeSVG","tooltipSVG","bgheight","bgwidth","bgShape","tooltipContent","fontFill","tspans","startY","findIndex","chartIndex","normalizeX","normalizeY","calculateTooltipSize","res","sizes","sumSizes","VALID_LAYOUTS","SingleTooltip","withShape","comp","layout","renderValueNextToLabel","renderValueBeneathToLabel","renderInline","GroupTooltip","xyPos","verticalSize","getPosition","xPos","yPos","singleTooltip","evaluateLevel","formatters","eachLevel","discontinuousIndexCalculatorLocalTime","initialIndex","prevDate","nowDate","realDateAccessor","inputDateAccessor","dateAccessor","calculate","indexAccessor","indexMutator","withIndex","currentFormatters","discontinuousTimeScaleProvider","inputIndex","mergedData","utc","offsetInMillis","setLocale","timeFormatDefaultLocale","indexCalculator","ALGORITHM_TYPE","ema","underlyingAlgorithm","mergedAlgorithm","rebind","weight","waverage","triaverage","meanAlgorithm","avg","stdDev","bollingerBandAlgorithm","dateMutator","reversalThreshold","atrCalculator","kagiData","prevPeak","prevTrough","priceMovement","nextLineOpen","nextChangePoint","nextChangeTo","dir","rawData","pricingMethod","columnData","createBox","upwardMovement","downwardMovement","toDate","noOfBoxes","prevBoxClose","fromDate","eachBox","updateColumns","brickSize","renkoData","prevBrickClose","prevBrickOpen","brick","prevCloseToHigh","prevCloseToLow","prevOpenToHigh","prevOpenToLow","noOfBricks","newBrick","fastEMA","slowEMA","signalEMA","macdArray","macdCalculator","signalArray","prevAvgGain","prevAvgLoss","avgGain","gain","avgLoss","loss","rsiAlgorithm","tuple","gainsAndLossesCalculator","kWindow","highestHigh","lowestLow","kSmoothed","dWindow","stoAlgorithm","kData","smoothed","algo","forceMA","risingSar","risingEp","fallingSar","fallingEp","calc","use","sar","firsts","subkey","percentChange","sma","wma","tma","bollingerband","bollingerBand","heikinAshi","pointAndFigure","_defaultOptionsForAppearance","sto","forceIndex","elderRay","macdSource","emaSource","prevMACDDivergence","currMACDDivergence","prevEMA","currEMA","elderImpulse","TypeChooser","handleTypeChange","onChange","SaveChartAsImage","doc","background","_saveSvgAsPng2","svgAsDataUri","getElementsByTagName","image","Image","onload","drawImage","toDataURL","src","saveWithWhiteBG","saveWithBG","saveWithDarkBG","saveChartAsImage","out$","xmlNs","svgNs","urlRegex","fontFormats","woff2","woff","otf","ttf","eot","sfnt","isElement","HTMLElement","SVGElement","requireDomNode","el","requireDomNodePromise","Promise","resolve","reject","getFontMimeTypeFromUrl","fontUrl","extension","getDimension","dim","viewBox","baseVal","parseFloat","uriToBlob","byteString","atob","mimeString","intArray","Uint8Array","Blob","inlineImages","all","href","lastIndexOf","host","crossOrigin","onerror","cachedFonts","inlineFonts","fonts","req","XMLHttpRequest","fontInBase64","binary","bytes","byteLength","btoa","arrayBufferToBase64","fontUri","responseType","send","fontCss","cachedRules","inlineCss","_ref","selectorRemap","modifyStyle","modifyCss","excludeUnusedCss","generateCss","properties","css","detectFonts","fontList","styleSheets","sheet","rules","cssRules","_ref2","rule","query","selectorText","cssText","fullUrl","startsWith","detectCssFont","downloadOptions","navigator","msSaveOrOpenBlob","popup","prepareSvg","_ref3","_ref3$left","_ref3$top","_ref3$scale","_ref3$responsive","responsive","_ref3$excludeCss","excludeCss","backgroundColor","_getDimensions","getBBox","_el$getBBox","foreignObject","defs","svgXml","decodeURIComponent","svgAsPngUri","_ref5","_ref5$encoderType","encoderType","_ref5$encoderOptions","encoderOptions","canvg","convertToPng","_ref6","pixelRatio","devicePixelRatio","png","SecurityError","download","saveLink","blob","URL","createObjectURL","revokeObjectURL","title","saveSvg","downloadOpts","saveSvgAsPng","WrappedComponent","withRef","minWidth","ResponsiveComponent","handleWindowResize","getWrappedInstance","setTestCanvas","testCanvas","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getRatio","paddingLeft","paddingRight","getDisplayName","Series","_props$minHeight","minHeight","clientWidth","clientHeight","_reactDom2","sx","sy","initialize","tree","xm","ym","xp","leaf","defaultX","defaultY","quadtree","Quadtree","addAll","leaf_copy","treeProto","vx","vy","cover","yz","visit","quads","Quad","retainer","removeAll","visitAfter","radii","iterations","ri2","prepare","quad","rj","jiggle","nodeById","nodeId","links","strengths","distances","bias","initializeStrength","initializeDistance","Dispatch","types","taskHead","taskTail","frame","clockLast","clockNow","clockSkew","clock","setFrame","clearNow","Timer","_call","_time","timer","delay","restart","wake","timerFlush","sleep","nap","poke","initialAngle","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","initializeNodes","initializeForce","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","tauEpsilon","Path","arcTo","x21","y21","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw"],"mappings":"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","file":"static/js/2.8e539c84.chunk.js","sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","\n\n\nimport { scaleOrdinal, schemeCategory10 } from \"d3-scale\";\nimport { bisector } from \"d3-array\";\nimport noop from \"./noop\";\nimport identity from \"./identity\";\n\nexport { default as rebind } from \"./rebind\";\nexport { default as zipper } from \"./zipper\";\nexport { default as merge } from \"./merge\";\nexport { default as slidingWindow } from \"./slidingWindow\";\nexport { default as identity } from \"./identity\";\nexport { default as noop } from \"./noop\";\nexport { default as shallowEqual } from \"./shallowEqual\";\nexport { default as mappedSlidingWindow } from \"./mappedSlidingWindow\";\nexport { default as accumulatingWindow } from \"./accumulatingWindow\";\nexport { default as PureComponent } from \"./PureComponent\";\n\nexport * from \"./barWidth\";\nexport * from \"./strokeDasharray\";\n\nexport function getLogger(prefix) {\n\tlet logger = noop;\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlogger = require(\"debug\")(\"react-stockcharts:\" + prefix);\n\t}\n\treturn logger;\n}\n\nexport function sign(x) {\n\treturn (x > 0) - (x < 0);\n}\n\nexport const yes = () => true;\n\nexport function path(loc = []) {\n\tconst key = Array.isArray(loc) ? loc : [loc];\n\tconst length = key.length;\n\n\treturn function(obj, defaultValue) {\n\t\tif (length === 0) return isDefined(obj) ? obj : defaultValue;\n\n\t\tlet index = 0;\n\t\twhile (obj != null && index < length) {\n\t\t\tobj = obj[key[index++]];\n\t\t}\n\t\treturn (index === length) ? obj : defaultValue;\n\t};\n}\n\nexport function functor(v) {\n\treturn typeof v === \"function\" ? v : () => v;\n}\n\nexport function createVerticalLinearGradient(stops) {\n\treturn function(moreProps, ctx) {\n\t\tconst { chartConfig: { height } } = moreProps;\n\n\t\tconst grd = ctx.createLinearGradient(0, height, 0, 0);\n\t\tstops.forEach(each => {\n\t\t\tgrd.addColorStop(each.stop, each.color);\n\t\t});\n\n\t\treturn grd;\n\t};\n}\n\nexport function getClosestItemIndexes2(array, value, accessor) {\n\tlet left = bisector(accessor).left(array, value);\n\tleft = Math.max(left - 1, 0);\n\tlet right = Math.min(left + 1, array.length - 1);\n\n\tconst item = accessor(array[left]);\n\tif (item >= value && item <= value) right = left;\n\n\treturn { left, right };\n}\n\nexport function degrees(radians) {\n\treturn radians * 180 / Math.PI;\n}\n\nexport function radians(degrees) {\n\treturn degrees * Math.PI / 180;\n}\n\nexport function getClosestValue(inputValue, currentValue) {\n\tconst values = isArray(inputValue) ? inputValue : [inputValue];\n\n\tconst diff = values\n\t\t.map(each => each - currentValue)\n\t\t.reduce((diff1, diff2) => Math.abs(diff1) < Math.abs(diff2) ? diff1 : diff2);\n\treturn currentValue + diff;\n}\n\nexport function find(list, predicate, context = this) {\n\tfor (let i = 0; i < list.length; ++i) {\n\t\tif (predicate.call(context, list[i], i, list)) {\n\t\t\treturn list[i];\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function d3Window(node) {\n\tconst d3win = node\n\t\t&& (node.ownerDocument && node.ownerDocument.defaultView\n\t\t\t|| node.document && node\n\t\t\t|| node.defaultView);\n\treturn d3win;\n}\n\nexport const MOUSEENTER = \"mouseenter.interaction\";\nexport const MOUSELEAVE = \"mouseleave.interaction\";\nexport const MOUSEMOVE = \"mousemove.pan\";\nexport const MOUSEUP = \"mouseup.pan\";\nexport const TOUCHMOVE = \"touchmove.pan\";\nexport const TOUCHEND = \"touchend.pan touchcancel.pan\";\n\n\nexport function getTouchProps(touch) {\n\tif (!touch) return {};\n\treturn {\n\t\tpageX: touch.pageX,\n\t\tpageY: touch.pageY,\n\t\tclientX: touch.clientX,\n\t\tclientY: touch.clientY\n\t};\n}\n\nexport function getClosestItemIndexes(array, value, accessor, log) {\n\tlet lo = 0, hi = array.length - 1;\n\twhile (hi - lo > 1) {\n\t\tconst mid = Math.round((lo + hi) / 2);\n\t\tif (accessor(array[mid]) <= value) {\n\t\t\tlo = mid;\n\t\t} else {\n\t\t\thi = mid;\n\t\t}\n\t}\n\t// for Date object === does not work, so using the <= in combination with >=\n\t// the same code works for both dates and numbers\n\tif (accessor(array[lo]).valueOf() === value.valueOf()) hi = lo;\n\tif (accessor(array[hi]).valueOf() === value.valueOf()) lo = hi;\n\n\tif (accessor(array[lo]) < value && accessor(array[hi]) < value) lo = hi;\n\tif (accessor(array[lo]) > value && accessor(array[hi]) > value) hi = lo;\n\n\tif (log) {\n\t\t// console.log(lo, accessor(array[lo]), value, accessor(array[hi]), hi);\n\t\t// console.log(accessor(array[lo]), lo, value, accessor(array[lo]) >= value);\n\t\t// console.log(value, hi, accessor(array[hi]), accessor(array[lo]) <= value);\n\t}\n\t// var left = value > accessor(array[lo]) ? lo : lo;\n\t// var right = gte(value, accessor(array[hi])) ? Math.min(hi + 1, array.length - 1) : hi;\n\n\t// console.log(value, accessor(array[left]), accessor(array[right]));\n\treturn { left: lo, right: hi };\n}\n\nexport function getClosestItem(array, value, accessor, log) {\n\tconst { left, right } = getClosestItemIndexes(array, value, accessor, log);\n\n\tif (left === right) {\n\t\treturn array[left];\n\t}\n\n\tconst closest = (Math.abs(accessor(array[left]) - value) < Math.abs(accessor(array[right]) - value))\n\t\t? array[left]\n\t\t: array[right];\n\tif (log) {\n\t\tconsole.log(array[left], array[right], closest, left, right);\n\t}\n\treturn closest;\n}\n\nexport const overlayColors = scaleOrdinal(schemeCategory10);\n\nexport function head(array, accessor) {\n\tif (accessor && array) {\n\t\tlet value;\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tvalue = array[i];\n\t\t\tif (isDefined(accessor(value))) return value;\n\t\t}\n\t\treturn undefined;\n\t}\n\treturn array ? array[0] : undefined;\n}\n\nexport function tail(array, accessor) {\n\tif (accessor && array) {\n\t\treturn array.map(accessor).slice(1);\n\t}\n\treturn array ? array.slice(1) : undefined;\n}\n\nexport const first = head;\n\nexport function last(array, accessor) {\n\tif (accessor && array) {\n\t\tlet value;\n\t\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\t\tvalue = array[i];\n\t\t\tif (isDefined(accessor(value))) return value;\n\t\t}\n\t\treturn undefined;\n\t}\n\tconst length = array ? array.length : 0;\n\treturn length ? array[length - 1] : undefined;\n}\n\nexport function isDefined(d) {\n\treturn d !== null && typeof d != \"undefined\";\n}\n\nexport function isNotDefined(d) {\n\treturn !isDefined(d);\n}\n\nexport function isObject(d) {\n\treturn isDefined(d) && typeof d === \"object\" && !Array.isArray(d);\n}\n\nexport const isArray = Array.isArray;\n\nexport function touchPosition(touch, e) {\n\tconst container = e.target,\n\t\trect = container.getBoundingClientRect(),\n\t\tx = touch.clientX - rect.left - container.clientLeft,\n\t\ty = touch.clientY - rect.top - container.clientTop,\n\t\txy = [Math.round(x), Math.round(y)];\n\treturn xy;\n}\n\nexport function mousePosition(e, defaultRect) {\n\tconst container = e.currentTarget;\n\tconst rect = defaultRect || container.getBoundingClientRect(),\n\t\tx = e.clientX - rect.left - container.clientLeft,\n\t\ty = e.clientY - rect.top - container.clientTop,\n\t\txy = [Math.round(x), Math.round(y)];\n\treturn xy;\n}\n\n\nexport function clearCanvas(canvasList, ratio) {\n\tcanvasList.forEach(each => {\n\t\teach.setTransform(1, 0, 0, 1, 0, 0);\n\t\teach.clearRect(-1, -1, each.canvas.width + 2, each.canvas.height + 2);\n\t\teach.scale(ratio, ratio);\n\t});\n}\n\nexport function capitalizeFirst(str) {\n\treturn str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function hexToRGBA(inputHex, opacity) {\n\tconst hex = inputHex.replace(\"#\", \"\");\n\tif (inputHex.indexOf(\"#\") > -1 && (hex.length === 3 || hex.length === 6)) {\n\n\t\tconst multiplier = (hex.length === 3) ? 1 : 2;\n\n\t\tconst r = parseInt(hex.substring(0, 1 * multiplier), 16);\n\t\tconst g = parseInt(hex.substring(1 * multiplier, 2 * multiplier), 16);\n\t\tconst b = parseInt(hex.substring(2 * multiplier, 3 * multiplier), 16);\n\n\t\tconst result = `rgba(${ r }, ${ g }, ${ b }, ${ opacity })`;\n\n\t\treturn result;\n\t}\n\treturn inputHex;\n}\n\nexport function toObject(array, iteratee = identity) {\n\treturn array.reduce((returnObj, a) => {\n\t\tconst [key, value] = iteratee(a);\n\t\treturn {\n\t\t\t...returnObj,\n\t\t\t[key]: value\n\t\t};\n\t}, {});\n}\n\n// copied from https://github.com/lodash/lodash/blob/master/mapValue.js\nexport function mapValue(object, iteratee) {\n\tobject = Object(object);\n\t// eslint-disable-next-line prefer-const\n\tlet result = {};\n\n\tObject.keys(object).forEach(key => {\n\t\tconst mappedValue = iteratee(object[key], key, object);\n\n\t\tif (isDefined(mappedValue)) {\n\t\t\tresult[key] = mappedValue;\n\t\t}\n\t});\n\treturn result;\n}\n\n// copied from https://github.com/lodash/lodash/blob/master/mapObject.js\nexport function mapObject(object = {}, iteratee = identity) {\n\tconst props = Object.keys(object);\n\n\t// eslint-disable-next-line prefer-const\n\tlet result = new Array(props.length);\n\n\tprops.forEach((key, index) => {\n\t\tresult[index] = iteratee(object[key], key, object);\n\t});\n\treturn result;\n}\n\nexport function replaceAtIndex(array, index, value) {\n\tif (isDefined(array) && array.length > index) {\n\t\treturn array.slice(0, index)\n\t\t\t.concat(value)\n\t\t\t.concat(array.slice(index + 1));\n\t}\n\treturn array;\n}\n\n// copied from https://github.com/lodash/lodash/blob/master/forOwn.js\nexport function forOwn(obj, iteratee) {\n\tconst object = Object(obj);\n\tObject.keys(object)\n\t\t.forEach(key => iteratee(object[key], key, object));\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","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\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","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\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(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","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 {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\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 max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n 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 max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\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","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = 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 = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\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 min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","\n\nimport PropTypes from \"prop-types\";\nimport GenericComponent from \"./GenericComponent\";\nimport {\n\tisDefined,\n\tfind,\n} from \"./utils\";\n\nconst ALWAYS_TRUE_TYPES = [\n\t\"drag\",\n\t\"dragend\"\n];\n\nclass GenericChartComponent extends GenericComponent {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\n\t\tthis.preCanvasDraw = this.preCanvasDraw.bind(this);\n\t\tthis.postCanvasDraw = this.postCanvasDraw.bind(this);\n\t\tthis.shouldTypeProceed = this.shouldTypeProceed.bind(this);\n\t\tthis.preEvaluate = this.preEvaluate.bind(this);\n\t}\n\tpreCanvasDraw(ctx, moreProps) {\n\t\tsuper.preCanvasDraw(ctx, moreProps);\n\t\tctx.save();\n\t\tconst { margin, ratio } = this.context;\n\t\tconst { chartConfig } = moreProps;\n\n\t\tconst canvasOriginX = (0.5 * ratio) + chartConfig.origin[0] + margin.left;\n\t\tconst canvasOriginY = (0.5 * ratio) + chartConfig.origin[1] + margin.top;\n\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\t\tconst { clip, edgeClip } = this.props;\n\n\t\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\tctx.scale(ratio, ratio);\n\t\tif (edgeClip) {\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(-1, canvasOriginY - 10, width + margin.left + margin.right + 1, height + 20);\n\t\t\tctx.clip();\n\t\t}\n\n\t\tctx.translate(canvasOriginX, canvasOriginY);\n\n\t\tif (clip) {\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(-1, -1, width + 1, height + 1);\n\t\t\tctx.clip();\n\t\t}\n\t}\n\tpostCanvasDraw(ctx, moreProps) {\n\t\tsuper.postCanvasDraw(ctx, moreProps);\n\t\tctx.restore();\n\t}\n\tupdateMoreProps(moreProps) {\n\t\tsuper.updateMoreProps(moreProps);\n\t\tconst { chartConfig: chartConfigList } = moreProps;\n\n\t\tif (chartConfigList && Array.isArray(chartConfigList)) {\n\t\t\tconst { chartId } = this.context;\n\t\t\tconst chartConfig = find(chartConfigList, each => each.id === chartId);\n\t\t\tthis.moreProps.chartConfig = chartConfig;\n\t\t}\n\t\tif (isDefined(this.moreProps.chartConfig)) {\n\t\t\tconst { origin: [ox, oy] } = this.moreProps.chartConfig;\n\t\t\tif (isDefined(moreProps.mouseXY)) {\n\t\t\t\tconst { mouseXY: [x, y] } = moreProps;\n\t\t\t\tthis.moreProps.mouseXY = [\n\t\t\t\t\tx - ox,\n\t\t\t\t\ty - oy\n\t\t\t\t];\n\t\t\t}\n\t\t\tif (isDefined(moreProps.startPos)) {\n\t\t\t\tconst { startPos: [x, y] } = moreProps;\n\t\t\t\tthis.moreProps.startPos = [\n\t\t\t\t\tx - ox,\n\t\t\t\t\ty - oy\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\t}\n\tpreEvaluate(/* type, moreProps */) {\n\t\t/* if (\n\t\t\ttype === \"mousemove\"\n\t\t\t&& this.props.onMouseMove\n\t\t\t&& isDefined(moreProps)\n\t\t\t&& isDefined(moreProps.currentCharts)\n\t\t) {\n\t\t\tif (moreProps.currentCharts.indexOf(this.context.chartId) === -1) {\n\t\t\t\tmoreProps.show = false;\n\t\t\t}\n\t\t} */\n\t}\n\tshouldTypeProceed(type, moreProps) {\n\t\tif (\n\t\t\t(type === \"mousemove\" || type === \"click\")\n\t\t\t&& this.props.disablePan) {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\tALWAYS_TRUE_TYPES.indexOf(type) === -1\n\t\t\t&& isDefined(moreProps)\n\t\t\t&& isDefined(moreProps.currentCharts)\n\t\t) {\n\t\t\treturn (moreProps.currentCharts.indexOf(this.context.chartId) > -1);\n\t\t}\n\t\treturn true;\n\t}\n}\n\nGenericChartComponent.propTypes = GenericComponent.propTypes;\n\nGenericChartComponent.defaultProps = GenericComponent.defaultProps;\n\nGenericChartComponent.contextTypes = {\n\t...GenericComponent.contextTypes,\n\tcanvasOriginX: PropTypes.number,\n\tcanvasOriginY: PropTypes.number,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\tchartConfig: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n};\n\nexport default GenericChartComponent;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport {\n\tisNotDefined,\n\tisDefined,\n\tnoop,\n\tfunctor,\n\tidentity,\n} from \"./utils\";\n\nconst aliases = {\n\tmouseleave: \"mousemove\", // to draw interactive after mouse exit\n\tpanend: \"pan\",\n\tpinchzoom: \"pan\",\n\tmousedown: \"mousemove\",\n\tclick: \"mousemove\",\n\tcontextmenu: \"mousemove\",\n\tdblclick: \"mousemove\",\n\tdragstart: \"drag\",\n\tdragend: \"drag\",\n\tdragcancel: \"drag\",\n};\n\nclass GenericComponent extends Component {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t\tthis.listener = this.listener.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.updateMoreProps = this.updateMoreProps.bind(this);\n\t\tthis.evaluateType = this.evaluateType.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t\tthis.preCanvasDraw = this.preCanvasDraw.bind(this);\n\t\tthis.postCanvasDraw = this.postCanvasDraw.bind(this);\n\t\tthis.getPanConditions = this.getPanConditions.bind(this);\n\t\tthis.shouldTypeProceed = this.shouldTypeProceed.bind(this);\n\t\tthis.preEvaluate = this.preEvaluate.bind(this);\n\n\t\tconst { generateSubscriptionId } = context;\n\t\tthis.suscriberId = generateSubscriptionId();\n\n\t\tthis.moreProps = {};\n\n\t\tthis.state = {\n\t\t\tupdateCount: 0,\n\t\t};\n\t}\n\tupdateMoreProps(moreProps) {\n\t\tObject.keys(moreProps).forEach(key => {\n\t\t\tthis.moreProps[key] = moreProps[key];\n\t\t});\n\t}\n\tshouldTypeProceed() {\n\t\treturn true;\n\t}\n\tpreEvaluate() {\n\t}\n\tlistener(type, moreProps, state, e) {\n\t\t// console.log(e.shiftKey)\n\t\tif (isDefined(moreProps)) {\n\t\t\tthis.updateMoreProps(moreProps);\n\t\t}\n\t\tthis.evaluationInProgress = true;\n\t\tthis.evaluateType(type, e);\n\t\tthis.evaluationInProgress = false;\n\t}\n\tevaluateType(type, e) {\n\t\tconst newType = aliases[type] || type;\n\t\tconst proceed = this.props.drawOn.indexOf(newType) > -1;\n\n\t\t// console.log(\"type ->\", type, proceed);\n\n\t\tif (!proceed) return;\n\t\t// const moreProps = this.getMoreProps();\n\t\tthis.preEvaluate(type, this.moreProps, e);\n\t\tif (!this.shouldTypeProceed(type, this.moreProps)) return;\n\n\t\tswitch (type) {\n\t\t\tcase \"zoom\":\n\t\t\tcase \"mouseenter\":\n\t\t\t// DO NOT DRAW FOR THESE EVENTS\n\t\t\t\tbreak;\n\t\t\tcase \"mouseleave\": {\n\t\t\t\tthis.moreProps.hovering = false;\n\t\t\t\tconst moreProps = this.getMoreProps();\n\n\t\t\t\tif (this.props.onUnHover) {\n\t\t\t\t\tthis.props.onUnHover(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"contextmenu\": {\n\t\t\t\tif (this.props.onContextMenu) {\n\t\t\t\t\tthis.props.onContextMenu(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.moreProps.hovering\n\t\t\t\t&& this.props.onContextMenuWhenHover\n\t\t\t\t) {\n\t\t\t\t\tthis.props.onContextMenuWhenHover(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"mousedown\": {\n\t\t\t\tif (this.props.onMouseDown) {\n\t\t\t\t\tthis.props.onMouseDown(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"click\": {\n\t\t\t\tconst moreProps = this.getMoreProps();\n\t\t\t\tif (this.moreProps.hovering) {\n\t\t\t\t// console.error(\"TODO use this only for SAR, Line series\")\n\t\t\t\t\tthis.props.onClickWhenHover(moreProps, e);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.onClickOutside(moreProps, e);\n\t\t\t\t}\n\t\t\t\tif (this.props.onClick) {\n\t\t\t\t\tthis.props.onClick(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"mousemove\": {\n\n\t\t\t\tconst prevHover = this.moreProps.hovering;\n\t\t\t\tthis.moreProps.hovering = this.isHover(e);\n\n\t\t\t\tconst { amIOnTop, setCursorClass } = this.context;\n\n\t\t\t\tif (this.moreProps.hovering\n\t\t\t\t\t&& !this.props.selected\n\t\t\t\t\t/* && !prevHover */\n\t\t\t\t\t&& amIOnTop(this.suscriberId)\n\t\t\t\t\t&& isDefined(this.props.onHover)) {\n\t\t\t\t\tsetCursorClass(\"react-stockcharts-pointer-cursor\");\n\t\t\t\t\tthis.iSetTheCursorClass = true;\n\t\t\t\t} else if (this.moreProps.hovering\n\t\t\t\t\t&& this.props.selected\n\t\t\t\t\t&& amIOnTop(this.suscriberId)) {\n\t\t\t\t\tsetCursorClass(this.props.interactiveCursorClass);\n\t\t\t\t\tthis.iSetTheCursorClass = true;\n\t\t\t\t} else if (prevHover\n\t\t\t\t\t&& !this.moreProps.hovering\n\t\t\t\t\t&& this.iSetTheCursorClass) {\n\t\t\t\t\tthis.iSetTheCursorClass = false;\n\t\t\t\t\tsetCursorClass(null);\n\t\t\t\t}\n\t\t\t\tconst moreProps = this.getMoreProps();\n\n\t\t\t\tif (this.moreProps.hovering && !prevHover) {\n\t\t\t\t\tif (this.props.onHover) {\n\t\t\t\t\t\tthis.props.onHover(moreProps, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (prevHover && !this.moreProps.hovering) {\n\t\t\t\t\tif (this.props.onUnHover) {\n\t\t\t\t\t\tthis.props.onUnHover(moreProps, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.props.onMouseMove) {\n\t\t\t\t\tthis.props.onMouseMove(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dblclick\": {\n\t\t\t\tconst moreProps = this.getMoreProps();\n\n\t\t\t\tif (this.props.onDoubleClick) {\n\t\t\t\t\tthis.props.onDoubleClick(moreProps, e);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.moreProps.hovering\n\t\t\t\t&& this.props.onDoubleClickWhenHover\n\t\t\t\t) {\n\t\t\t\t\tthis.props.onDoubleClickWhenHover(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"pan\": {\n\t\t\t\tthis.moreProps.hovering = false;\n\t\t\t\tif (this.props.onPan) {\n\t\t\t\t\tthis.props.onPan(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"panend\": {\n\t\t\t\tif (this.props.onPanEnd) {\n\t\t\t\t\tthis.props.onPanEnd(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dragstart\": {\n\t\t\t\tif (this.getPanConditions().draggable) {\n\t\t\t\t\tconst { amIOnTop } = this.context;\n\t\t\t\t\tif (amIOnTop(this.suscriberId)) {\n\t\t\t\t\t\tthis.dragInProgress = true;\n\t\t\t\t\t\tthis.props.onDragStart(this.getMoreProps(), e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.someDragInProgress = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"drag\": {\n\t\t\t\tif (this.dragInProgress && this.props.onDrag) {\n\t\t\t\t\tthis.props.onDrag(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dragend\": {\n\t\t\t\tif (this.dragInProgress && this.props.onDragComplete) {\n\t\t\t\t\tthis.props.onDragComplete(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tthis.dragInProgress = false;\n\t\t\t\tthis.someDragInProgress = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dragcancel\": {\n\t\t\t\tif (this.dragInProgress || this.iSetTheCursorClass) {\n\t\t\t\t\tconst { setCursorClass } = this.context;\n\t\t\t\t\tsetCursorClass(null);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tisHover(e) {\n\t\treturn isDefined(this.props.isHover)\n\t\t\t? this.props.isHover(this.getMoreProps(), e)\n\t\t\t: false;\n\t}\n\tgetPanConditions() {\n\t\tconst draggable = (\n\t\t\t!!(this.props.selected && this.moreProps.hovering)\n\t\t\t|| (this.props.enableDragOnHover && this.moreProps.hovering)\n\t\t);\n\n\t\treturn {\n\t\t\tdraggable,\n\t\t\tpanEnabled: !this.props.disablePan,\n\t\t};\n\t}\n\tdraw({ trigger, force } = { force: false }) {\n\t\tconst type = aliases[trigger] || trigger;\n\t\tconst proceed = this.props.drawOn.indexOf(type) > -1;\n\n\t\tif (proceed\n\t\t\t|| this.props.selected /* this is to draw as soon as you select */\n\t\t\t|| force\n\t\t) {\n\t\t\tconst { chartCanvasType } = this.context;\n\t\t\tconst { canvasDraw } = this.props;\n\n\t\t\tif (isNotDefined(canvasDraw) || chartCanvasType === \"svg\") {\n\t\t\t\tconst { updateCount } = this.state;\n\t\t\t\tthis.setState({\n\t\t\t\t\tupdateCount: updateCount + 1,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.drawOnCanvas();\n\t\t\t}\n\t\t}\n\t}\n\tcomponentWillMount() {\n\t\tconst { subscribe, chartId } = this.context;\n\t\tconst { clip, edgeClip } = this.props;\n\n\t\tsubscribe(this.suscriberId,\n\t\t\t{\n\t\t\t\tchartId, clip, edgeClip,\n\t\t\t\tlistener: this.listener,\n\t\t\t\tdraw: this.draw,\n\t\t\t\tgetPanConditions: this.getPanConditions,\n\t\t\t}\n\t\t);\n\t\tthis.componentWillReceiveProps(this.props, this.context);\n\t}\n\tcomponentWillUnmount() {\n\t\tconst { unsubscribe } = this.context;\n\t\tunsubscribe(this.suscriberId);\n\t\tif (this.iSetTheCursorClass) {\n\t\t\tconst { setCursorClass } = this.context;\n\t\t\tsetCursorClass(null);\n\t\t}\n\t}\n\tcomponentDidMount() {\n\t\tthis.componentDidUpdate(this.props);\n\t}\n\tcomponentDidUpdate(prevProps) {\n\t\tconst { chartCanvasType } = this.context;\n\t\tconst { canvasDraw, selected, interactiveCursorClass } = this.props;\n\n\t\tif (prevProps.selected !== selected) {\n\t\t\tconst { setCursorClass } = this.context;\n\t\t\tif (selected && this.moreProps.hovering) {\n\t\t\t\tthis.iSetTheCursorClass = true;\n\t\t\t\tsetCursorClass(interactiveCursorClass);\n\t\t\t} else {\n\t\t\t\tthis.iSetTheCursorClass = false;\n\t\t\t\tsetCursorClass(null);\n\t\t\t}\n\t\t}\n\t\tif (isDefined(canvasDraw)\n\t\t\t\t&& !this.evaluationInProgress\n\t\t\t\t// && !(this.someDragInProgress && this.props.selected)\n\t\t\t\t/*\n\t\t\t\tprevent double draw of interactive elements\n\t\t\t\tduring dragging / hover / click etc.\n\t\t\t\t*/\n\t\t\t\t&& chartCanvasType !== \"svg\") {\n\n\t\t\tthis.updateMoreProps(this.moreProps);\n\t\t\tthis.drawOnCanvas();\n\t\t}\n\t}\n\tcomponentWillReceiveProps(nextProps, nextContext) {\n\t\tconst { xScale, plotData, chartConfig, getMutableState } = nextContext;\n\n\t\tthis.props.debug(nextContext);\n\t\tthis.moreProps = {\n\t\t\t...this.moreProps,\n\t\t\t...getMutableState(),\n\t\t\t/*\n\t\t\t^ this is so\n\t\t\tmouseXY, currentCharts, currentItem are available to\n\t\t\tnewly created components like MouseHoverText which\n\t\t\tis created right after a new interactive object is drawn\n\t\t\t*/\n\t\t\txScale, plotData, chartConfig\n\t\t};\n\t}\n\tgetMoreProps() {\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmorePropsDecorator,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\twidth,\n\t\t\theight,\n\t\t} = this.context;\n\n\t\tconst { chartId, fullData } = this.context;\n\n\t\tconst moreProps = {\n\t\t\txScale, plotData, chartConfig,\n\t\t\txAccessor, displayXAccessor,\n\t\t\twidth, height,\n\t\t\tchartId,\n\t\t\tfullData,\n\t\t\t...this.moreProps,\n\t\t};\n\n\t\treturn (morePropsDecorator || identity)(moreProps);\n\t}\n\tpreCanvasDraw() {\n\t\t// do nothing\n\t}\n\tpostCanvasDraw() {\n\t}\n\tdrawOnCanvas() {\n\t\tconst { canvasDraw, canvasToDraw } = this.props;\n\t\tconst { getCanvasContexts } = this.context;\n\n\t\tconst moreProps = this.getMoreProps();\n\n\t\tconst ctx = canvasToDraw(getCanvasContexts());\n\n\t\tthis.preCanvasDraw(ctx, moreProps);\n\t\tcanvasDraw(ctx, moreProps);\n\t\tthis.postCanvasDraw(ctx, moreProps);\n\t}\n\trender() {\n\t\tconst { chartCanvasType, chartId } = this.context;\n\t\tconst { canvasDraw, clip, svgDraw } = this.props;\n\n\t\tif (isDefined(canvasDraw) && chartCanvasType !== \"svg\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst suffix = isDefined(chartId) ? \"-\" + chartId : \"\";\n\n\t\tconst style = clip ? { \"clipPath\": `url(#chart-area-clip${suffix})` } : null;\n\n\t\treturn <g style={style}>{svgDraw(this.getMoreProps())}</g>;\n\t}\n}\n\nGenericComponent.propTypes = {\n\tsvgDraw: PropTypes.func.isRequired,\n\tcanvasDraw: PropTypes.func,\n\n\tdrawOn: PropTypes.array.isRequired,\n\n\tclip: PropTypes.bool.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tinteractiveCursorClass: PropTypes.string,\n\n\tselected: PropTypes.bool.isRequired,\n\tenableDragOnHover: PropTypes.bool.isRequired,\n\tdisablePan: PropTypes.bool.isRequired,\n\n\tcanvasToDraw: PropTypes.func.isRequired,\n\n\tisHover: PropTypes.func,\n\n\tonClick: PropTypes.func,\n\tonClickWhenHover: PropTypes.func,\n\tonClickOutside: PropTypes.func,\n\n\tonPan: PropTypes.func,\n\tonPanEnd: PropTypes.func,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragComplete: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonDoubleClickWhenHover: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tonContextMenuWhenHover: PropTypes.func,\n\tonMouseMove: PropTypes.func,\n\tonMouseDown: PropTypes.func,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdebug: PropTypes.func,\n\t// owner: PropTypes.string.isRequired,\n};\n\nGenericComponent.defaultProps = {\n\tsvgDraw: functor(null),\n\tdraw: [],\n\tcanvasToDraw: contexts => contexts.mouseCoord,\n\tclip: true,\n\tedgeClip: false,\n\tselected: false,\n\tdisablePan: false,\n\tenableDragOnHover: false,\n\n\tonClickWhenHover: noop,\n\tonClickOutside: noop,\n\tonDragStart: noop,\n\tonMouseMove: noop,\n\tonMouseDown: noop,\n\tdebug: noop,\n};\n\nGenericComponent.contextTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\tgetCanvasContexts: PropTypes.func,\n\n\tchartCanvasType: PropTypes.string,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\tplotData: PropTypes.array.isRequired,\n\tfullData: PropTypes.array.isRequired,\n\n\tchartConfig: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.object,\n\t]).isRequired,\n\n\tmorePropsDecorator: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func.isRequired,\n\n\tamIOnTop: PropTypes.func.isRequired,\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n\tsetCursorClass: PropTypes.func.isRequired,\n};\n\nexport default GenericComponent;\n\nexport function getAxisCanvas(contexts) {\n\treturn contexts.axes;\n}\n\nexport function getMouseCanvas(contexts) {\n\treturn contexts.mouseCoord;\n}\n","\n\nexport const BollingerBand = {\n\twindowSize: 20,\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\",\n\tmultiplier: 2,\n\tmovingAverageType: \"sma\"\n};\n\nexport const ATR = {\n\twindowSize: 14,\n};\n\nexport const ForceIndex = {\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n\tvolumePath: \"volume\",\n};\nexport const SmoothedForceIndex = {\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n\tvolumePath: \"volume\",\n\tsmoothingType: \"ema\",\n\tsmoothingWindow: 13,\n};\nexport const Change = {\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n};\nexport const Compare = {\n\tbasePath: \"close\",\n\tmainKeys: [\"open\", \"high\", \"low\", \"close\"],\n\tcompareKeys: [],\n};\n\nexport const ElderRay = {\n\twindowSize: 13,\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n\tmovingAverageType: \"sma\",\n};\n\nexport const ElderImpulse = {\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n};\n\nexport const SAR = {\n\taccelerationFactor: 0.02,\n\tmaxAccelerationFactor: 0.2,\n};\n\nexport const MACD = {\n\tfast: 12,\n\tslow: 26,\n\tsignal: 9,\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\",\n};\n\nexport const FullStochasticOscillator = {\n\twindowSize: 12,\n\tkWindowSize: 3,\n\tdWindowSize: 3,\n};\n\nexport const RSI = {\n\twindowSize: 14,\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n};\n\nexport const EMA = {\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\",\n\twindowSize: 10,\n};\n\nexport const SMA = {\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\",\n\twindowSize: 10,\n};\n\nexport const WMA = {\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\",\n\twindowSize: 10,\n};\n\nexport const TMA = {\n\t// source: d => d.close, // \"high\", \"low\", \"open\", \"close\"\n\tsourcePath: \"close\",\n\twindowSize: 10,\n};\n\nexport const Kagi = {\n\treversalType: \"ATR\", // \"ATR\", \"FIXED\"\n\twindowSize: 14,\n\treversal: 2,\n\tsourcePath: \"close\", // \"high\", \"low\", \"open\", \"close\"\n\t/* dateAccessor: d => d.date,\n\tdateMutator: (d, date) => { d.date = date; }, */\n};\n\nexport const Renko = {\n\treversalType: \"ATR\", // \"ATR\", \"FIXED\"\n\twindowSize: 14,\n\tfixedBrickSize: 2,\n\tsourcePath: \"high/low\", // \"close\", \"high/low\"\n\t/* source: d => ({ high: d.high, low: d.low }),\n\tdateAccessor: d => d.date,\n\tdateMutator: (d, date) => { d.date = date; }, */\n};\n\nexport const PointAndFigure = {\n\tboxSize: 0.5,\n\treversal: 3,\n\tsourcePath: \"high/low\", // \"close\", \"high/low\"\n\n\t/* source: d => ({ high: d.high, low: d.low }), // \"close\", \"hi/lo\"\n\tdateAccessor: d => d.date,\n\tdateMutator: (d, date) => { d.date = date; }, */\n};\n","\n\nimport { overlayColors } from \"../utils\";\n\nlet i = 0;\n\nexport default function() {\n\n\tlet id = i++, accessor, stroke, fill, echo, type;\n\n\tfunction baseIndicator() {\n\t}\n\n\tbaseIndicator.id = function(x) {\n\t\tif (!arguments.length) return id;\n\t\tid = x;\n\t\treturn baseIndicator;\n\t};\n\tbaseIndicator.accessor = function(x) {\n\t\tif (!arguments.length) return accessor;\n\t\taccessor = x;\n\t\treturn baseIndicator;\n\t};\n\tbaseIndicator.stroke = function(x) {\n\t\tif (!arguments.length) return !stroke ? stroke = overlayColors(id) : stroke;\n\t\tstroke = x;\n\t\treturn baseIndicator;\n\t};\n\tbaseIndicator.fill = function(x) {\n\t\tif (!arguments.length) return !fill ? fill = overlayColors(id) : fill;\n\t\tfill = x;\n\t\treturn baseIndicator;\n\t};\n\tbaseIndicator.echo = function(x) {\n\t\tif (!arguments.length) return echo;\n\t\techo = x;\n\t\treturn baseIndicator;\n\t};\n\tbaseIndicator.type = function(x) {\n\t\tif (!arguments.length) return type;\n\t\ttype = x;\n\t\treturn baseIndicator;\n\t};\n\treturn baseIndicator;\n}","export { default as ema } from \"./ema\";\nexport { default as sma } from \"./sma\";\nexport { default as wma } from \"./wma\";\nexport { default as tma } from \"./tma\";\nexport { default as bollingerband } from \"./bollingerband\";\nexport { default as heikinAshi } from \"./heikinAshi\";\nexport { default as kagi } from \"./kagi\";\nexport { default as pointAndFigure } from \"./pointAndFigure\";\nexport { default as renko } from \"./renko\";\nexport { default as macd } from \"./macd\";\nexport { default as rsi } from \"./rsi\";\nexport { default as sto } from \"./sto\";\nexport { default as atr } from \"./atr\";\nexport { default as forceIndex } from \"./forceIndex\";\nexport { default as smoothedForceIndex } from \"./smoothedForceIndex\";\nexport { default as elderRay } from \"./elderRay\";\nexport { default as sar } from \"./sar\";\nexport { default as compare } from \"./compare\";\nexport { default as change } from \"./change\";\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 map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\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(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\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","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\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","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","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 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","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","export { default as XAxis } from \"./XAxis\";\nexport { default as YAxis } from \"./YAxis\";\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass ToolTipText extends Component {\n\trender() {\n\t\treturn <text\n\t\t\tfontFamily={this.props.fontFamily}\n\t\t\tfontSize={this.props.fontSize}\n\t\t\t{...this.props}\n\t\t\tclassName=\"react-stockcharts-tooltip\">{this.props.children}</text>;\n\t}\n}\n\nToolTipText.propTypes = {\n\tfontFamily: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tchildren: PropTypes.node.isRequired,\n};\n\nToolTipText.defaultProps = {\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 11,\n};\n\nexport default ToolTipText;\n","\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction ToolTipTSpanLabel(props) {\n\treturn <tspan className=\"react-stockcharts-tooltip-label\" {...props}>{props.children}</tspan>;\n}\n\nToolTipTSpanLabel.propTypes = {\n\tchildren: PropTypes.node.isRequired,\n\tfill: PropTypes.string.isRequired,\n};\n\nToolTipTSpanLabel.defaultProps = {\n\tfill: \"#4682B4\"\n};\n\nexport default ToolTipTSpanLabel;\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","export { default as AreaSeries } from \"./AreaSeries\";\nexport { default as AlternatingFillAreaSeries } from \"./AlternatingFillAreaSeries\";\nexport { default as AreaOnlySeries } from \"./AreaOnlySeries\";\nexport { default as ScatterSeries } from \"./ScatterSeries\";\nexport { default as CircleMarker } from \"./CircleMarker\";\nexport { default as TriangleMarker } from \"./TriangleMarker\";\nexport { default as SquareMarker } from \"./SquareMarker\";\nexport { default as LineSeries } from \"./LineSeries\";\nexport { default as CandlestickSeries } from \"./CandlestickSeries\";\nexport { default as OHLCSeries } from \"./OHLCSeries\";\nexport { default as BarSeries } from \"./BarSeries\";\nexport { default as StackedBarSeries } from \"./StackedBarSeries\";\nexport { default as GroupedBarSeries } from \"./GroupedBarSeries\";\nexport { default as KagiSeries } from \"./KagiSeries\";\nexport { default as PointAndFigureSeries } from \"./PointAndFigureSeries\";\nexport { default as RenkoSeries } from \"./RenkoSeries\";\nexport { default as MACDSeries } from \"./MACDSeries\";\nexport { default as BollingerSeries } from \"./BollingerSeries\";\nexport { default as RSISeries } from \"./RSISeries\";\nexport { default as StochasticSeries } from \"./StochasticSeries\";\nexport { default as ElderRaySeries } from \"./ElderRaySeries\";\nexport { default as VolumeProfileSeries } from \"./VolumeProfileSeries\";\nexport { default as StraightLine } from \"./StraightLine\";\nexport { default as SARSeries } from \"./SARSeries\";\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export default function displayValuesFor(props, moreProps) {\n\tconst { currentItem } = moreProps;\n\treturn currentItem;\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","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","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal(range) {\n var index = map(),\n domain = [],\n unknown = implicit;\n\n range = range == null ? [] : slice.call(range);\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function deinterpolateLinear(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n return function(a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n return function(a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n };\n}\n\nfunction bimap(domain, range, deinterpolate, reinterpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp());\n}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nexport default function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);\n }\n\n scale.invert = function(y) {\n return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n return rescale();\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(deinterpolate, reinterpolate);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function() {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport constant from \"./constant\";\nimport nice from \"./nice\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction deinterpolate(a, b) {\n return (b = Math.log(b / a))\n ? function(x) { return Math.log(x / a) / b; }\n : constant(b);\n}\n\nfunction reinterpolate(a, b) {\n return a < 0\n ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport default function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n scale.copy = function() {\n return copy(scale, log().base(base));\n };\n\n return scale;\n}\n","import constant from \"./constant\";\nimport {linearish} from \"./linear\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nexport default function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent)))\n ? function(x) { return (raise(x, exponent) - a) / b; }\n : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function(t) { return raise(a + b * t, 1 / exponent); };\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function() {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n}\n\nexport function sqrt() {\n return pow().exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [];\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1];\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range);\n };\n\n return linearish(scale);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(deinterpolate, reinterpolate),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\n\nexport default function() {\n return calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n}\n","export default function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n}\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"./colors\";\n\nexport default colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n","import colors from \"./colors\";\n\nexport default colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n}\n","import colors from \"./colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import {linearish} from \"./linear\";\n\nexport default function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n}\n","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","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","export default () => {};","\n\nexport default d => d;","\n\n/* an extension to d3.zip so we call a function instead of an array */\n\nimport { min } from \"d3-array\";\n\nimport identity from \"./identity\";\n\nexport default function zipper() {\n\tlet combine = identity;\n\n\tfunction zip() {\n\t\tconst n = arguments.length;\n\t\tif (!n) return [];\n\t\tconst m = min(arguments, d3_zipLength);\n\n\t\t// eslint-disable-next-line prefer-const\n\t\tlet i, zips = new Array(m);\n\t\tfor (i = -1; ++i < m; ) {\n\t\t\tfor (let j = -1, zip = zips[i] = new Array(n); ++j < n; ) {\n\t\t\t\tzip[j] = arguments[j][i];\n\t\t\t}\n\t\t\tzips[i] = combine.apply(this, zips[i]);\n\t\t}\n\t\treturn zips;\n\t}\n\tfunction d3_zipLength(d) {\n\t\treturn d.length;\n\t}\n\tzip.combine = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn combine;\n\t\t}\n\t\tcombine = x;\n\t\treturn zip;\n\t};\n\treturn zip;\n}\n","// https://github.com/jonschlinkert/is-equal-shallow/\n\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2015, Jon Schlinkert.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nfunction isDate(date) {\n\treturn Object.prototype.toString.call(date) === \"[object Date]\";\n}\n\nfunction isEqual(val1, val2) {\n\treturn (isDate(val1) && isDate(val2))\n\t\t? val1.getTime() === val2.getTime()\n\t\t: val1 === val2;\n}\n\nexport default function shallowEqual(a, b) {\n\tif (!a && !b) { return true; }\n\tif (!a && b || a && !b) { return false; }\n\n\tlet numKeysA = 0, numKeysB = 0, key;\n\tfor (key in b) {\n\t\tnumKeysB++;\n\t\tif (/* !isPrimitive(b[key]) || */ (b.hasOwnProperty(key) && !a.hasOwnProperty(key)) || !isEqual(a[key], b[key])) {\n\t\t\t// console.log(key, a, b);\n\t\t\treturn false;\n\t\t}\n\t}\n\tfor (key in a) {\n\t\tnumKeysA++;\n\t}\n\treturn numKeysA === numKeysB;\n}\n","\n\nimport noop from \"./noop\";\nimport identity from \"./identity\";\nimport { functor } from \"./index\";\n\nexport default function() {\n\n\tlet undefinedValue = undefined,\n\t\twindowSize = 10,\n\t\taccumulator = noop,\n\t\tsource = identity,\n\t\tskipInitial = 0;\n\n\t// eslint-disable-next-line prefer-const\n\tlet mappedSlidingWindow = function(data) {\n\t\tconst size = functor(windowSize).apply(this, arguments);\n\t\tconst windowData = [];\n\t\tlet accumulatorIdx = 0;\n\t\tconst undef = functor(undefinedValue);\n\t\t// console.log(skipInitial, size, data.length, windowData.length);\n\t\tconst result = [];\n\t\tdata.forEach(function(d, i) {\n\t\t\t// console.log(d, i, windowData.length);\n\t\t\tlet mapped;\n\t\t\tif (i < (skipInitial + size - 1)) {\n\t\t\t\tmapped = undef(d, i);\n\t\t\t\tresult.push(mapped);\n\t\t\t\twindowData.push(mapped);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (i >= (skipInitial + size)) {\n\t\t\t\t// Treat windowData as FIFO rolling buffer\n\t\t\t\twindowData.shift();\n\t\t\t}\n\t\t\twindowData.push(source(d, i));\n\t\t\tmapped = accumulator(windowData, i, accumulatorIdx++);\n\t\t\tresult.push(mapped);\n\t\t\twindowData.pop();\n\t\t\twindowData.push(mapped);\n\t\t\treturn;\n\t\t});\n\t\treturn result;\n\t};\n\n\tmappedSlidingWindow.undefinedValue = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn undefinedValue;\n\t\t}\n\t\tundefinedValue = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.windowSize = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn windowSize;\n\t\t}\n\t\twindowSize = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.accumulator = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn accumulator;\n\t\t}\n\t\taccumulator = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.skipInitial = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn skipInitial;\n\t\t}\n\t\tskipInitial = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.source = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn source;\n\t\t}\n\t\tsource = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\n\treturn mappedSlidingWindow;\n}","\n\nimport React from \"react\";\nimport shallowEqual from \"./shallowEqual\";\n\nclass PureComponent extends React.Component {\n\tshouldComponentUpdate(nextProps, nextState, nextContext) {\n\t\treturn !shallowEqual(this.props, nextProps)\n\t\t\t|| !shallowEqual(this.state, nextState)\n\t\t\t|| !shallowEqual(this.context, nextContext);\n\t}\n}\n\nexport default PureComponent;\n","export const strokeDashTypes = [\n\t\"Solid\",\n\t\"ShortDash\",\n\t\"ShortDash2\",\n\t\"ShortDot\",\n\t\"ShortDashDot\",\n\t\"ShortDashDotDot\",\n\t\"Dot\",\n\t\"Dash\",\n\t\"LongDash\",\n\t\"DashDot\",\n\t\"LongDashDot\",\n\t\"LongDashDotDot\",\n];\n\nexport function getStrokeDasharrayCanvas(type) {\n\tconst a = getStrokeDasharray(type).split(\",\");\n\n\tif (a.length === 1) return [];\n\n\treturn a.map(d => Number(d));\n\n}\nexport const getStrokeDasharray = (type) => {\n\tswitch (type) {\n\t\tdefault:\n\t\tcase \"Solid\":\n\t\t\treturn \"none\";\n\t\tcase \"ShortDash\":\n\t\t\treturn \"6, 2\";\n\t\tcase \"ShortDash2\":\n\t\t\treturn \"6, 3\";\n\t\tcase \"ShortDot\":\n\t\t\treturn \"2, 2\";\n\t\tcase \"ShortDashDot\":\n\t\t\treturn \"6, 2, 2, 2\";\n\t\tcase \"ShortDashDotDot\":\n\t\t\treturn \"6, 2, 2, 2, 2, 2\";\n\t\tcase \"Dot\":\n\t\t\treturn \"2, 6\";\n\t\tcase \"Dash\":\n\t\t\treturn \"8, 6\";\n\t\tcase \"LongDash\":\n\t\t\treturn \"16, 6\";\n\t\tcase \"DashDot\":\n\t\t\treturn \"8, 6, 2, 6\";\n\t\tcase \"LongDashDot\":\n\t\t\treturn \"16, 6, 2, 6\";\n\t\tcase \"LongDashDotDot\":\n\t\t\treturn \"16, 6, 2, 6, 2, 6\";\n\t}\n};\n","\n\n\nimport { scaleOrdinal, schemeCategory10 } from \"d3-scale\";\nimport { bisector } from \"d3-array\";\nimport noop from \"./noop\";\nimport identity from \"./identity\";\n\nexport { default as rebind } from \"./rebind\";\nexport { default as zipper } from \"./zipper\";\nexport { default as merge } from \"./merge\";\nexport { default as slidingWindow } from \"./slidingWindow\";\nexport { default as identity } from \"./identity\";\nexport { default as noop } from \"./noop\";\nexport { default as shallowEqual } from \"./shallowEqual\";\nexport { default as mappedSlidingWindow } from \"./mappedSlidingWindow\";\nexport { default as accumulatingWindow } from \"./accumulatingWindow\";\nexport { default as PureComponent } from \"./PureComponent\";\n\nexport * from \"./barWidth\";\nexport * from \"./strokeDasharray\";\n\nexport function getLogger(prefix) {\n\tlet logger = noop;\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlogger = require(\"debug\")(\"react-stockcharts:\" + prefix);\n\t}\n\treturn logger;\n}\n\nexport function sign(x) {\n\treturn (x > 0) - (x < 0);\n}\n\nexport const yes = () => true;\n\nexport function path(loc = []) {\n\tconst key = Array.isArray(loc) ? loc : [loc];\n\tconst length = key.length;\n\n\treturn function(obj, defaultValue) {\n\t\tif (length === 0) return isDefined(obj) ? obj : defaultValue;\n\n\t\tlet index = 0;\n\t\twhile (obj != null && index < length) {\n\t\t\tobj = obj[key[index++]];\n\t\t}\n\t\treturn (index === length) ? obj : defaultValue;\n\t};\n}\n\nexport function functor(v) {\n\treturn typeof v === \"function\" ? v : () => v;\n}\n\nexport function createVerticalLinearGradient(stops) {\n\treturn function(moreProps, ctx) {\n\t\tconst { chartConfig: { height } } = moreProps;\n\n\t\tconst grd = ctx.createLinearGradient(0, height, 0, 0);\n\t\tstops.forEach(each => {\n\t\t\tgrd.addColorStop(each.stop, each.color);\n\t\t});\n\n\t\treturn grd;\n\t};\n}\n\nexport function getClosestItemIndexes2(array, value, accessor) {\n\tlet left = bisector(accessor).left(array, value);\n\tleft = Math.max(left - 1, 0);\n\tlet right = Math.min(left + 1, array.length - 1);\n\n\tconst item = accessor(array[left]);\n\tif (item >= value && item <= value) right = left;\n\n\treturn { left, right };\n}\n\nexport function degrees(radians) {\n\treturn radians * 180 / Math.PI;\n}\n\nexport function radians(degrees) {\n\treturn degrees * Math.PI / 180;\n}\n\nexport function getClosestValue(inputValue, currentValue) {\n\tconst values = isArray(inputValue) ? inputValue : [inputValue];\n\n\tconst diff = values\n\t\t.map(each => each - currentValue)\n\t\t.reduce((diff1, diff2) => Math.abs(diff1) < Math.abs(diff2) ? diff1 : diff2);\n\treturn currentValue + diff;\n}\n\nexport function find(list, predicate, context = this) {\n\tfor (let i = 0; i < list.length; ++i) {\n\t\tif (predicate.call(context, list[i], i, list)) {\n\t\t\treturn list[i];\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function d3Window(node) {\n\tconst d3win = node\n\t\t&& (node.ownerDocument && node.ownerDocument.defaultView\n\t\t\t|| node.document && node\n\t\t\t|| node.defaultView);\n\treturn d3win;\n}\n\nexport const MOUSEENTER = \"mouseenter.interaction\";\nexport const MOUSELEAVE = \"mouseleave.interaction\";\nexport const MOUSEMOVE = \"mousemove.pan\";\nexport const MOUSEUP = \"mouseup.pan\";\nexport const TOUCHMOVE = \"touchmove.pan\";\nexport const TOUCHEND = \"touchend.pan touchcancel.pan\";\n\n\nexport function getTouchProps(touch) {\n\tif (!touch) return {};\n\treturn {\n\t\tpageX: touch.pageX,\n\t\tpageY: touch.pageY,\n\t\tclientX: touch.clientX,\n\t\tclientY: touch.clientY\n\t};\n}\n\nexport function getClosestItemIndexes(array, value, accessor, log) {\n\tlet lo = 0, hi = array.length - 1;\n\twhile (hi - lo > 1) {\n\t\tconst mid = Math.round((lo + hi) / 2);\n\t\tif (accessor(array[mid]) <= value) {\n\t\t\tlo = mid;\n\t\t} else {\n\t\t\thi = mid;\n\t\t}\n\t}\n\t// for Date object === does not work, so using the <= in combination with >=\n\t// the same code works for both dates and numbers\n\tif (accessor(array[lo]).valueOf() === value.valueOf()) hi = lo;\n\tif (accessor(array[hi]).valueOf() === value.valueOf()) lo = hi;\n\n\tif (accessor(array[lo]) < value && accessor(array[hi]) < value) lo = hi;\n\tif (accessor(array[lo]) > value && accessor(array[hi]) > value) hi = lo;\n\n\tif (log) {\n\t\t// console.log(lo, accessor(array[lo]), value, accessor(array[hi]), hi);\n\t\t// console.log(accessor(array[lo]), lo, value, accessor(array[lo]) >= value);\n\t\t// console.log(value, hi, accessor(array[hi]), accessor(array[lo]) <= value);\n\t}\n\t// var left = value > accessor(array[lo]) ? lo : lo;\n\t// var right = gte(value, accessor(array[hi])) ? Math.min(hi + 1, array.length - 1) : hi;\n\n\t// console.log(value, accessor(array[left]), accessor(array[right]));\n\treturn { left: lo, right: hi };\n}\n\nexport function getClosestItem(array, value, accessor, log) {\n\tconst { left, right } = getClosestItemIndexes(array, value, accessor, log);\n\n\tif (left === right) {\n\t\treturn array[left];\n\t}\n\n\tconst closest = (Math.abs(accessor(array[left]) - value) < Math.abs(accessor(array[right]) - value))\n\t\t? array[left]\n\t\t: array[right];\n\tif (log) {\n\t\tconsole.log(array[left], array[right], closest, left, right);\n\t}\n\treturn closest;\n}\n\nexport const overlayColors = scaleOrdinal(schemeCategory10);\n\nexport function head(array, accessor) {\n\tif (accessor && array) {\n\t\tlet value;\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tvalue = array[i];\n\t\t\tif (isDefined(accessor(value))) return value;\n\t\t}\n\t\treturn undefined;\n\t}\n\treturn array ? array[0] : undefined;\n}\n\nexport function tail(array, accessor) {\n\tif (accessor && array) {\n\t\treturn array.map(accessor).slice(1);\n\t}\n\treturn array ? array.slice(1) : undefined;\n}\n\nexport const first = head;\n\nexport function last(array, accessor) {\n\tif (accessor && array) {\n\t\tlet value;\n\t\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\t\tvalue = array[i];\n\t\t\tif (isDefined(accessor(value))) return value;\n\t\t}\n\t\treturn undefined;\n\t}\n\tconst length = array ? array.length : 0;\n\treturn length ? array[length - 1] : undefined;\n}\n\nexport function isDefined(d) {\n\treturn d !== null && typeof d != \"undefined\";\n}\n\nexport function isNotDefined(d) {\n\treturn !isDefined(d);\n}\n\nexport function isObject(d) {\n\treturn isDefined(d) && typeof d === \"object\" && !Array.isArray(d);\n}\n\nexport const isArray = Array.isArray;\n\nexport function touchPosition(touch, e) {\n\tconst container = e.target,\n\t\trect = container.getBoundingClientRect(),\n\t\tx = touch.clientX - rect.left - container.clientLeft,\n\t\ty = touch.clientY - rect.top - container.clientTop,\n\t\txy = [Math.round(x), Math.round(y)];\n\treturn xy;\n}\n\nexport function mousePosition(e, defaultRect) {\n\tconst container = e.currentTarget;\n\tconst rect = defaultRect || container.getBoundingClientRect(),\n\t\tx = e.clientX - rect.left - container.clientLeft,\n\t\ty = e.clientY - rect.top - container.clientTop,\n\t\txy = [Math.round(x), Math.round(y)];\n\treturn xy;\n}\n\n\nexport function clearCanvas(canvasList, ratio) {\n\tcanvasList.forEach(each => {\n\t\teach.setTransform(1, 0, 0, 1, 0, 0);\n\t\teach.clearRect(-1, -1, each.canvas.width + 2, each.canvas.height + 2);\n\t\teach.scale(ratio, ratio);\n\t});\n}\n\nexport function capitalizeFirst(str) {\n\treturn str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function hexToRGBA(inputHex, opacity) {\n\tconst hex = inputHex.replace(\"#\", \"\");\n\tif (inputHex.indexOf(\"#\") > -1 && (hex.length === 3 || hex.length === 6)) {\n\n\t\tconst multiplier = (hex.length === 3) ? 1 : 2;\n\n\t\tconst r = parseInt(hex.substring(0, 1 * multiplier), 16);\n\t\tconst g = parseInt(hex.substring(1 * multiplier, 2 * multiplier), 16);\n\t\tconst b = parseInt(hex.substring(2 * multiplier, 3 * multiplier), 16);\n\n\t\tconst result = `rgba(${ r }, ${ g }, ${ b }, ${ opacity })`;\n\n\t\treturn result;\n\t}\n\treturn inputHex;\n}\n\nexport function toObject(array, iteratee = identity) {\n\treturn array.reduce((returnObj, a) => {\n\t\tconst [key, value] = iteratee(a);\n\t\treturn {\n\t\t\t...returnObj,\n\t\t\t[key]: value\n\t\t};\n\t}, {});\n}\n\n// copied from https://github.com/lodash/lodash/blob/master/mapValue.js\nexport function mapValue(object, iteratee) {\n\tobject = Object(object);\n\t// eslint-disable-next-line prefer-const\n\tlet result = {};\n\n\tObject.keys(object).forEach(key => {\n\t\tconst mappedValue = iteratee(object[key], key, object);\n\n\t\tif (isDefined(mappedValue)) {\n\t\t\tresult[key] = mappedValue;\n\t\t}\n\t});\n\treturn result;\n}\n\n// copied from https://github.com/lodash/lodash/blob/master/mapObject.js\nexport function mapObject(object = {}, iteratee = identity) {\n\tconst props = Object.keys(object);\n\n\t// eslint-disable-next-line prefer-const\n\tlet result = new Array(props.length);\n\n\tprops.forEach((key, index) => {\n\t\tresult[index] = iteratee(object[key], key, object);\n\t});\n\treturn result;\n}\n\nexport function replaceAtIndex(array, index, value) {\n\tif (isDefined(array) && array.length > index) {\n\t\treturn array.slice(0, index)\n\t\t\t.concat(value)\n\t\t\t.concat(array.slice(index + 1));\n\t}\n\treturn array;\n}\n\n// copied from https://github.com/lodash/lodash/blob/master/forOwn.js\nexport function forOwn(obj, iteratee) {\n\tconst object = Object(obj);\n\tObject.keys(object)\n\t\t.forEach(key => iteratee(object[key], key, object));\n}","\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { scaleLinear } from \"d3-scale\";\n\nimport PureComponent from \"./utils/PureComponent\";\nimport {\n\tisNotDefined,\n\tnoop,\n\tfind,\n} from \"./utils\";\n\nclass Chart extends PureComponent {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\t\tthis.yScale = this.yScale.bind(this);\n\t\tthis.listener = this.listener.bind(this);\n\t}\n\tcomponentWillMount() {\n\t\tconst { id } = this.props;\n\t\tconst { subscribe } = this.context;\n\t\tsubscribe(\"chart_\" + id,\n\t\t\t{\n\t\t\t\tlistener: this.listener,\n\t\t\t}\n\t\t);\n\t}\n\tcomponentWillUnmount() {\n\t\tconst { id } = this.props;\n\t\tconst { unsubscribe } = this.context;\n\t\tunsubscribe(\"chart_\" + id);\n\t}\n\tlistener(type, moreProps, state, e) {\n\t\tconst { id, onContextMenu } = this.props;\n\n\t\tif (type === \"contextmenu\") {\n\t\t\tconst { currentCharts } = moreProps;\n\t\t\tif (currentCharts.indexOf(id) > -1) {\n\t\t\t\tonContextMenu(moreProps, e);\n\t\t\t}\n\t\t}\n\t}\n\tyScale() {\n\t\tconst chartConfig = find(this.context.chartConfig, each => each.id === this.props.id);\n\t\treturn chartConfig.yScale.copy();\n\t}\n\tgetChildContext() {\n\t\tconst { id: chartId } = this.props;\n\t\tconst chartConfig = find(this.context.chartConfig, each => each.id === chartId);\n\n\t\treturn {\n\t\t\tchartId,\n\t\t\tchartConfig,\n\t\t};\n\t}\n\trender() {\n\t\tconst { origin } = find(this.context.chartConfig, each => each.id === this.props.id);\n\t\tconst [x, y] = origin;\n\n\t\treturn <g transform={`translate(${ x }, ${ y })`}>{this.props.children}</g>;\n\t}\n}\n\nChart.propTypes = {\n\theight: PropTypes.number,\n\torigin: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tid: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\tyExtents: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tyExtentsCalculator: function(props, propName, componentName) {\n\t\tif (isNotDefined(props.yExtents) && typeof props.yExtentsCalculator !== \"function\")\n\t\t\treturn new Error(\"yExtents or yExtentsCalculator must\"\n\t\t\t\t+ ` be present on ${componentName}. Validation failed.`);\n\t},\n\tonContextMenu: PropTypes.func,\n\tyScale: PropTypes.func,\n\n\tflipYScale: PropTypes.bool,\n\tpadding: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.shape({\n\t\t\ttop: PropTypes.number,\n\t\t\tbottom: PropTypes.number,\n\t\t})\n\t]),\n\tchildren: PropTypes.node,\n};\n\nChart.defaultProps = {\n\tid: 0,\n\torigin: [0, 0],\n\tpadding: 0,\n\tyScale: scaleLinear(),\n\tflipYScale: false,\n\tyPan: true,\n\tyPanEnabled: false,\n\tonContextMenu: noop,\n};\n\nChart.contextTypes = {\n\tchartConfig: PropTypes.array,\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n};\n\nChart.childContextTypes = {\n\tchartConfig: PropTypes.object.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n};\n\nexport default Chart;\n","\n\nimport React from \"react\";\nimport { extent } from \"d3-array\";\nimport { set } from \"d3-collection\";\nimport flattenDeep from \"lodash.flattendeep\";\n\nimport Chart from \"../Chart\";\n\nimport {\n\tlast,\n\tisObject,\n\tgetClosestItem,\n\tzipper,\n\tisDefined,\n\tisNotDefined,\n\tfunctor,\n\tmapObject,\n\tfind,\n\tshallowEqual\n} from \"./index\";\n\nexport function getChartOrigin(origin, contextWidth, contextHeight) {\n\tconst originCoordinates = typeof origin === \"function\"\n\t\t? origin(contextWidth, contextHeight)\n\t\t: origin;\n\treturn originCoordinates;\n}\n\nexport function getDimensions({ width, height }, chartProps) {\n\n\tconst chartHeight = (chartProps.height || height);\n\n\treturn {\n\t\tavailableHeight: height,\n\t\twidth,\n\t\theight: chartHeight\n\t};\n}\n\nfunction values(func) {\n\treturn (d) => {\n\t\tconst obj = func(d);\n\t\tif (isObject(obj)) {\n\t\t\treturn mapObject(obj);\n\t\t}\n\t\treturn obj;\n\t};\n}\n\nfunction isArraySize2AndNumber(yExtentsProp) {\n\tif (Array.isArray(yExtentsProp) && yExtentsProp.length === 2) {\n\t\tconst [a, b] = yExtentsProp;\n\t\treturn (typeof a == \"number\" && typeof b == \"number\");\n\t}\n\treturn false;\n}\n\nexport function getNewChartConfig(innerDimension, children, existingChartConfig = []) {\n\treturn React.Children.map(children, (each) => {\n\t\tif (each && each.type.toString() === Chart.toString()) {\n\t\t\tconst chartProps = {\n\t\t\t\t...Chart.defaultProps,\n\t\t\t\t...each.props\n\t\t\t};\n\t\t\tconst {\n\t\t\t\tid,\n\t\t\t\torigin,\n\t\t\t\tpadding,\n\t\t\t\tyExtents: yExtentsProp,\n\t\t\t\tyScale: yScaleProp,\n\t\t\t\tflipYScale,\n\t\t\t\tyExtentsCalculator\n\t\t\t} = chartProps;\n\n\t\t\tconst yScale = yScaleProp.copy();\n\t\t\tconst {\n\t\t\t\twidth, height, availableHeight\n\t\t\t} = getDimensions(innerDimension, chartProps);\n\n\t\t\tconst { yPan } = chartProps;\n\t\t\tlet { yPanEnabled } = chartProps;\n\t\t\t// var { yMousePointerRectWidth: rectWidth, yMousePointerRectHeight: rectHeight, yMousePointerArrowWidth: arrowWidth } = each.props;\n\t\t\t// var mouseCoordinates = { at, yDisplayFormat, rectHeight, rectWidth, arrowWidth };\n\t\t\tconst yExtents = isDefined(yExtentsProp)\n\t\t\t\t? (Array.isArray(yExtentsProp) ? yExtentsProp : [yExtentsProp]).map(functor)\n\t\t\t\t: undefined;\n\n\t\t\tconst prevChartConfig = find(existingChartConfig, d => d.id === id);\n\n\t\t\tif (isArraySize2AndNumber(yExtentsProp)) {\n\t\t\t\tif (\n\t\t\t\t\tisDefined(prevChartConfig)\n\t\t\t\t\t&& prevChartConfig.yPan\n\t\t\t\t\t&& prevChartConfig.yPanEnabled\n\t\t\t\t\t&& yPan\n\t\t\t\t\t&& yPanEnabled\n\t\t\t\t\t&& shallowEqual(prevChartConfig.originalYExtentsProp, yExtentsProp)\n\t\t\t\t) {\n\t\t\t\t\t// console.log(prevChartConfig.originalYExtentsProp, yExtentsProp)\n\t\t\t\t\t// console.log(prevChartConfig.yScale.domain())\n\t\t\t\t\tyScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t} else {\n\t\t\t\t\tconst [a, b] = yExtentsProp;\n\t\t\t\t\tyScale.domain([a, b]);\n\t\t\t\t}\n\t\t\t} else if (isDefined(prevChartConfig) && prevChartConfig.yPanEnabled) {\n\t\t\t\tif (isArraySize2AndNumber(prevChartConfig.originalYExtentsProp)) {\n\t\t\t\t\t// do nothing\n\t\t\t\t} else {\n\t\t\t\t\tyScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t\tyPanEnabled = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\torigin: functor(origin)(width, availableHeight),\n\t\t\t\tpadding,\n\t\t\t\toriginalYExtentsProp: yExtentsProp,\n\t\t\t\tyExtents,\n\t\t\t\tyExtentsCalculator,\n\t\t\t\tflipYScale,\n\t\t\t\t// yScale: setRange(yScale.copy(), height, padding, flipYScale),\n\t\t\t\tyScale: yScale,\n\t\t\t\tyPan,\n\t\t\t\tyPanEnabled,\n\t\t\t\t// mouseCoordinates,\n\t\t\t\twidth,\n\t\t\t\theight\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}).filter(each => isDefined(each));\n}\nexport function getCurrentCharts(chartConfig, mouseXY) {\n\tconst currentCharts = chartConfig.filter(eachConfig => {\n\t\tconst top = eachConfig.origin[1];\n\t\tconst bottom = top + eachConfig.height;\n\t\treturn (mouseXY[1] > top && mouseXY[1] < bottom);\n\t}).map(config => config.id);\n\n\treturn currentCharts;\n}\n\nfunction setRange(scale, height, padding, flipYScale) {\n\tif (scale.rangeRoundPoints || isNotDefined(scale.invert)) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\tif (scale.rangeRoundPoints) scale.rangeRoundPoints(flipYScale ? [0, height] : [height, 0], padding);\n\t\tif (scale.rangeRound) scale.range(flipYScale ? [0, height] : [height, 0]).padding(padding);\n\t} else {\n\t\tconst { top, bottom } = isNaN(padding)\n\t\t\t? padding\n\t\t\t: { top: padding, bottom: padding };\n\n\t\tscale.range(flipYScale ? [top, height - bottom] : [height - bottom, top]);\n\t}\n\treturn scale;\n}\n\nfunction yDomainFromYExtents(yExtents, yScale, plotData) {\n\tconst yValues = yExtents.map(eachExtent =>\n\t\tplotData.map(values(eachExtent)));\n\n\tconst allYValues = flattenDeep(yValues);\n\t// console.log(allYValues)\n\tconst realYDomain = (yScale.invert)\n\t\t? extent(allYValues)\n\t\t: set(allYValues).values();\n\n\treturn realYDomain;\n}\n\n\nexport function getChartConfigWithUpdatedYScales(\n\tchartConfig,\n\t{ plotData, xAccessor, displayXAccessor, fullData },\n\txDomain,\n\tdy,\n\tchartsToPan\n) {\n\tconst yDomains = chartConfig\n\t\t.map(({ yExtentsCalculator, yExtents, yScale }) => {\n\n\t\t\tconst realYDomain = isDefined(yExtentsCalculator)\n\t\t\t\t? yExtentsCalculator({ plotData, xDomain, xAccessor, displayXAccessor, fullData })\n\t\t\t\t: yDomainFromYExtents(yExtents, yScale, plotData);\n\n\t\t\t// console.log(\"yScale.domain() ->\", yScale.domain())\n\n\t\t\tconst yDomainDY = isDefined(dy)\n\t\t\t\t? yScale.range().map(each => each - dy).map(yScale.invert)\n\t\t\t\t: yScale.domain();\n\t\t\treturn {\n\t\t\t\trealYDomain,\n\t\t\t\tyDomainDY,\n\t\t\t\tprevYDomain: yScale.domain(),\n\t\t\t};\n\t\t});\n\n\tconst combine = zipper()\n\t\t.combine((config, { realYDomain, yDomainDY, prevYDomain }) => {\n\t\t\tconst { id, padding, height, yScale, yPan, flipYScale, yPanEnabled = false } = config;\n\n\t\t\tconst another = isDefined(chartsToPan)\n\t\t\t\t? chartsToPan.indexOf(id) > -1\n\t\t\t\t: true;\n\t\t\tconst domain = yPan && yPanEnabled\n\t\t\t\t? another ? yDomainDY : prevYDomain\n\t\t\t\t: realYDomain;\n\n\t\t\t// console.log(id, yPan, yPanEnabled, another);\n\t\t\t// console.log(domain, realYDomain, prevYDomain);\n\t\t\tconst newYScale = setRange(\n\t\t\t\tyScale.copy().domain(domain), height, padding, flipYScale\n\t\t\t);\n\t\t\treturn {\n\t\t\t\t...config,\n\t\t\t\tyScale: newYScale,\n\t\t\t\trealYDomain: realYDomain,\n\t\t\t};\n\t\t\t// return { ...config, yScale: yScale.copy().domain(domain).range([height - padding, padding]) };\n\t\t});\n\n\tconst updatedChartConfig = combine(chartConfig, yDomains);\n\t// console.error(yDomains, dy, chartsToPan, updatedChartConfig.map(d => d.yScale.domain()));\n\t// console.log(updatedChartConfig.map(d => ({ id: d.id, domain: d.yScale.domain() })))\n\n\treturn updatedChartConfig;\n}\n\nexport function getCurrentItem(xScale, xAccessor, mouseXY, plotData) {\n\tlet xValue, item;\n\tif (xScale.invert) {\n\t\txValue = xScale.invert(mouseXY[0]);\n\t\titem = getClosestItem(plotData, xValue, xAccessor);\n\t} else {\n\t\tconst d = xScale.range().map((d, idx) => ({ x: Math.abs(d - mouseXY[0]), idx })).reduce((a, b) => a.x < b.x ? a : b);\n\t\titem = isDefined(d) ? plotData[d.idx] : plotData[0];\n\t\t// console.log(d, item);\n\t}\n\treturn item;\n}\n\nexport function getXValue(xScale, xAccessor, mouseXY, plotData) {\n\n\tlet xValue, item;\n\tif (xScale.invert) {\n\t\txValue = xScale.invert(mouseXY[0]);\n\t\tif (xValue > xAccessor(last(plotData)) && xScale.value) {\n\t\t\treturn Math.round(xValue);\n\t\t} else {\n\t\t\titem = getClosestItem(plotData, xValue, xAccessor);\n\t\t}\n\t} else {\n\t\tconst d = xScale.range().map((d, idx) => ({ x: Math.abs(d - mouseXY[0]), idx })).reduce((a, b) => a.x < b.x ? a : b);\n\t\titem = isDefined(d) ? plotData[d.idx] : plotData[0];\n\t\t// console.log(d, item);\n\t}\n\treturn xAccessor(item);\n}\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { select, event as d3Event, mouse, touches } from \"d3-selection\";\n\nimport {\n\tisDefined, mousePosition, touchPosition, getTouchProps,\n\td3Window,\n\tMOUSEMOVE, MOUSEUP,\n\tMOUSEENTER, MOUSELEAVE,\n\tTOUCHMOVE, TOUCHEND,\n\tnoop\n} from \"./utils\";\nimport { getCurrentCharts } from \"./utils/ChartDataUtil\";\n// import { clearTimeout, setTimeout } from \"timers\";\n\nclass EventCapture extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleEnter = this.handleEnter.bind(this);\n\t\tthis.handleLeave = this.handleLeave.bind(this);\n\t\tthis.handleWheel = this.handleWheel.bind(this);\n\t\tthis.handleMouseMove = this.handleMouseMove.bind(this);\n\t\tthis.handleMouseDown = this.handleMouseDown.bind(this);\n\t\tthis.handlePanEnd = this.handlePanEnd.bind(this);\n\t\tthis.handlePan = this.handlePan.bind(this);\n\t\tthis.handleTouchStart = this.handleTouchStart.bind(this);\n\t\tthis.handleTouchMove = this.handleTouchMove.bind(this);\n\t\tthis.handlePinchZoom = this.handlePinchZoom.bind(this);\n\t\tthis.handlePinchZoomEnd = this.handlePinchZoomEnd.bind(this);\n\n\t\tthis.handleClick = this.handleClick.bind(this);\n\n\t\tthis.handleRightClick = this.handleRightClick.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\n\t\tthis.shouldPan = this.shouldPan.bind(this);\n\t\tthis.canPan = this.canPan.bind(this);\n\n\t\tthis.setCursorClass = this.setCursorClass.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\n\t\tthis.mouseInside = false;\n\n\t\tthis.mouseInteraction = true;\n\t\tthis.state = {\n\t\t\tpanInProgress: false,\n\t\t};\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\tcomponentWillMount() {\n\t\tthis.focus = this.props.focus;\n\t}\n\tcomponentDidMount() {\n\t\tif (this.node) {\n\t\t\tselect(this.node)\n\t\t\t\t.on(MOUSEENTER, this.handleEnter)\n\t\t\t\t.on(MOUSELEAVE, this.handleLeave);\n\t\t}\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.componentDidMount();\n\t}\n\tcomponentWillUnmount() {\n\t\tif (this.node) {\n\t\t\tselect(this.node)\n\t\t\t\t.on(MOUSEENTER, null)\n\t\t\t\t.on(MOUSELEAVE, null);\n\t\t\tconst win = d3Window(this.node);\n\t\t\tselect(win)\n\t\t\t\t.on(MOUSEMOVE, null);\n\t\t}\n\t}\n\thandleEnter() {\n\t\tconst e = d3Event;\n\n\t\tconst { onMouseEnter } = this.props;\n\t\tthis.mouseInside = true;\n\t\tif (!this.state.panInProgress\n\t\t\t\t&& !this.state.dragInProgress) {\n\t\t\tconst win = d3Window(this.node);\n\t\t\tselect(win)\n\t\t\t\t.on(MOUSEMOVE, this.handleMouseMove);\n\t\t}\n\t\tonMouseEnter(e);\n\t}\n\thandleLeave(e) {\n\t\tconst { onMouseLeave } = this.props;\n\t\tthis.mouseInside = false;\n\t\tif (!this.state.panInProgress\n\t\t\t\t&& !this.state.dragInProgress) {\n\t\t\tconst win = d3Window(this.node);\n\t\t\tselect(win)\n\t\t\t\t.on(MOUSEMOVE, null);\n\t\t}\n\t\tonMouseLeave(e);\n\t}\n\thandleWheel(e) {\n\t\tconst { zoom, onZoom } = this.props;\n\t\tconst { panInProgress } = this.state;\n\n\t\tconst yZoom = Math.abs(e.deltaY) > Math.abs(e.deltaX) && Math.abs(e.deltaY) > 0;\n\t\t// const xPan = Math.abs(e.deltaY) < Math.abs(e.deltaX) && Math.abs(e.deltaX) > 0;\n\t\tconst mouseXY = mousePosition(e);\n\t\te.preventDefault();\n\n\t\tif (zoom && this.focus && yZoom && !panInProgress) {\n\t\t\tconst zoomDir = e.deltaY > 0 ? 1 : -1;\n\n\t\t\tonZoom(zoomDir, mouseXY, e);\n\t\t} else if (this.focus) {\n\t\t\tif (this.shouldPan()) {\n\t\t\t\t// console.log(\"Do pan now...\")\n\t\t\t\t// pan already in progress\n\t\t\t\tconst {\n\t\t\t\t\tpanStartXScale,\n\t\t\t\t\tchartsToPan\n\t\t\t\t} = this.state.panStart;\n\t\t\t\tthis.lastNewPos = mouseXY;\n\t\t\t\tthis.panHappened = true;\n\n\t\t\t\tthis.dx += e.deltaX;\n\t\t\t\tthis.dy += e.deltaY;\n\t\t\t\tconst dxdy = { dx: this.dx, dy: this.dy };\n\n\t\t\t\tthis.props.onPan(mouseXY, panStartXScale, dxdy, chartsToPan, e);\n\t\t\t} else {\n\t\t\t\t// console.log(\"Pan start...\")\n\t\t\t\t// pan start\n\n\t\t\t\tconst { xScale, chartConfig } = this.props;\n\t\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\t\t\tthis.dx = 0;\n\t\t\t\tthis.dy = 0;\n\t\t\t\tthis.setState({\n\t\t\t\t\tpanInProgress: true,\n\t\t\t\t\tpanStart: {\n\t\t\t\t\t\tpanStartXScale: xScale,\n\t\t\t\t\t\tpanOrigin: mouseXY,\n\t\t\t\t\t\tchartsToPan: currentCharts\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.queuePanEnd();\n\t\t}\n\t}\n\tqueuePanEnd() {\n\t\tif (isDefined(this.panEndTimeout)) {\n\t\t\tclearTimeout(this.panEndTimeout);\n\t\t}\n\t\tthis.panEndTimeout = setTimeout(() => {\n\t\t\tthis.handlePanEnd();\n\t\t}, 100);\n\t}\n\thandleMouseMove() {\n\t\tconst e = d3Event;\n\n\t\tconst { onMouseMove, mouseMove } = this.props;\n\n\t\tif (this.mouseInteraction\n\t\t\t\t&& mouseMove\n\t\t\t\t&& !this.state.panInProgress) {\n\n\t\t\tconst newPos = mouse(this.node);\n\n\t\t\tonMouseMove(newPos, \"mouse\", e);\n\t\t}\n\t}\n\thandleClick(e) {\n\t\tconst mouseXY = mousePosition(e);\n\t\tconst { onClick, onDoubleClick } = this.props;\n\n\t\tif (!this.panHappened && !this.dragHappened) {\n\t\t\tif (this.clicked) {\n\t\t\t\tonDoubleClick(mouseXY, e);\n\t\t\t\tthis.clicked = false;\n\t\t\t} else {\n\t\t\t\tonClick(mouseXY, e);\n\t\t\t\tthis.clicked = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.clicked) {\n\t\t\t\t\t\tthis.clicked = false;\n\t\t\t\t\t}\n\t\t\t\t}, 400);\n\t\t\t}\n\t\t}\n\t}\n\thandleRightClick(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tconst { onContextMenu, onPanEnd } = this.props;\n\n\t\tconst mouseXY = mousePosition(e, this.node.getBoundingClientRect());\n\n\t\tif (isDefined(this.state.panStart)) {\n\t\t\tconst { panStartXScale, panOrigin, chartsToPan } = this.state.panStart;\n\t\t\tif (this.panHappened) {\n\t\t\t\tonPanEnd(mouseXY, panStartXScale, panOrigin, chartsToPan, e);\n\t\t\t}\n\t\t\tconst win = d3Window(this.node);\n\t\t\tselect(win)\n\t\t\t\t.on(MOUSEMOVE, null)\n\t\t\t\t.on(MOUSEUP, null);\n\n\t\t\tthis.setState({\n\t\t\t\tpanInProgress: false,\n\t\t\t\tpanStart: null,\n\t\t\t});\n\t\t}\n\n\t\tonContextMenu(mouseXY, e);\n\t}\n\n\thandleDrag() {\n\t\tconst e = d3Event;\n\t\tif (this.props.onDrag) {\n\t\t\tthis.dragHappened = true;\n\t\t\tconst mouseXY = mouse(this.node);\n\t\t\tthis.props.onDrag({\n\t\t\t\tstartPos: this.state.dragStartPosition,\n\t\t\t\tmouseXY\n\t\t\t}, e);\n\t\t}\n\t}\n\tcancelDrag() {\n\t\tconst win = d3Window(this.node);\n\t\tselect(win)\n\t\t\t.on(MOUSEMOVE, this.mouseInside ? this.handleMouseMove : null)\n\t\t\t.on(MOUSEUP, null);\n\n\t\tthis.setState({\n\t\t\tdragInProgress: false,\n\t\t});\n\t\tthis.mouseInteraction = true;\n\t}\n\thandleDragEnd() {\n\t\tconst e = d3Event;\n\t\tconst mouseXY = mouse(this.node);\n\n\t\tconst win = d3Window(this.node);\n\t\tselect(win)\n\t\t\t.on(MOUSEMOVE, this.mouseInside ? this.handleMouseMove : null)\n\t\t\t.on(MOUSEUP, null);\n\n\t\tif (this.dragHappened) {\n\t\t\tthis.props.onDragComplete({\n\t\t\t\tmouseXY\n\t\t\t}, e);\n\t\t}\n\n\t\tthis.setState({\n\t\t\tdragInProgress: false,\n\t\t});\n\t\tthis.mouseInteraction = true;\n\t}\n\tcanPan() {\n\t\tconst { getAllPanConditions } = this.props;\n\t\tconst { pan: initialPanEnabled } = this.props;\n\n\t\tconst {\n\t\t\tpanEnabled,\n\t\t\tdraggable: somethingSelected\n\t\t} = getAllPanConditions()\n\t\t\t.reduce((returnObj, a) => {\n\t\t\t\treturn {\n\t\t\t\t\tdraggable: returnObj.draggable || a.draggable,\n\t\t\t\t\tpanEnabled: returnObj.panEnabled && a.panEnabled,\n\t\t\t\t};\n\t\t\t}, {\n\t\t\t\tdraggable: false,\n\t\t\t\tpanEnabled: initialPanEnabled,\n\t\t\t});\n\n\t\treturn {\n\t\t\tpanEnabled,\n\t\t\tsomethingSelected\n\t\t};\n\t}\n\thandleMouseDown(e) {\n\t\tif (e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst { xScale, chartConfig, onMouseDown } = this.props;\n\n\t\tthis.panHappened = false;\n\t\tthis.dragHappened = false;\n\t\tthis.focus = true;\n\n\t\tif (!this.state.panInProgress\n\t\t\t&& this.mouseInteraction\n\t\t) {\n\n\t\t\tconst mouseXY = mousePosition(e);\n\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\t\tconst {\n\t\t\t\tpanEnabled, somethingSelected\n\t\t\t} = this.canPan();\n\t\t\tconst pan = panEnabled && !somethingSelected;\n\n\t\t\tif (pan) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tpanInProgress: pan,\n\t\t\t\t\tpanStart: {\n\t\t\t\t\t\tpanStartXScale: xScale,\n\t\t\t\t\t\tpanOrigin: mouseXY,\n\t\t\t\t\t\tchartsToPan: currentCharts\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tconst win = d3Window(this.node);\n\t\t\t\tselect(win)\n\t\t\t\t\t.on(MOUSEMOVE, this.handlePan)\n\t\t\t\t\t.on(MOUSEUP, this.handlePanEnd);\n\n\t\t\t} else if (somethingSelected) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tpanInProgress: false,\n\t\t\t\t\tdragInProgress: true,\n\t\t\t\t\tpanStart: null,\n\t\t\t\t\tdragStartPosition: mouseXY,\n\t\t\t\t});\n\t\t\t\tthis.props.onDragStart({ startPos: mouseXY }, e);\n\t\t\t\t// this.mouseInteraction = false;\n\n\t\t\t\tconst win = d3Window(this.node);\n\t\t\t\tselect(win)\n\t\t\t\t\t.on(MOUSEMOVE, this.handleDrag)\n\t\t\t\t\t.on(MOUSEUP, this.handleDragEnd);\n\t\t\t}\n\n\t\t\tonMouseDown(mouseXY, currentCharts, e);\n\t\t}\n\t\te.preventDefault();\n\t}\n\tshouldPan() {\n\t\tconst { pan: panEnabled, onPan } = this.props;\n\t\treturn panEnabled\n\t\t\t&& onPan\n\t\t\t&& isDefined(this.state.panStart);\n\t}\n\thandlePan() {\n\t\tconst e = d3Event;\n\n\t\tif (this.shouldPan()) {\n\t\t\tthis.panHappened = true;\n\n\t\t\tconst { panStartXScale, panOrigin, chartsToPan } = this.state.panStart;\n\n\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t? mouse(this.node)\n\t\t\t\t: touches(this.node)[0];\n\n\t\t\tthis.lastNewPos = mouseXY;\n\t\t\tconst dx = mouseXY[0] - panOrigin[0];\n\t\t\tconst dy = mouseXY[1] - panOrigin[1];\n\n\t\t\tthis.dx = dx;\n\t\t\tthis.dy = dy;\n\n\t\t\tthis.props.onPan(\n\t\t\t\tmouseXY, panStartXScale, { dx, dy }, chartsToPan, e\n\t\t\t);\n\t\t}\n\t}\n\thandlePanEnd() {\n\t\tconst e = d3Event;\n\t\tconst { pan: panEnabled, onPanEnd } = this.props;\n\n\t\tif (isDefined(this.state.panStart)) {\n\t\t\tconst { panStartXScale, chartsToPan } = this.state.panStart;\n\n\t\t\tconst win = d3Window(this.node);\n\t\t\tselect(win)\n\t\t\t\t.on(MOUSEMOVE, this.mouseInside ? this.handleMouseMove : null)\n\t\t\t\t.on(MOUSEUP, null)\n\t\t\t\t.on(TOUCHMOVE, null)\n\t\t\t\t.on(TOUCHEND, null);\n\n\t\t\tif (this.panHappened\n\t\t\t\t\t// && !this.contextMenuClicked\n\t\t\t\t\t&& panEnabled\n\t\t\t\t\t&& onPanEnd) {\n\t\t\t\tconst { dx, dy } = this;\n\n\t\t\t\t// console.log(dx, dy)\n\t\t\t\tdelete this.dx;\n\t\t\t\tdelete this.dy;\n\t\t\t\tonPanEnd(this.lastNewPos, panStartXScale, { dx, dy }, chartsToPan, e);\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\tpanInProgress: false,\n\t\t\t\tpanStart: null,\n\t\t\t});\n\t\t}\n\t}\n\thandleTouchMove(e) {\n\t\tconst { onMouseMove } = this.props;\n\t\tconst touchXY = touchPosition(getTouchProps(e.touches[0]), e);\n\t\tonMouseMove(touchXY, \"touch\", e);\n\t}\n\thandleTouchStart(e) {\n\t\tthis.mouseInteraction = false;\n\n\t\tconst { pan: panEnabled, chartConfig, onMouseMove } = this.props;\n\t\tconst { xScale, onPanEnd } = this.props;\n\n\t\tif (e.touches.length === 1) {\n\n\t\t\tthis.panHappened = false;\n\t\t\tconst touchXY = touchPosition(getTouchProps(e.touches[0]), e);\n\t\t\tonMouseMove(touchXY, \"touch\", e);\n\n\t\t\tif (panEnabled) {\n\t\t\t\tconst currentCharts = getCurrentCharts(chartConfig, touchXY);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tpanInProgress: true,\n\t\t\t\t\tpanStart: {\n\t\t\t\t\t\tpanStartXScale: xScale,\n\t\t\t\t\t\tpanOrigin: touchXY,\n\t\t\t\t\t\tchartsToPan: currentCharts,\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst win = d3Window(this.node);\n\t\t\t\tselect(win)\n\t\t\t\t\t.on(TOUCHMOVE, this.handlePan, false)\n\t\t\t\t\t.on(TOUCHEND, this.handlePanEnd, false);\n\n\t\t\t}\n\t\t} else if (e.touches.length === 2) {\n\t\t\t// pinch zoom begin\n\t\t\t// do nothing pinch zoom is handled in handleTouchMove\n\t\t\tconst { panInProgress, panStart } = this.state;\n\n\t\t\tif (panInProgress && panEnabled && onPanEnd) {\n\t\t\t\tconst { panStartXScale, panOrigin, chartsToPan } = panStart;\n\n\t\t\t\tconst win = d3Window(this.node);\n\t\t\t\tselect(win)\n\t\t\t\t\t.on(MOUSEMOVE, this.mouseInside ? this.handleMouseMove : null)\n\t\t\t\t\t.on(MOUSEUP, null)\n\t\t\t\t\t.on(TOUCHMOVE, this.handlePinchZoom, false)\n\t\t\t\t\t.on(TOUCHEND, this.handlePinchZoomEnd, false);\n\n\t\t\t\tconst touch1Pos = touchPosition(getTouchProps(e.touches[0]), e);\n\t\t\t\tconst touch2Pos = touchPosition(getTouchProps(e.touches[1]), e);\n\n\t\t\t\tif (this.panHappened\n\t\t\t\t\t\t// && !this.contextMenuClicked\n\t\t\t\t\t\t&& panEnabled\n\t\t\t\t\t\t&& onPanEnd) {\n\n\t\t\t\t\tonPanEnd(this.lastNewPos, panStartXScale, panOrigin, chartsToPan, e);\n\t\t\t\t}\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tpanInProgress: false,\n\t\t\t\t\tpinchZoomStart: {\n\t\t\t\t\t\txScale,\n\t\t\t\t\t\ttouch1Pos,\n\t\t\t\t\t\ttouch2Pos,\n\t\t\t\t\t\trange: xScale.range(),\n\t\t\t\t\t\tchartsToPan,\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\thandlePinchZoom() {\n\t\tconst e = d3Event;\n\t\tconst [touch1Pos, touch2Pos] = touches(this.node);\n\t\tconst { xScale, zoom: zoomEnabled, onPinchZoom } = this.props;\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconst { chartsToPan, ...initialPinch } = this.state.pinchZoomStart;\n\n\t\tif (zoomEnabled && onPinchZoom) {\n\t\t\tonPinchZoom(initialPinch, {\n\t\t\t\ttouch1Pos,\n\t\t\t\ttouch2Pos,\n\t\t\t\txScale,\n\t\t\t}, e);\n\t\t}\n\t}\n\thandlePinchZoomEnd() {\n\t\tconst e = d3Event;\n\n\t\tconst win = d3Window(this.node);\n\t\tselect(win)\n\t\t\t.on(TOUCHMOVE, null)\n\t\t\t.on(TOUCHEND, null);\n\n\t\tconst { zoom: zoomEnabled, onPinchZoomEnd } = this.props;\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconst { chartsToPan, ...initialPinch } = this.state.pinchZoomStart;\n\n\t\tif (zoomEnabled && onPinchZoomEnd) {\n\t\t\tonPinchZoomEnd(initialPinch, e);\n\t\t}\n\n\t\tthis.setState({\n\t\t\tpinchZoomStart: null\n\t\t});\n\t}\n\tsetCursorClass(cursorOverrideClass) {\n\t\tif (cursorOverrideClass !== this.state.cursorOverrideClass) {\n\t\t\tthis.setState({\n\t\t\t\tcursorOverrideClass\n\t\t\t});\n\t\t}\n\t}\n\trender() {\n\t\tconst { height, width, disableInteraction, useCrossHairStyleCursor } = this.props;\n\t\tconst className = this.state.cursorOverrideClass != null\n\t\t\t? this.state.cursorOverrideClass\n\t\t\t: !useCrossHairStyleCursor ? \"\" : this.state.panInProgress\n\t\t\t\t? \"react-stockcharts-grabbing-cursor\"\n\t\t\t\t: \"react-stockcharts-crosshair-cursor\";\n\n\t\tconst interactionProps = disableInteraction || {\n\t\t\tonWheel: this.handleWheel,\n\t\t\tonMouseDown: this.handleMouseDown,\n\t\t\tonClick: this.handleClick,\n\t\t\tonContextMenu: this.handleRightClick,\n\t\t\tonTouchStart: this.handleTouchStart,\n\t\t\tonTouchMove: this.handleTouchMove,\n\t\t};\n\n\t\treturn (\n\t\t\t<rect ref={this.saveNode}\n\t\t\t\tclassName={className}\n\t\t\t\twidth={width}\n\t\t\t\theight={height}\n\t\t\t\tstyle={{ opacity: 0 }}\n\t\t\t\t{...interactionProps}\n\t\t\t/>\n\t\t);\n\t}\n}\n\n// \t\t\t\tonMouseEnter={this.handleEnter}\n//\t\t\t\tonMouseLeave={this.handleLeave}\n\n\nEventCapture.propTypes = {\n\tmouseMove: PropTypes.bool.isRequired,\n\tzoom: PropTypes.bool.isRequired,\n\tpan: PropTypes.bool.isRequired,\n\tpanSpeedMultiplier: PropTypes.number.isRequired,\n\tfocus: PropTypes.bool.isRequired,\n\tuseCrossHairStyleCursor: PropTypes.bool.isRequired,\n\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tchartConfig: PropTypes.array,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisableInteraction: PropTypes.bool.isRequired,\n\n\tgetAllPanConditions: PropTypes.func.isRequired,\n\n\tonMouseMove: PropTypes.func,\n\tonMouseEnter: PropTypes.func,\n\tonMouseLeave: PropTypes.func,\n\tonZoom: PropTypes.func,\n\tonPinchZoom: PropTypes.func,\n\tonPinchZoomEnd: PropTypes.func.isRequired,\n\tonPan: PropTypes.func,\n\tonPanEnd: PropTypes.func,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragComplete: PropTypes.func,\n\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tonMouseDown: PropTypes.func,\n\tchildren: PropTypes.node,\n};\n\nEventCapture.defaultProps = {\n\tmouseMove: false,\n\tzoom: false,\n\tpan: false,\n\tpanSpeedMultiplier: 1,\n\tfocus: false,\n\tonDragComplete: noop,\n\tdisableInteraction: false,\n};\n\nexport default EventCapture;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isDefined, getLogger } from \"./utils\";\n\nconst log = getLogger(\"CanvasContainer\");\n\nclass CanvasContainer extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.setDrawCanvas = this.setDrawCanvas.bind(this);\n\t\tthis.drawCanvas = {};\n\t}\n\tsetDrawCanvas(node) {\n\t\tif (isDefined(node))\n\t\t\tthis.drawCanvas[node.id] = node.getContext(\"2d\");\n\t\telse\n\t\t\tthis.drawCanvas = {};\n\t}\n\tgetCanvasContexts() {\n\t\tif (isDefined(this.drawCanvas.axes)) {\n\t\t\treturn this.drawCanvas;\n\t\t}\n\t}\n\trender() {\n\t\tconst { height, width, type, zIndex, ratio } = this.props;\n\t\tif (type === \"svg\") return null;\n\n\t\tlog(\"using ratio \", ratio);\n\n\t\treturn (\n\t\t\t<div style={{ position: \"absolute\", zIndex: zIndex }}>\n\t\t\t\t<canvas id=\"bg\" ref={this.setDrawCanvas} width={width * ratio} height={height * ratio}\n\t\t\t\t\tstyle={{ position: \"absolute\", width: width, height: height }} />\n\t\t\t\t<canvas id=\"axes\" ref={this.setDrawCanvas} width={width * ratio} height={height * ratio}\n\t\t\t\t\tstyle={{ position: \"absolute\", width: width, height: height }} />\n\t\t\t\t<canvas id=\"mouseCoord\" ref={this.setDrawCanvas} width={width * ratio} height={height * ratio}\n\t\t\t\t\tstyle={{ position: \"absolute\", width: width, height: height }} />\n\t\t\t</div>\n\t\t);\n\t}\n}\n/*\n\t\t\t\t<canvas id=\"hover\" ref={this.setDrawCanvas} width={width * ratio} height={height * ratio}\n\t\t\t\t\tstyle={{ position: \"absolute\", width: width, height: height }} />\n*/\nCanvasContainer.propTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tzIndex: PropTypes.number,\n\tratio: PropTypes.number.isRequired,\n};\n\nexport default CanvasContainer;\n","\n\nimport {\n\thead,\n\tlast,\n\tgetClosestItemIndexes,\n\tisDefined,\n\tisNotDefined,\n\tgetLogger,\n} from \"../utils\";\n\nconst log = getLogger(\"evaluator\");\n\nfunction getNewEnd(fallbackEnd, xAccessor, initialXScale, start) {\n\tconst {\n\t\tlastItem, lastItemX\n\t} = fallbackEnd;\n\tconst lastItemXValue = xAccessor(lastItem);\n\tconst [rangeStart, rangeEnd] = initialXScale.range();\n\n\tconst newEnd = (rangeEnd - rangeStart) / (lastItemX - rangeStart) * (lastItemXValue - start) + start;\n\treturn newEnd;\n}\n\nfunction extentsWrapper(useWholeData, clamp, pointsPerPxThreshold, minPointsPerPxThreshold, flipXScale) {\n\tfunction filterData(\n\t\tdata, inputDomain, xAccessor, initialXScale,\n\t\t{ currentPlotData, currentDomain, fallbackStart, fallbackEnd } = {}\n\t) {\n\t\tif (useWholeData) {\n\t\t\treturn { plotData: data, domain: inputDomain };\n\t\t}\n\n\t\tlet left = head(inputDomain);\n\t\tlet right = last(inputDomain);\n\t\tlet clampedDomain = inputDomain;\n\n\t\tlet filteredData = getFilteredResponse(data, left, right, xAccessor);\n\n\t\tif (filteredData.length === 1 && isDefined(fallbackStart)) {\n\t\t\tleft = fallbackStart;\n\t\t\tright = getNewEnd(fallbackEnd, xAccessor, initialXScale, left);\n\n\t\t\tclampedDomain = [\n\t\t\t\tleft,\n\t\t\t\tright,\n\t\t\t];\n\t\t\tfilteredData = getFilteredResponse(data, left, right, xAccessor);\n\t\t}\n\n\t\tif (typeof clamp === \"function\") {\n\t\t\tclampedDomain = clamp(clampedDomain, [xAccessor(head(data)), xAccessor(last(data))]);\n\t\t} else {\n\t\t\tif (clamp === \"left\" || clamp === \"both\" || clamp === true) {\n\t\t\t\tclampedDomain = [\n\t\t\t\t\tMath.max(left, xAccessor(head(data))),\n\t\t\t\t\tclampedDomain[1]\n\t\t\t\t];\n\t\t\t}\n\n\t\t\tif (clamp === \"right\" || clamp === \"both\" || clamp === true) {\n\t\t\t\tclampedDomain = [\n\t\t\t\t\tclampedDomain[0],\n\t\t\t\t\tMath.min(right, xAccessor(last(data)))\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\n\t\tif (clampedDomain !== inputDomain) {\n\t\t\tfilteredData = getFilteredResponse(data, clampedDomain[0], clampedDomain[1], xAccessor);\n\t\t}\n\n\t\tconst realInputDomain = clampedDomain;\n\t\t// [xAccessor(head(filteredData)), xAccessor(last(filteredData))];\n\n\t\tconst xScale = initialXScale.copy().domain(realInputDomain);\n\n\t\tlet width = Math.floor(xScale(xAccessor(last(filteredData)))\n\t\t\t- xScale(xAccessor(head(filteredData))));\n\n\t\t// prevent negative width when flipXScale\n\t\tif (flipXScale && width < 0) {\n\t\t\twidth = width * -1;\n\t\t}\n\n\t\tlet plotData, domain;\n\n\t\tconst chartWidth = last(xScale.range()) - head(xScale.range());\n\n\t\tlog(`Trying to show ${filteredData.length} points in ${width}px,`\n\t\t\t+ ` I can show up to ${showMaxThreshold(width, pointsPerPxThreshold) - 1} points in that width. `\n\t\t\t+ `Also FYI the entire chart width is ${chartWidth}px and pointsPerPxThreshold is ${pointsPerPxThreshold}`);\n\n\t\tif (canShowTheseManyPeriods(width, filteredData.length, pointsPerPxThreshold, minPointsPerPxThreshold)) {\n\t\t\tplotData = filteredData;\n\t\t\tdomain = realInputDomain;\n\t\t\tlog(\"AND IT WORKED\");\n\t\t} else {\n\t\t\tif (chartWidth > showMaxThreshold(width, pointsPerPxThreshold) && isDefined(fallbackEnd)) {\n\t\t\t\tplotData = filteredData;\n\t\t\t\tconst newEnd = getNewEnd(fallbackEnd, xAccessor, initialXScale, head(realInputDomain));\n\t\t\t\tdomain = [\n\t\t\t\t\thead(realInputDomain),\n\t\t\t\t\tnewEnd\n\t\t\t\t];\n\t\t\t\t// plotData = currentPlotData || filteredData.slice(filteredData.length - showMax(width, pointsPerPxThreshold));\n\t\t\t\t// domain = currentDomain || [xAccessor(head(plotData)), xAccessor(last(plotData))];\n\n\t\t\t\tconst newXScale = xScale.copy().domain(domain);\n\t\t\t\tconst newWidth = Math.floor(newXScale(xAccessor(last(plotData)))\n\t\t\t\t\t- newXScale(xAccessor(head(plotData))));\n\n\t\t\t\tlog(`and ouch, that is too much, so instead showing ${plotData.length} in ${newWidth}px`);\n\t\t\t} else {\n\t\t\t\tplotData = currentPlotData || filteredData.slice(filteredData.length - showMax(width, pointsPerPxThreshold));\n\t\t\t\tdomain = currentDomain || [xAccessor(head(plotData)), xAccessor(last(plotData))];\n\n\t\t\t\tconst newXScale = xScale.copy().domain(domain);\n\t\t\t\tconst newWidth = Math.floor(newXScale(xAccessor(last(plotData)))\n\t\t\t\t\t- newXScale(xAccessor(head(plotData))));\n\n\t\t\t\tlog(`and ouch, that is too much, so instead showing ${plotData.length} in ${newWidth}px`);\n\t\t\t}\n\t\t}\n\t\treturn { plotData, domain };\n\t}\n\treturn { filterData };\n}\n\nfunction canShowTheseManyPeriods(width, arrayLength, maxThreshold, minThreshold) {\n\treturn arrayLength > showMinThreshold(width, minThreshold) && arrayLength < showMaxThreshold(width, maxThreshold);\n}\n\nfunction showMinThreshold(width, threshold) {\n\treturn Math.max(1, Math.ceil(width * threshold));\n}\n\nfunction showMaxThreshold(width, threshold) {\n\treturn Math.floor(width * threshold);\n}\n\nfunction showMax(width, threshold) {\n\treturn Math.floor(showMaxThreshold(width, threshold) * 0.97);\n}\n\nfunction getFilteredResponse(data, left, right, xAccessor) {\n\tconst newLeftIndex = getClosestItemIndexes(data, left, xAccessor).right;\n\tconst newRightIndex = getClosestItemIndexes(data, right, xAccessor).left;\n\n\tconst filteredData = data.slice(newLeftIndex, newRightIndex + 1);\n\t// console.log(right, newRightIndex, dataForInterval.length);\n\n\treturn filteredData;\n}\n\nexport default function({\n\txScale, useWholeData, clamp,\n\tpointsPerPxThreshold, minPointsPerPxThreshold,\n\tflipXScale\n}) {\n\treturn extentsWrapper(\n\t\tuseWholeData || isNotDefined(xScale.invert),\n\t\tclamp,\n\t\tpointsPerPxThreshold,\n\t\tminPointsPerPxThreshold,\n\t\tflipXScale\n\t);\n}\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { extent as d3Extent, min, max } from \"d3-array\";\n\nimport {\n\thead,\n\tlast,\n\tisDefined,\n\tisNotDefined,\n\tclearCanvas,\n\tshallowEqual,\n\tidentity,\n\tnoop,\n\tfunctor,\n\tgetLogger,\n} from \"./utils\";\n\n/* eslint-disable no-unused-vars */\nimport {\n\tmouseBasedZoomAnchor,\n\tlastVisibleItemBasedZoomAnchor,\n\trightDomainBasedZoomAnchor,\n} from \"./utils/zoomBehavior\";\n/* eslint-enable no-unused-vars */\n\nimport { getNewChartConfig, getChartConfigWithUpdatedYScales, getCurrentCharts, getCurrentItem } from \"./utils/ChartDataUtil\";\n\nimport EventCapture from \"./EventCapture\";\n\nimport CanvasContainer from \"./CanvasContainer\";\nimport evaluator from \"./scale/evaluator\";\n\nconst log = getLogger(\"ChartCanvas\");\n\nconst CANDIDATES_FOR_RESET = [\n\t\"seriesName\",\n\t/* \"data\",*/\n\t/* \"xAccessor\",*/\n];\n\nfunction shouldResetChart(thisProps, nextProps) {\n\treturn !CANDIDATES_FOR_RESET.every(key => {\n\t\tconst result = shallowEqual(thisProps[key], nextProps[key]);\n\t\t// console.log(key, result);\n\t\treturn result;\n\t});\n}\n\nfunction getCursorStyle() {\n\tconst tooltipStyle = `\n\t.react-stockcharts-grabbing-cursor {\n\t\tpointer-events: all;\n\t\tcursor: -moz-grabbing;\n\t\tcursor: -webkit-grabbing;\n\t\tcursor: grabbing;\n\t}\n\t.react-stockcharts-crosshair-cursor {\n\t\tpointer-events: all;\n\t\tcursor: crosshair;\n\t}\n\t.react-stockcharts-tooltip-hover {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-avoid-interaction {\n\t\tpointer-events: none;\n\t}\n\t.react-stockcharts-enable-interaction {\n\t\tpointer-events: all;\n\t}\n\t.react-stockcharts-tooltip {\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-default-cursor {\n\t\tcursor: default;\n\t}\n\t.react-stockcharts-move-cursor {\n\t\tcursor: move;\n\t}\n\t.react-stockcharts-pointer-cursor {\n\t\tcursor: pointer;\n\t}\n\t.react-stockcharts-ns-resize-cursor {\n\t\tcursor: ns-resize;\n\t}\n\t.react-stockcharts-ew-resize-cursor {\n\t\tcursor: ew-resize;\n\t}`;\n\treturn (<style type=\"text/css\">{tooltipStyle}</style>);\n}\n\nfunction getDimensions(props) {\n\treturn {\n\t\theight: props.height - props.margin.top - props.margin.bottom,\n\t\twidth: props.width - props.margin.left - props.margin.right,\n\t};\n}\n\nfunction getXScaleDirection(flipXScale) {\n\treturn flipXScale ? -1 : 1;\n}\n\nfunction calculateFullData(props) {\n\tconst { data: fullData, plotFull, xScale, clamp, pointsPerPxThreshold, flipXScale } = props;\n\tconst { xAccessor, displayXAccessor, minPointsPerPxThreshold } = props;\n\n\tconst useWholeData = isDefined(plotFull)\n\t\t? plotFull\n\t\t: xAccessor === identity;\n\n\tconst { filterData } = evaluator({\n\t\txScale,\n\t\tuseWholeData,\n\t\tclamp,\n\t\tpointsPerPxThreshold,\n\t\tminPointsPerPxThreshold,\n\t\tflipXScale,\n\t});\n\n\treturn {\n\t\txAccessor,\n\t\tdisplayXAccessor: displayXAccessor || xAccessor,\n\t\txScale: xScale.copy(),\n\t\tfullData,\n\t\tfilterData\n\t};\n}\nfunction resetChart(props, firstCalculation = false) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!firstCalculation) log(\"CHART RESET\");\n\t}\n\n\tconst state = calculateState(props);\n\tconst { xAccessor, displayXAccessor, fullData } = state;\n\tconst { plotData: initialPlotData, xScale } = state;\n\tconst { postCalculator, children } = props;\n\n\tconst plotData = postCalculator(initialPlotData);\n\n\tconst dimensions = getDimensions(props);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\txScale.domain()\n\t);\n\n\treturn {\n\t\t...state,\n\t\txScale,\n\t\tplotData,\n\t\tchartConfig,\n\t};\n}\n\nfunction updateChart(\n\tnewState,\n\tinitialXScale,\n\tprops,\n\tlastItemWasVisible,\n\tinitialChartConfig,\n) {\n\n\tconst { fullData, xScale, xAccessor, displayXAccessor, filterData } = newState;\n\n\tconst lastItem = last(fullData);\n\tconst [start, end] = initialXScale.domain();\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tlog(\"TRIVIAL CHANGE\");\n\t}\n\n\tconst { postCalculator, children, padding, flipXScale } = props;\n\tconst { maintainPointsPerPixelOnResize } = props;\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\t// console.log(\"lastItemWasVisible =\", lastItemWasVisible, end, xAccessor(lastItem), end >= xAccessor(lastItem));\n\tlet initialPlotData;\n\tif (!lastItemWasVisible || end >= xAccessor(lastItem)) {\n\t\t// resize comes here...\n\t\t// get plotData between [start, end] and do not change the domain\n\t\tconst [rangeStart, rangeEnd] = initialXScale.range();\n\t\tconst [newRangeStart, newRangeEnd] = updatedXScale.range();\n\t\tconst newDomainExtent = ((newRangeEnd - newRangeStart) / (rangeEnd - rangeStart)) * (end - start);\n\t\tconst newStart = maintainPointsPerPixelOnResize\n\t\t\t? end - newDomainExtent\n\t\t\t: start;\n\n\t\tconst lastItemX = initialXScale(xAccessor(lastItem));\n\t\t// console.log(\"pointsPerPixel => \", newStart, start, end, updatedXScale(end));\n\t\tconst response = filterData(\n\t\t\tfullData, [newStart, end], xAccessor, updatedXScale,\n\t\t\t{ fallbackStart: start, fallbackEnd: { lastItem, lastItemX } }\n\t\t);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\n\t\t// console.log(\"HERE!!!!!\", start, end);\n\t} else if (lastItemWasVisible\n\t\t\t&& end < xAccessor(lastItem)) {\n\t\t// this is when a new item is added and last item was visible\n\t\t// so slide over and show the new item also\n\n\t\t// get plotData between [xAccessor(l) - (end - start), xAccessor(l)] and DO change the domain\n\t\tconst dx = initialXScale(xAccessor(lastItem)) - initialXScale.range()[1];\n\t\tconst [newStart, newEnd] = initialXScale.range().map(x => x + dx).map(initialXScale.invert);\n\n\n\t\tconst response = filterData(fullData, [newStart, newEnd], xAccessor, updatedXScale);\n\t\tinitialPlotData = response.plotData;\n\t\tupdatedXScale.domain(response.domain);\t\t// if last item was visible, then shift\n\t}\n\t// plotData = getDataOfLength(fullData, showingInterval, plotData.length)\n\tconst plotData = postCalculator(initialPlotData);\n\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\tgetNewChartConfig(dimensions, children, initialChartConfig),\n\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\tupdatedXScale.domain()\n\t);\n\n\treturn {\n\t\txScale: updatedXScale,\n\t\txAccessor,\n\t\tchartConfig,\n\t\tplotData,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction calculateState(props) {\n\n\tconst {\n\t\txAccessor: inputXAccesor, xExtents: xExtentsProp, data, padding, flipXScale\n\t} = props;\n\n\tif (process.env.NODE_ENV !== \"production\" && isDefined(props.xScale.invert)) {\n\t\tfor (let i = 1; i < data.length; i++) {\n\t\t\tconst prev = data[i - 1];\n\t\t\tconst curr = data[i];\n\t\t\tif (inputXAccesor(prev) > inputXAccesor(curr)) {\n\t\t\t\tthrow new Error(\"'data' is not sorted on 'xAccessor', send 'data' sorted in ascending order of 'xAccessor'\");\n\t\t\t}\n\t\t}\n\t}\n\n\tconst direction = getXScaleDirection(flipXScale);\n\tconst dimensions = getDimensions(props);\n\n\tconst extent = typeof xExtentsProp === \"function\"\n\t\t? xExtentsProp(data)\n\t\t: d3Extent(xExtentsProp.map(d => functor(d)).map(each => each(data, inputXAccesor)));\n\n\tconst { xAccessor, displayXAccessor, xScale, fullData, filterData } = calculateFullData(props);\n\tconst updatedXScale = setXRange(xScale, dimensions, padding, direction);\n\n\tconst { plotData, domain } = filterData(fullData, extent, inputXAccesor, updatedXScale);\n\n\tif (process.env.NODE_ENV !== \"production\" && plotData.length <= 1) {\n\t\tthrow new Error(`Showing ${plotData.length} datapoints, review the 'xExtents' prop of ChartCanvas`);\n\t}\n\treturn {\n\t\tplotData,\n\t\txScale: updatedXScale.domain(domain),\n\t\txAccessor,\n\t\tdisplayXAccessor,\n\t\tfullData,\n\t\tfilterData,\n\t};\n}\n\nfunction setXRange(xScale, dimensions, padding, direction = 1) {\n\tif (xScale.rangeRoundPoints) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.rangeRoundPoints([0, dimensions.width], padding);\n\t} else if (xScale.padding) {\n\t\tif (isNaN(padding)) throw new Error(\"padding has to be a number for ordinal scale\");\n\t\txScale.range([0, dimensions.width]);\n\t\txScale.padding(padding / 2);\n\t} else {\n\t\tconst { left, right } = isNaN(padding)\n\t\t\t? padding\n\t\t\t: { left: padding, right: padding };\n\t\tif (direction > 0) {\n\t\t\txScale.range([left, dimensions.width - right]);\n\t\t} else {\n\t\t\txScale.range([dimensions.width - right, left]);\n\t\t}\n\t}\n\treturn xScale;\n}\n\nfunction pinchCoordinates(pinch) {\n\tconst { touch1Pos, touch2Pos } = pinch;\n\n\treturn {\n\t\ttopLeft: [Math.min(touch1Pos[0], touch2Pos[0]), Math.min(touch1Pos[1], touch2Pos[1])],\n\t\tbottomRight: [Math.max(touch1Pos[0], touch2Pos[0]), Math.max(touch1Pos[1], touch2Pos[1])]\n\t};\n}\n\n\nclass ChartCanvas extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.getDataInfo = this.getDataInfo.bind(this);\n\t\tthis.getCanvasContexts = this.getCanvasContexts.bind(this);\n\n\t\tthis.handleMouseMove = this.handleMouseMove.bind(this);\n\t\tthis.handleMouseEnter = this.handleMouseEnter.bind(this);\n\t\tthis.handleMouseLeave = this.handleMouseLeave.bind(this);\n\t\tthis.handleZoom = this.handleZoom.bind(this);\n\t\tthis.handlePinchZoom = this.handlePinchZoom.bind(this);\n\t\tthis.handlePinchZoomEnd = this.handlePinchZoomEnd.bind(this);\n\t\tthis.handlePan = this.handlePan.bind(this);\n\t\tthis.handlePanEnd = this.handlePanEnd.bind(this);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t\tthis.handleMouseDown = this.handleMouseDown.bind(this);\n\t\tthis.handleDoubleClick = this.handleDoubleClick.bind(this);\n\t\tthis.handleContextMenu = this.handleContextMenu.bind(this);\n\t\tthis.handleDragStart = this.handleDragStart.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\n\t\tthis.panHelper = this.panHelper.bind(this);\n\t\tthis.pinchZoomHelper = this.pinchZoomHelper.bind(this);\n\t\tthis.xAxisZoom = this.xAxisZoom.bind(this);\n\t\tthis.yAxisZoom = this.yAxisZoom.bind(this);\n\t\tthis.resetYDomain = this.resetYDomain.bind(this);\n\t\tthis.calculateStateForDomain = this.calculateStateForDomain.bind(this);\n\t\tthis.generateSubscriptionId = this.generateSubscriptionId.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.redraw = this.redraw.bind(this);\n\t\tthis.getAllPanConditions = this.getAllPanConditions.bind(this);\n\n\t\tthis.subscriptions = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t\tthis.unsubscribe = this.unsubscribe.bind(this);\n\t\tthis.amIOnTop = this.amIOnTop.bind(this);\n\t\tthis.saveEventCaptureNode = this.saveEventCaptureNode.bind(this);\n\t\tthis.saveCanvasContainerNode = this.saveCanvasContainerNode.bind(this);\n\t\tthis.setCursorClass = this.setCursorClass.bind(this);\n\t\tthis.getMutableState = this.getMutableState.bind(this);\n\t\t// this.canvasDrawCallbackList = [];\n\t\tthis.interactiveState = [];\n\t\tthis.panInProgress = false;\n\n\t\tthis.state = {};\n\t\tthis.mutableState = {};\n\t\tthis.lastSubscriptionId = 0;\n\t}\n\tsaveEventCaptureNode(node) {\n\t\tthis.eventCaptureNode = node;\n\t}\n\tsaveCanvasContainerNode(node) {\n\t\tthis.canvasContainerNode = node;\n\t}\n\tgetMutableState() {\n\t\treturn this.mutableState;\n\t}\n\tgetDataInfo() {\n\t\treturn {\n\t\t\t...this.state,\n\t\t\tfullData: this.fullData,\n\t\t};\n\t}\n\tgetCanvasContexts() {\n\t\tif (this.canvasContainerNode) {\n\t\t\treturn this.canvasContainerNode.getCanvasContexts();\n\t\t}\n\t}\n\tgenerateSubscriptionId() {\n\t\tthis.lastSubscriptionId++;\n\t\treturn this.lastSubscriptionId;\n\t}\n\tclearBothCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearMouseCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.mouseCoord) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\t// canvases.hover,\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tclearThreeCanvas() {\n\t\tconst canvases = this.getCanvasContexts();\n\t\tif (canvases && canvases.axes) {\n\t\t\tclearCanvas([\n\t\t\t\tcanvases.axes,\n\t\t\t\t// canvases.hover,\n\t\t\t\tcanvases.mouseCoord,\n\t\t\t\tcanvases.bg\n\t\t\t], this.props.ratio);\n\t\t}\n\t}\n\tsubscribe(id, rest) {\n\t\tconst { getPanConditions = functor({\n\t\t\tdraggable: false,\n\t\t\tpanEnabled: true,\n\t\t}) } = rest;\n\t\tthis.subscriptions = this.subscriptions.concat({\n\t\t\tid,\n\t\t\t...rest,\n\t\t\tgetPanConditions,\n\t\t});\n\t}\n\tunsubscribe(id) {\n\t\tthis.subscriptions = this.subscriptions.filter(each => each.id !== id);\n\t}\n\tgetAllPanConditions() {\n\t\treturn this.subscriptions\n\t\t\t.map(each => each.getPanConditions());\n\t}\n\tsetCursorClass(className) {\n\t\tif (this.eventCaptureNode != null) {\n\t\t\tthis.eventCaptureNode.setCursorClass(className);\n\t\t}\n\t}\n\tamIOnTop(id) {\n\t\tconst dragableComponents = this.subscriptions\n\t\t\t.filter(each => each.getPanConditions().draggable);\n\n\t\treturn dragableComponents.length > 0\n\t\t\t&& last(dragableComponents).id === id;\n\t}\n\thandleContextMenu(mouseXY, e) {\n\t\tconst { xAccessor, chartConfig, plotData, xScale } = this.state;\n\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"contextmenu\", {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\t}\n\tcalculateStateForDomain(newDomain) {\n\t\tconst {\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t};\n\t}\n\tpinchZoomHelper(initialPinch, finalPinch) {\n\t\tconst { xScale: initialPinchXScale } = initialPinch;\n\n\t\tconst {\n\t\t\txScale: initialXScale,\n\t\t\tchartConfig: initialChartConfig,\n\t\t\tplotData: initialPlotData,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t} = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\tconst { topLeft: iTL, bottomRight: iBR } = pinchCoordinates(initialPinch);\n\t\tconst { topLeft: fTL, bottomRight: fBR } = pinchCoordinates(finalPinch);\n\n\t\tconst e = initialPinchXScale.range()[1];\n\n\t\tconst xDash = Math.round(-(iBR[0] * fTL[0] - iTL[0] * fBR[0]) / (iTL[0] - iBR[0]));\n\t\tconst yDash = Math.round(e + ((e - iBR[0]) * (e - fTL[0]) - (e - iTL[0]) * (e - fBR[0])) / ((e - iTL[0]) - (e - iBR[0])));\n\n\t\tconst x = Math.round(-xDash * iTL[0] / (-xDash + fTL[0]));\n\t\tconst y = Math.round(e - (yDash - e) * (e - iTL[0]) / (yDash + (e - fTL[0])));\n\n\t\tconst newDomain = [x, y].map(initialPinchXScale.invert);\n\t\t// var domainR = initial.right + right;\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialPinchXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: initialPlotData,\n\t\t\t\tcurrentDomain: initialXScale.domain()\n\t\t\t}\n\t\t);\n\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\n\t\tconst mouseXY = finalPinch.touch1Pos;\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain()\n\t\t);\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\n\t\treturn {\n\t\t\tchartConfig,\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\tcancelDrag() {\n\t\tthis.eventCaptureNode.cancelDrag();\n\t\tthis.triggerEvent(\"dragcancel\");\n\t}\n\thandlePinchZoom(initialPinch, finalPinch, e) {\n\t\tif (!this.waitingForPinchZoomAnimationFrame) {\n\t\t\tthis.waitingForPinchZoomAnimationFrame = true;\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, finalPinch);\n\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = finalPinch;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pinchzoom\" });\n\t\t\t\tthis.waitingForPinchZoomAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandlePinchZoomEnd(initialPinch, e) {\n\t\tconst { xAccessor } = this.state;\n\n\t\tif (this.finalPinch) {\n\t\t\tconst state = this.pinchZoomHelper(initialPinch, this.finalPinch);\n\t\t\tconst { xScale } = state;\n\t\t\tthis.triggerEvent(\"pinchzoom\", state, e);\n\n\t\t\tthis.finalPinch = null;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tconst { fullData } = this;\n\t\t\tconst firstItem = head(fullData);\n\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.setState(state, () => {\n\t\t\t\tif (start < end) {\n\t\t\t\t\tonLoadMore(start, end);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleZoom(zoomDirection, mouseXY, e) {\n\t\tif (this.panInProgress)\n\t\t\treturn;\n\t\t// console.log(\"zoomDirection \", zoomDirection, \" mouseXY \", mouseXY);\n\t\tconst { xAccessor, xScale: initialXScale, plotData: initialPlotData } = this.state;\n\t\tconst { zoomMultiplier, zoomAnchor } = this.props;\n\t\tconst { fullData } = this;\n\t\tconst item = zoomAnchor({\n\t\t\txScale: initialXScale,\n\t\t\txAccessor,\n\t\t\tmouseXY,\n\t\t\tplotData: initialPlotData,\n\t\t\tfullData,\n\t\t});\n\n\t\tconst cx = initialXScale(item);\n\t\tconst c = zoomDirection > 0 ? 1 * zoomMultiplier : 1 / zoomMultiplier;\n\t\tconst newDomain = initialXScale.range().map(x => cx + (x - cx) * c).map(initialXScale.invert);\n\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\tthis.clearThreeCanvas();\n\n\t\tconst firstItem = head(fullData);\n\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY: mouseXY,\n\t\t\tcurrentItem: currentItem,\n\t\t\tcurrentCharts: currentCharts,\n\t\t};\n\n\t\tthis.triggerEvent(\"zoom\", {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t\tshow: true,\n\t\t}, e);\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) {\n\t\t\t\tonLoadMore(start, end);\n\t\t\t}\n\t\t});\n\t}\n\txAxisZoom(newDomain) {\n\t\tconst { xScale, plotData, chartConfig } = this.calculateStateForDomain(newDomain);\n\t\tthis.clearThreeCanvas();\n\n\t\tconst { xAccessor } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst firstItem = head(fullData);\n\t\tconst start = head(xScale.domain());\n\t\tconst end = xAccessor(firstItem);\n\t\tconst { onLoadMore } = this.props;\n\n\t\tthis.setState({\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t}, () => {\n\t\t\tif (start < end) onLoadMore(start, end);\n\t\t});\n\t}\n\tyAxisZoom(chartId, newDomain) {\n\t\tthis.clearThreeCanvas();\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\t\tconst chartConfig = initialChartConfig\n\t\t\t.map(each => {\n\t\t\t\tif (each.id === chartId) {\n\t\t\t\t\tconst { yScale } = each;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: yScale.copy().domain(newDomain),\n\t\t\t\t\t\tyPanEnabled: true,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn each;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.setState({\n\t\t\tchartConfig,\n\t\t});\n\t}\n\ttriggerEvent(type, props, e) {\n\t\t// console.log(\"triggering ->\", type);\n\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tconst state = {\n\t\t\t\t...this.state,\n\t\t\t\tfullData: this.fullData,\n\t\t\t\tsubscriptions: this.subscriptions,\n\t\t\t};\n\t\t\teach.listener(type, props, state, e);\n\t\t});\n\t}\n\tdraw(props) {\n\t\tthis.subscriptions.forEach(each => {\n\t\t\tif (isDefined(each.draw))\n\t\t\t\teach.draw(props);\n\t\t});\n\t}\n\tredraw() {\n\t\tthis.clearThreeCanvas();\n\t\tthis.draw({ force: true });\n\t}\n\tpanHelper(mouseXY, initialXScale, { dx, dy }, chartsToPan) {\n\t\tconst { xAccessor, displayXAccessor, chartConfig: initialChartConfig } = this.state;\n\t\tconst { filterData } = this.state;\n\t\tconst { fullData } = this;\n\t\tconst { postCalculator } = this.props;\n\n\t\t// console.log(dx, dy);\n\t\tif (isNotDefined(initialXScale.invert))\n\t\t\tthrow new Error(\"xScale provided does not have an invert() method.\"\n\t\t\t\t+ \"You are likely using an ordinal scale. This scale does not support zoom, pan\");\n\n\t\tconst newDomain = initialXScale.range().map(x => x - dx).map(initialXScale.invert);\n\n\t\tconst { plotData: beforePlotData, domain } = filterData(\n\t\t\tfullData,\n\t\t\tnewDomain,\n\t\t\txAccessor,\n\t\t\tinitialXScale,\n\t\t\t{\n\t\t\t\tcurrentPlotData: this.hackyWayToStopPanBeyondBounds__plotData,\n\t\t\t\tcurrentDomain: this.hackyWayToStopPanBeyondBounds__domain\n\t\t\t}\n\t\t);\n\n\t\tconst updatedScale = initialXScale.copy().domain(domain);\n\t\tconst plotData = postCalculator(beforePlotData);\n\t\t// console.log(last(plotData));\n\n\t\tconst currentItem = getCurrentItem(updatedScale, xAccessor, mouseXY, plotData);\n\t\tconst chartConfig = getChartConfigWithUpdatedYScales(\n\t\t\tinitialChartConfig,\n\t\t\t{ plotData, xAccessor, displayXAccessor, fullData },\n\t\t\tupdatedScale.domain(),\n\t\t\tdy,\n\t\t\tchartsToPan\n\t\t);\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\n\t\t// console.log(initialXScale.domain(), newDomain, updatedScale.domain());\n\t\treturn {\n\t\t\txScale: updatedScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmouseXY,\n\t\t\tcurrentCharts,\n\t\t\tcurrentItem,\n\t\t};\n\t}\n\thandlePan(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tif (!this.waitingForPanAnimationFrame) {\n\t\t\tthis.waitingForPanAnimationFrame = true;\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = this.hackyWayToStopPanBeyondBounds__plotData || this.state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = this.hackyWayToStopPanBeyondBounds__domain || this.state.xScale.domain();\n\n\t\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\n\t\t\tthis.hackyWayToStopPanBeyondBounds__plotData = state.plotData;\n\t\t\tthis.hackyWayToStopPanBeyondBounds__domain = state.xScale.domain();\n\n\t\t\tthis.panInProgress = true;\n\t\t\t// console.log(panStartXScale.domain(), state.xScale.domain());\n\n\t\t\tthis.triggerEvent(\"pan\", state, e);\n\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY: state.mouseXY,\n\t\t\t\tcurrentItem: state.currentItem,\n\t\t\t\tcurrentCharts: state.currentCharts,\n\t\t\t};\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.waitingForPanAnimationFrame = false;\n\t\t\t\tthis.clearBothCanvas();\n\t\t\t\tthis.draw({ trigger: \"pan\" });\n\t\t\t});\n\t\t}\n\t}\n\thandlePanEnd(mousePosition, panStartXScale, dxdy, chartsToPan, e) {\n\t\tconst state = this.panHelper(mousePosition, panStartXScale, dxdy, chartsToPan);\n\t\t// console.log(this.canvasDrawCallbackList.map(d => d.type));\n\t\tthis.hackyWayToStopPanBeyondBounds__plotData = null;\n\t\tthis.hackyWayToStopPanBeyondBounds__domain = null;\n\n\t\tthis.panInProgress = false;\n\n\t\t// console.log(\"PANEND\", panEnd++);\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t} = state;\n\n\t\tthis.triggerEvent(\"panend\", state, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst { xAccessor } = this.state;\n\t\t\tconst { fullData } = this;\n\n\t\t\tconst firstItem = head(fullData);\n\t\t\tconst start = head(xScale.domain());\n\t\t\tconst end = xAccessor(firstItem);\n\t\t\t// console.log(start, end, start < end ? \"Load more\" : \"I have it\");\n\n\t\t\tconst { onLoadMore } = this.props;\n\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState({\n\t\t\t\txScale,\n\t\t\t\tplotData,\n\t\t\t\tchartConfig,\n\t\t\t}, () => {\n\t\t\t\tif (start < end) onLoadMore(start, end);\n\t\t\t});\n\t\t});\n\t}\n\thandleMouseDown(mousePosition, currentCharts, e) {\n\t\tthis.triggerEvent(\"mousedown\", this.mutableState, e);\n\t}\n\thandleMouseEnter(e) {\n\t\tthis.triggerEvent(\"mouseenter\", {\n\t\t\tshow: true,\n\t\t}, e);\n\t}\n\thandleMouseMove(mouseXY, inputType, e) {\n\t\tif (!this.waitingForMouseMoveAnimationFrame) {\n\t\t\tthis.waitingForMouseMoveAnimationFrame = true;\n\n\t\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\t\t\tthis.triggerEvent(\"mousemove\", {\n\t\t\t\tshow: true,\n\t\t\t\tmouseXY,\n\t\t\t\t// prevMouseXY is used in interactive components\n\t\t\t\tprevMouseXY: this.prevMouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t}, e);\n\n\t\t\tthis.prevMouseXY = mouseXY;\n\t\t\tthis.mutableState = {\n\t\t\t\tmouseXY,\n\t\t\t\tcurrentItem,\n\t\t\t\tcurrentCharts,\n\t\t\t};\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.clearMouseCanvas();\n\t\t\t\tthis.draw({ trigger: \"mousemove\" });\n\t\t\t\tthis.waitingForMouseMoveAnimationFrame = false;\n\t\t\t});\n\t\t}\n\t}\n\thandleMouseLeave(e) {\n\t\tthis.triggerEvent(\"mouseleave\", { show: false }, e);\n\t\tthis.clearMouseCanvas();\n\t\tthis.draw({ trigger: \"mouseleave\" });\n\t}\n\thandleDragStart({ startPos }, e) {\n\t\tthis.triggerEvent(\"dragstart\", { startPos }, e);\n\t}\n\thandleDrag({ startPos, mouseXY }, e) {\n\t\tconst { chartConfig, plotData, xScale, xAccessor } = this.state;\n\t\tconst currentCharts = getCurrentCharts(chartConfig, mouseXY);\n\t\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\n\t\tthis.triggerEvent(\"drag\", {\n\t\t\tstartPos,\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t}, e);\n\n\t\tthis.mutableState = {\n\t\t\tmouseXY,\n\t\t\tcurrentItem,\n\t\t\tcurrentCharts,\n\t\t};\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"drag\" });\n\t\t});\n\t}\n\thandleDragEnd({ mouseXY }, e) {\n\t\tthis.triggerEvent(\"dragend\", { mouseXY }, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"dragend\" });\n\t\t});\n\t}\n\thandleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"click\", this.mutableState, e);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.clearMouseCanvas();\n\t\t\tthis.draw({ trigger: \"click\" });\n\t\t});\n\t}\n\thandleDoubleClick(mousePosition, e) {\n\t\tthis.triggerEvent(\"dblclick\", {}, e);\n\t}\n\tgetChildContext() {\n\t\tconst dimensions = getDimensions(this.props);\n\t\treturn {\n\t\t\tfullData: this.fullData,\n\t\t\tplotData: this.state.plotData,\n\t\t\twidth: dimensions.width,\n\t\t\theight: dimensions.height,\n\t\t\tchartConfig: this.state.chartConfig,\n\t\t\txScale: this.state.xScale,\n\t\t\txAccessor: this.state.xAccessor,\n\t\t\tdisplayXAccessor: this.state.displayXAccessor,\n\t\t\tchartCanvasType: this.props.type,\n\t\t\tmargin: this.props.margin,\n\t\t\tratio: this.props.ratio,\n\t\t\txAxisZoom: this.xAxisZoom,\n\t\t\tyAxisZoom: this.yAxisZoom,\n\t\t\tgetCanvasContexts: this.getCanvasContexts,\n\t\t\tredraw: this.redraw,\n\t\t\tsubscribe: this.subscribe,\n\t\t\tunsubscribe: this.unsubscribe,\n\t\t\tgenerateSubscriptionId: this.generateSubscriptionId,\n\t\t\tgetMutableState: this.getMutableState,\n\t\t\tamIOnTop: this.amIOnTop,\n\t\t\tsetCursorClass: this.setCursorClass,\n\t\t};\n\t}\n\tcomponentWillMount() {\n\t\tconst { fullData, ...state } = resetChart(this.props, true);\n\t\tthis.setState(state);\n\t\tthis.fullData = fullData;\n\t}\n\tcomponentWillReceiveProps(nextProps) {\n\t\tconst reset = shouldResetChart(this.props, nextProps);\n\n\t\tconst interaction = isInteractionEnabled(this.state.xScale, this.state.xAccessor, this.state.plotData);\n\t\tconst { chartConfig: initialChartConfig } = this.state;\n\n\t\tlet newState;\n\t\tif (!interaction || reset || !shallowEqual(this.props.xExtents, nextProps.xExtents)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!interaction)\n\t\t\t\t\tlog(\"RESET CHART, changes to a non interactive chart\");\n\t\t\t\telse if (reset)\n\t\t\t\t\tlog(\"RESET CHART, one or more of these props changed\", CANDIDATES_FOR_RESET);\n\t\t\t\telse\n\t\t\t\t\tlog(\"xExtents changed\");\n\t\t\t}\n\t\t\t// do reset\n\t\t\tnewState = resetChart(nextProps);\n\t\t\tthis.mutableState = {};\n\t\t} else {\n\n\t\t\tconst [start, end] = this.state.xScale.domain();\n\t\t\tconst prevLastItem = last(this.fullData);\n\n\t\t\tconst calculatedState = calculateFullData(nextProps);\n\t\t\tconst { xAccessor } = calculatedState;\n\t\t\tconst lastItemWasVisible = xAccessor(prevLastItem) <= end && xAccessor(prevLastItem) >= start;\n\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (this.props.data !== nextProps.data)\n\t\t\t\t\tlog(\"data is changed but seriesName did not, change the seriesName if you wish to reset the chart and lastItemWasVisible = \", lastItemWasVisible);\n\t\t\t\telse\n\t\t\t\t\tlog(\"Trivial change, may be width/height or type changed, but that does not matter\");\n\t\t\t}\n\n\t\t\tnewState = updateChart(\n\t\t\t\tcalculatedState,\n\t\t\t\tthis.state.xScale,\n\t\t\t\tnextProps,\n\t\t\t\tlastItemWasVisible,\n\t\t\t\tinitialChartConfig,\n\t\t\t);\n\t\t}\n\n\t\tconst { fullData, ...state } = newState;\n\n\t\tif (this.panInProgress) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tlog(\"Pan is in progress\");\n\t\t\t}\n\t\t} else {\n\t\t\t/*\n\t\t\tif (!reset) {\n\t\t\t\tstate.chartConfig\n\t\t\t\t\t.forEach((each) => {\n\t\t\t\t\t\t// const sourceChartConfig = initialChartConfig.filter(d => d.id === each.id);\n\t\t\t\t\t\tconst prevChartConfig = find(initialChartConfig, d => d.id === each.id);\n\t\t\t\t\t\tif (isDefined(prevChartConfig) && prevChartConfig.yPanEnabled) {\n\t\t\t\t\t\t\teach.yScale.domain(prevChartConfig.yScale.domain());\n\t\t\t\t\t\t\teach.yPanEnabled = prevChartConfig.yPanEnabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\tthis.clearThreeCanvas();\n\n\t\t\tthis.setState(state);\n\t\t}\n\t\tthis.fullData = fullData;\n\t}\n\t/*\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tconsole.error(this.state.chartConfig, this.state.chartConfig.map(d => d.yScale.domain()));\n\t}\n\t*/\n\tresetYDomain(chartId) {\n\t\tconst { chartConfig } = this.state;\n\t\tlet changed = false;\n\t\tconst newChartConfig = chartConfig\n\t\t\t.map(each => {\n\t\t\t\tif ((isNotDefined(chartId) || each.id === chartId)\n\t\t\t\t\t\t&& !shallowEqual(each.yScale.domain(), each.realYDomain)) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...each,\n\t\t\t\t\t\tyScale: each.yScale.domain(each.realYDomain),\n\t\t\t\t\t\tyPanEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn each;\n\t\t\t});\n\n\t\tif (changed) {\n\t\t\tthis.clearThreeCanvas();\n\t\t\tthis.setState({\n\t\t\t\tchartConfig: newChartConfig\n\t\t\t});\n\t\t}\n\t}\n\tshouldComponentUpdate() {\n\t\t// console.log(\"Happneing.....\", !this.panInProgress)\n\t\treturn !this.panInProgress;\n\t}\n\trender() {\n\n\t\tconst { type, height, width, margin, className, zIndex, defaultFocus, ratio, mouseMoveEvent, panEvent, zoomEvent } = this.props;\n\t\tconst { useCrossHairStyleCursor, onSelect } = this.props;\n\n\t\tconst { plotData, xScale, xAccessor, chartConfig } = this.state;\n\t\tconst dimensions = getDimensions(this.props);\n\n\t\tconst interaction = isInteractionEnabled(xScale, xAccessor, plotData);\n\n\t\tconst cursorStyle = useCrossHairStyleCursor && interaction;\n\t\tconst cursor = getCursorStyle();\n\t\treturn (\n\t\t\t<div style={{ position: \"relative\", width, height }} className={className} onClick={onSelect}>\n\t\t\t\t<CanvasContainer ref={this.saveCanvasContainerNode}\n\t\t\t\t\ttype={type}\n\t\t\t\t\tratio={ratio}\n\t\t\t\t\twidth={width} height={height} zIndex={zIndex}/>\n\t\t\t\t<svg className={className} width={width} height={height} style={{ position: \"absolute\", zIndex: (zIndex + 5) }}>\n\t\t\t\t\t{cursor}\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<clipPath id=\"chart-area-clip\">\n\t\t\t\t\t\t\t<rect x=\"0\" y=\"0\" width={dimensions.width} height={dimensions.height} />\n\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t{chartConfig\n\t\t\t\t\t\t\t.map((each, idx) => <clipPath key={idx} id={`chart-area-clip-${each.id}`}>\n\t\t\t\t\t\t\t\t<rect x=\"0\" y=\"0\" width={each.width} height={each.height} />\n\t\t\t\t\t\t\t</clipPath>)}\n\t\t\t\t\t</defs>\n\t\t\t\t\t<g transform={`translate(${margin.left + 0.5}, ${margin.top + 0.5})`}>\n\t\t\t\t\t\t<EventCapture\n\t\t\t\t\t\t\tref={this.saveEventCaptureNode}\n\t\t\t\t\t\t\tuseCrossHairStyleCursor={cursorStyle}\n\t\t\t\t\t\t\tmouseMove={mouseMoveEvent && interaction}\n\t\t\t\t\t\t\tzoom={zoomEvent && interaction}\n\t\t\t\t\t\t\tpan={panEvent && interaction}\n\n\t\t\t\t\t\t\twidth={dimensions.width}\n\t\t\t\t\t\t\theight={dimensions.height}\n\t\t\t\t\t\t\tchartConfig={chartConfig}\n\t\t\t\t\t\t\txScale={xScale}\n\t\t\t\t\t\t\txAccessor={xAccessor}\n\t\t\t\t\t\t\tfocus={defaultFocus}\n\t\t\t\t\t\t\tdisableInteraction={this.props.disableInteraction}\n\n\t\t\t\t\t\t\tgetAllPanConditions={this.getAllPanConditions}\n\t\t\t\t\t\t\tonContextMenu={this.handleContextMenu}\n\t\t\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\t\t\tonDoubleClick={this.handleDoubleClick}\n\t\t\t\t\t\t\tonMouseDown={this.handleMouseDown}\n\t\t\t\t\t\t\tonMouseMove={this.handleMouseMove}\n\t\t\t\t\t\t\tonMouseEnter={this.handleMouseEnter}\n\t\t\t\t\t\t\tonMouseLeave={this.handleMouseLeave}\n\n\t\t\t\t\t\t\tonDragStart={this.handleDragStart}\n\t\t\t\t\t\t\tonDrag={this.handleDrag}\n\t\t\t\t\t\t\tonDragComplete={this.handleDragEnd}\n\n\t\t\t\t\t\t\tonZoom={this.handleZoom}\n\t\t\t\t\t\t\tonPinchZoom={this.handlePinchZoom}\n\t\t\t\t\t\t\tonPinchZoomEnd={this.handlePinchZoomEnd}\n\t\t\t\t\t\t\tonPan={this.handlePan}\n\t\t\t\t\t\t\tonPanEnd={this.handlePanEnd}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<g className=\"react-stockcharts-avoid-interaction\">\n\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nfunction isInteractionEnabled(xScale, xAccessor, data) {\n\tconst interaction = !isNaN(xScale(xAccessor(head(data)))) && isDefined(xScale.invert);\n\treturn interaction;\n}\n\nChartCanvas.propTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object,\n\tratio: PropTypes.number.isRequired,\n\t// interval: PropTypes.oneOf([\"D\", \"W\", \"M\"]), // ,\"m1\", \"m5\", \"m15\", \"W\", \"M\"\n\ttype: PropTypes.oneOf([\"svg\", \"hybrid\"]),\n\tpointsPerPxThreshold: PropTypes.number,\n\tminPointsPerPxThreshold: PropTypes.number,\n\tdata: PropTypes.array.isRequired,\n\t// initialDisplay: PropTypes.number,\n\txAccessor: PropTypes.func,\n\txExtents: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]),\n\tzoomAnchor: PropTypes.func,\n\n\tclassName: PropTypes.string,\n\tseriesName: PropTypes.string.isRequired,\n\tzIndex: PropTypes.number,\n\tchildren: PropTypes.node.isRequired,\n\txScale: PropTypes.func.isRequired,\n\tpostCalculator: PropTypes.func,\n\tflipXScale: PropTypes.bool,\n\tuseCrossHairStyleCursor: PropTypes.bool,\n\tpadding: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.shape({\n\t\t\tleft: PropTypes.number,\n\t\t\tright: PropTypes.number,\n\t\t})\n\t]),\n\tdefaultFocus: PropTypes.bool,\n\tzoomMultiplier: PropTypes.number,\n\tonLoadMore: PropTypes.func,\n\tdisplayXAccessor: function(props, propName/* , componentName */) {\n\t\tif (isNotDefined(props[propName])) {\n\t\t\tconsole.warn(\"`displayXAccessor` is not defined,\"\n\t\t\t\t+ \" will use the value from `xAccessor` as `displayXAccessor`.\"\n\t\t\t\t+ \" This might be ok if you do not use a discontinuous scale\"\n\t\t\t\t+ \" but if you do, provide a `displayXAccessor` prop to `ChartCanvas`\");\n\t\t} else if (typeof props[propName] !== \"function\") {\n\t\t\treturn new Error(\"displayXAccessor has to be a function\");\n\t\t}\n\t},\n\tmouseMoveEvent: PropTypes.bool,\n\tpanEvent: PropTypes.bool,\n\tclamp: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.func]),\n\tzoomEvent: PropTypes.bool,\n\tonSelect: PropTypes.func,\n\tmaintainPointsPerPixelOnResize: PropTypes.bool,\n\tdisableInteraction: PropTypes.bool,\n};\n\nChartCanvas.defaultProps = {\n\tmargin: { top: 20, right: 30, bottom: 30, left: 80 },\n\ttype: \"hybrid\",\n\tpointsPerPxThreshold: 2,\n\tminPointsPerPxThreshold: 1 / 100,\n\tclassName: \"react-stockchart\",\n\tzIndex: 1,\n\txExtents: [min, max],\n\tpostCalculator: identity,\n\tpadding: 0,\n\txAccessor: identity,\n\tflipXScale: false,\n\tuseCrossHairStyleCursor: true,\n\tdefaultFocus: true,\n\tonLoadMore: noop,\n\tonSelect: noop,\n\tmouseMoveEvent: true,\n\tpanEvent: true,\n\tzoomEvent: true,\n\tzoomMultiplier: 1.1,\n\tclamp: false,\n\tzoomAnchor: mouseBasedZoomAnchor,\n\tmaintainPointsPerPixelOnResize: true,\n\t// ratio: 2,\n\tdisableInteraction: false,\n};\n\nChartCanvas.childContextTypes = {\n\tplotData: PropTypes.array,\n\tfullData: PropTypes.array,\n\tchartConfig: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t\t\torigin: PropTypes.arrayOf(PropTypes.number).isRequired,\n\t\t\tpadding: PropTypes.oneOfType([\n\t\t\t\tPropTypes.number,\n\t\t\t\tPropTypes.shape({\n\t\t\t\t\ttop: PropTypes.number,\n\t\t\t\t\tbottom: PropTypes.number,\n\t\t\t\t})\n\t\t\t]),\n\t\t\tyExtents: PropTypes.arrayOf(PropTypes.func),\n\t\t\tyExtentsProvider: PropTypes.func,\n\t\t\tyScale: PropTypes.func.isRequired,\n\t\t\tmouseCoordinates: PropTypes.shape({\n\t\t\t\tat: PropTypes.string,\n\t\t\t\tformat: PropTypes.func\n\t\t\t}),\n\t\t\twidth: PropTypes.number.isRequired,\n\t\t\theight: PropTypes.number.isRequired,\n\t\t})\n\t).isRequired,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tchartCanvasType: PropTypes.oneOf([\"svg\", \"hybrid\"]).isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n\tgetCanvasContexts: PropTypes.func,\n\txAxisZoom: PropTypes.func,\n\tyAxisZoom: PropTypes.func,\n\tamIOnTop: PropTypes.func,\n\tredraw: PropTypes.func,\n\tsubscribe: PropTypes.func,\n\tunsubscribe: PropTypes.func,\n\tsetCursorClass: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func,\n};\n\nChartCanvas.ohlcv = d => ({ date: d.date, open: d.open, high: d.high, low: d.low, close: d.close, volume: d.volume });\n\nexport default ChartCanvas;\n","import {\n\tgetCurrentItem\n} from \"./ChartDataUtil\";\n\nimport {\n\tlast\n} from \"./index\";\n/* eslint-disable no-unused-vars */\n\nexport function mouseBasedZoomAnchor({\n\txScale,\n\txAccessor,\n\tmouseXY,\n\tplotData,\n\tfullData,\n}) {\n\tconst currentItem = getCurrentItem(xScale, xAccessor, mouseXY, plotData);\n\treturn xAccessor(currentItem);\n}\n\nexport function lastVisibleItemBasedZoomAnchor({\n\txScale,\n\txAccessor,\n\tmouseXY,\n\tplotData,\n\tfullData,\n}) {\n\tconst lastItem = last(plotData);\n\treturn xAccessor(lastItem);\n}\n\nexport function rightDomainBasedZoomAnchor({\n\txScale,\n\txAccessor,\n\tmouseXY,\n\tplotData,\n\tfullData,\n}) {\n\tconst [, end] = xScale.domain();\n\treturn end;\n}\n/* eslint-enable no-unused-vars */\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport {\n\tisNotDefined,\n\tisDefined,\n\tnoop,\n\tfunctor,\n\tidentity,\n} from \"./utils\";\n\nconst aliases = {\n\tmouseleave: \"mousemove\", // to draw interactive after mouse exit\n\tpanend: \"pan\",\n\tpinchzoom: \"pan\",\n\tmousedown: \"mousemove\",\n\tclick: \"mousemove\",\n\tcontextmenu: \"mousemove\",\n\tdblclick: \"mousemove\",\n\tdragstart: \"drag\",\n\tdragend: \"drag\",\n\tdragcancel: \"drag\",\n};\n\nclass GenericComponent extends Component {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t\tthis.listener = this.listener.bind(this);\n\t\tthis.draw = this.draw.bind(this);\n\t\tthis.updateMoreProps = this.updateMoreProps.bind(this);\n\t\tthis.evaluateType = this.evaluateType.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t\tthis.preCanvasDraw = this.preCanvasDraw.bind(this);\n\t\tthis.postCanvasDraw = this.postCanvasDraw.bind(this);\n\t\tthis.getPanConditions = this.getPanConditions.bind(this);\n\t\tthis.shouldTypeProceed = this.shouldTypeProceed.bind(this);\n\t\tthis.preEvaluate = this.preEvaluate.bind(this);\n\n\t\tconst { generateSubscriptionId } = context;\n\t\tthis.suscriberId = generateSubscriptionId();\n\n\t\tthis.moreProps = {};\n\n\t\tthis.state = {\n\t\t\tupdateCount: 0,\n\t\t};\n\t}\n\tupdateMoreProps(moreProps) {\n\t\tObject.keys(moreProps).forEach(key => {\n\t\t\tthis.moreProps[key] = moreProps[key];\n\t\t});\n\t}\n\tshouldTypeProceed() {\n\t\treturn true;\n\t}\n\tpreEvaluate() {\n\t}\n\tlistener(type, moreProps, state, e) {\n\t\t// console.log(e.shiftKey)\n\t\tif (isDefined(moreProps)) {\n\t\t\tthis.updateMoreProps(moreProps);\n\t\t}\n\t\tthis.evaluationInProgress = true;\n\t\tthis.evaluateType(type, e);\n\t\tthis.evaluationInProgress = false;\n\t}\n\tevaluateType(type, e) {\n\t\tconst newType = aliases[type] || type;\n\t\tconst proceed = this.props.drawOn.indexOf(newType) > -1;\n\n\t\t// console.log(\"type ->\", type, proceed);\n\n\t\tif (!proceed) return;\n\t\t// const moreProps = this.getMoreProps();\n\t\tthis.preEvaluate(type, this.moreProps, e);\n\t\tif (!this.shouldTypeProceed(type, this.moreProps)) return;\n\n\t\tswitch (type) {\n\t\t\tcase \"zoom\":\n\t\t\tcase \"mouseenter\":\n\t\t\t// DO NOT DRAW FOR THESE EVENTS\n\t\t\t\tbreak;\n\t\t\tcase \"mouseleave\": {\n\t\t\t\tthis.moreProps.hovering = false;\n\t\t\t\tconst moreProps = this.getMoreProps();\n\n\t\t\t\tif (this.props.onUnHover) {\n\t\t\t\t\tthis.props.onUnHover(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"contextmenu\": {\n\t\t\t\tif (this.props.onContextMenu) {\n\t\t\t\t\tthis.props.onContextMenu(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.moreProps.hovering\n\t\t\t\t&& this.props.onContextMenuWhenHover\n\t\t\t\t) {\n\t\t\t\t\tthis.props.onContextMenuWhenHover(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"mousedown\": {\n\t\t\t\tif (this.props.onMouseDown) {\n\t\t\t\t\tthis.props.onMouseDown(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"click\": {\n\t\t\t\tconst moreProps = this.getMoreProps();\n\t\t\t\tif (this.moreProps.hovering) {\n\t\t\t\t// console.error(\"TODO use this only for SAR, Line series\")\n\t\t\t\t\tthis.props.onClickWhenHover(moreProps, e);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.onClickOutside(moreProps, e);\n\t\t\t\t}\n\t\t\t\tif (this.props.onClick) {\n\t\t\t\t\tthis.props.onClick(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"mousemove\": {\n\n\t\t\t\tconst prevHover = this.moreProps.hovering;\n\t\t\t\tthis.moreProps.hovering = this.isHover(e);\n\n\t\t\t\tconst { amIOnTop, setCursorClass } = this.context;\n\n\t\t\t\tif (this.moreProps.hovering\n\t\t\t\t\t&& !this.props.selected\n\t\t\t\t\t/* && !prevHover */\n\t\t\t\t\t&& amIOnTop(this.suscriberId)\n\t\t\t\t\t&& isDefined(this.props.onHover)) {\n\t\t\t\t\tsetCursorClass(\"react-stockcharts-pointer-cursor\");\n\t\t\t\t\tthis.iSetTheCursorClass = true;\n\t\t\t\t} else if (this.moreProps.hovering\n\t\t\t\t\t&& this.props.selected\n\t\t\t\t\t&& amIOnTop(this.suscriberId)) {\n\t\t\t\t\tsetCursorClass(this.props.interactiveCursorClass);\n\t\t\t\t\tthis.iSetTheCursorClass = true;\n\t\t\t\t} else if (prevHover\n\t\t\t\t\t&& !this.moreProps.hovering\n\t\t\t\t\t&& this.iSetTheCursorClass) {\n\t\t\t\t\tthis.iSetTheCursorClass = false;\n\t\t\t\t\tsetCursorClass(null);\n\t\t\t\t}\n\t\t\t\tconst moreProps = this.getMoreProps();\n\n\t\t\t\tif (this.moreProps.hovering && !prevHover) {\n\t\t\t\t\tif (this.props.onHover) {\n\t\t\t\t\t\tthis.props.onHover(moreProps, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (prevHover && !this.moreProps.hovering) {\n\t\t\t\t\tif (this.props.onUnHover) {\n\t\t\t\t\t\tthis.props.onUnHover(moreProps, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.props.onMouseMove) {\n\t\t\t\t\tthis.props.onMouseMove(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dblclick\": {\n\t\t\t\tconst moreProps = this.getMoreProps();\n\n\t\t\t\tif (this.props.onDoubleClick) {\n\t\t\t\t\tthis.props.onDoubleClick(moreProps, e);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.moreProps.hovering\n\t\t\t\t&& this.props.onDoubleClickWhenHover\n\t\t\t\t) {\n\t\t\t\t\tthis.props.onDoubleClickWhenHover(moreProps, e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"pan\": {\n\t\t\t\tthis.moreProps.hovering = false;\n\t\t\t\tif (this.props.onPan) {\n\t\t\t\t\tthis.props.onPan(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"panend\": {\n\t\t\t\tif (this.props.onPanEnd) {\n\t\t\t\t\tthis.props.onPanEnd(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dragstart\": {\n\t\t\t\tif (this.getPanConditions().draggable) {\n\t\t\t\t\tconst { amIOnTop } = this.context;\n\t\t\t\t\tif (amIOnTop(this.suscriberId)) {\n\t\t\t\t\t\tthis.dragInProgress = true;\n\t\t\t\t\t\tthis.props.onDragStart(this.getMoreProps(), e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.someDragInProgress = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"drag\": {\n\t\t\t\tif (this.dragInProgress && this.props.onDrag) {\n\t\t\t\t\tthis.props.onDrag(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dragend\": {\n\t\t\t\tif (this.dragInProgress && this.props.onDragComplete) {\n\t\t\t\t\tthis.props.onDragComplete(this.getMoreProps(), e);\n\t\t\t\t}\n\t\t\t\tthis.dragInProgress = false;\n\t\t\t\tthis.someDragInProgress = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"dragcancel\": {\n\t\t\t\tif (this.dragInProgress || this.iSetTheCursorClass) {\n\t\t\t\t\tconst { setCursorClass } = this.context;\n\t\t\t\t\tsetCursorClass(null);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tisHover(e) {\n\t\treturn isDefined(this.props.isHover)\n\t\t\t? this.props.isHover(this.getMoreProps(), e)\n\t\t\t: false;\n\t}\n\tgetPanConditions() {\n\t\tconst draggable = (\n\t\t\t!!(this.props.selected && this.moreProps.hovering)\n\t\t\t|| (this.props.enableDragOnHover && this.moreProps.hovering)\n\t\t);\n\n\t\treturn {\n\t\t\tdraggable,\n\t\t\tpanEnabled: !this.props.disablePan,\n\t\t};\n\t}\n\tdraw({ trigger, force } = { force: false }) {\n\t\tconst type = aliases[trigger] || trigger;\n\t\tconst proceed = this.props.drawOn.indexOf(type) > -1;\n\n\t\tif (proceed\n\t\t\t|| this.props.selected /* this is to draw as soon as you select */\n\t\t\t|| force\n\t\t) {\n\t\t\tconst { chartCanvasType } = this.context;\n\t\t\tconst { canvasDraw } = this.props;\n\n\t\t\tif (isNotDefined(canvasDraw) || chartCanvasType === \"svg\") {\n\t\t\t\tconst { updateCount } = this.state;\n\t\t\t\tthis.setState({\n\t\t\t\t\tupdateCount: updateCount + 1,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.drawOnCanvas();\n\t\t\t}\n\t\t}\n\t}\n\tcomponentWillMount() {\n\t\tconst { subscribe, chartId } = this.context;\n\t\tconst { clip, edgeClip } = this.props;\n\n\t\tsubscribe(this.suscriberId,\n\t\t\t{\n\t\t\t\tchartId, clip, edgeClip,\n\t\t\t\tlistener: this.listener,\n\t\t\t\tdraw: this.draw,\n\t\t\t\tgetPanConditions: this.getPanConditions,\n\t\t\t}\n\t\t);\n\t\tthis.componentWillReceiveProps(this.props, this.context);\n\t}\n\tcomponentWillUnmount() {\n\t\tconst { unsubscribe } = this.context;\n\t\tunsubscribe(this.suscriberId);\n\t\tif (this.iSetTheCursorClass) {\n\t\t\tconst { setCursorClass } = this.context;\n\t\t\tsetCursorClass(null);\n\t\t}\n\t}\n\tcomponentDidMount() {\n\t\tthis.componentDidUpdate(this.props);\n\t}\n\tcomponentDidUpdate(prevProps) {\n\t\tconst { chartCanvasType } = this.context;\n\t\tconst { canvasDraw, selected, interactiveCursorClass } = this.props;\n\n\t\tif (prevProps.selected !== selected) {\n\t\t\tconst { setCursorClass } = this.context;\n\t\t\tif (selected && this.moreProps.hovering) {\n\t\t\t\tthis.iSetTheCursorClass = true;\n\t\t\t\tsetCursorClass(interactiveCursorClass);\n\t\t\t} else {\n\t\t\t\tthis.iSetTheCursorClass = false;\n\t\t\t\tsetCursorClass(null);\n\t\t\t}\n\t\t}\n\t\tif (isDefined(canvasDraw)\n\t\t\t\t&& !this.evaluationInProgress\n\t\t\t\t// && !(this.someDragInProgress && this.props.selected)\n\t\t\t\t/*\n\t\t\t\tprevent double draw of interactive elements\n\t\t\t\tduring dragging / hover / click etc.\n\t\t\t\t*/\n\t\t\t\t&& chartCanvasType !== \"svg\") {\n\n\t\t\tthis.updateMoreProps(this.moreProps);\n\t\t\tthis.drawOnCanvas();\n\t\t}\n\t}\n\tcomponentWillReceiveProps(nextProps, nextContext) {\n\t\tconst { xScale, plotData, chartConfig, getMutableState } = nextContext;\n\n\t\tthis.props.debug(nextContext);\n\t\tthis.moreProps = {\n\t\t\t...this.moreProps,\n\t\t\t...getMutableState(),\n\t\t\t/*\n\t\t\t^ this is so\n\t\t\tmouseXY, currentCharts, currentItem are available to\n\t\t\tnewly created components like MouseHoverText which\n\t\t\tis created right after a new interactive object is drawn\n\t\t\t*/\n\t\t\txScale, plotData, chartConfig\n\t\t};\n\t}\n\tgetMoreProps() {\n\t\tconst {\n\t\t\txScale,\n\t\t\tplotData,\n\t\t\tchartConfig,\n\t\t\tmorePropsDecorator,\n\t\t\txAccessor,\n\t\t\tdisplayXAccessor,\n\t\t\twidth,\n\t\t\theight,\n\t\t} = this.context;\n\n\t\tconst { chartId, fullData } = this.context;\n\n\t\tconst moreProps = {\n\t\t\txScale, plotData, chartConfig,\n\t\t\txAccessor, displayXAccessor,\n\t\t\twidth, height,\n\t\t\tchartId,\n\t\t\tfullData,\n\t\t\t...this.moreProps,\n\t\t};\n\n\t\treturn (morePropsDecorator || identity)(moreProps);\n\t}\n\tpreCanvasDraw() {\n\t\t// do nothing\n\t}\n\tpostCanvasDraw() {\n\t}\n\tdrawOnCanvas() {\n\t\tconst { canvasDraw, canvasToDraw } = this.props;\n\t\tconst { getCanvasContexts } = this.context;\n\n\t\tconst moreProps = this.getMoreProps();\n\n\t\tconst ctx = canvasToDraw(getCanvasContexts());\n\n\t\tthis.preCanvasDraw(ctx, moreProps);\n\t\tcanvasDraw(ctx, moreProps);\n\t\tthis.postCanvasDraw(ctx, moreProps);\n\t}\n\trender() {\n\t\tconst { chartCanvasType, chartId } = this.context;\n\t\tconst { canvasDraw, clip, svgDraw } = this.props;\n\n\t\tif (isDefined(canvasDraw) && chartCanvasType !== \"svg\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst suffix = isDefined(chartId) ? \"-\" + chartId : \"\";\n\n\t\tconst style = clip ? { \"clipPath\": `url(#chart-area-clip${suffix})` } : null;\n\n\t\treturn <g style={style}>{svgDraw(this.getMoreProps())}</g>;\n\t}\n}\n\nGenericComponent.propTypes = {\n\tsvgDraw: PropTypes.func.isRequired,\n\tcanvasDraw: PropTypes.func,\n\n\tdrawOn: PropTypes.array.isRequired,\n\n\tclip: PropTypes.bool.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tinteractiveCursorClass: PropTypes.string,\n\n\tselected: PropTypes.bool.isRequired,\n\tenableDragOnHover: PropTypes.bool.isRequired,\n\tdisablePan: PropTypes.bool.isRequired,\n\n\tcanvasToDraw: PropTypes.func.isRequired,\n\n\tisHover: PropTypes.func,\n\n\tonClick: PropTypes.func,\n\tonClickWhenHover: PropTypes.func,\n\tonClickOutside: PropTypes.func,\n\n\tonPan: PropTypes.func,\n\tonPanEnd: PropTypes.func,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragComplete: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonDoubleClickWhenHover: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tonContextMenuWhenHover: PropTypes.func,\n\tonMouseMove: PropTypes.func,\n\tonMouseDown: PropTypes.func,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\n\tdebug: PropTypes.func,\n\t// owner: PropTypes.string.isRequired,\n};\n\nGenericComponent.defaultProps = {\n\tsvgDraw: functor(null),\n\tdraw: [],\n\tcanvasToDraw: contexts => contexts.mouseCoord,\n\tclip: true,\n\tedgeClip: false,\n\tselected: false,\n\tdisablePan: false,\n\tenableDragOnHover: false,\n\n\tonClickWhenHover: noop,\n\tonClickOutside: noop,\n\tonDragStart: noop,\n\tonMouseMove: noop,\n\tonMouseDown: noop,\n\tdebug: noop,\n};\n\nGenericComponent.contextTypes = {\n\twidth: PropTypes.number.isRequired,\n\theight: PropTypes.number.isRequired,\n\tmargin: PropTypes.object.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\tgetCanvasContexts: PropTypes.func,\n\n\tchartCanvasType: PropTypes.string,\n\txScale: PropTypes.func.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\tdisplayXAccessor: PropTypes.func.isRequired,\n\tplotData: PropTypes.array.isRequired,\n\tfullData: PropTypes.array.isRequired,\n\n\tchartConfig: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.object,\n\t]).isRequired,\n\n\tmorePropsDecorator: PropTypes.func,\n\tgenerateSubscriptionId: PropTypes.func,\n\tgetMutableState: PropTypes.func.isRequired,\n\n\tamIOnTop: PropTypes.func.isRequired,\n\tsubscribe: PropTypes.func.isRequired,\n\tunsubscribe: PropTypes.func.isRequired,\n\tsetCursorClass: PropTypes.func.isRequired,\n};\n\nexport default GenericComponent;\n\nexport function getAxisCanvas(contexts) {\n\treturn contexts.axes;\n}\n\nexport function getMouseCanvas(contexts) {\n\treturn contexts.mouseCoord;\n}\n","\n\nimport PropTypes from \"prop-types\";\nimport GenericComponent from \"./GenericComponent\";\nimport {\n\tisDefined,\n\tfind,\n} from \"./utils\";\n\nconst ALWAYS_TRUE_TYPES = [\n\t\"drag\",\n\t\"dragend\"\n];\n\nclass GenericChartComponent extends GenericComponent {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\n\t\tthis.preCanvasDraw = this.preCanvasDraw.bind(this);\n\t\tthis.postCanvasDraw = this.postCanvasDraw.bind(this);\n\t\tthis.shouldTypeProceed = this.shouldTypeProceed.bind(this);\n\t\tthis.preEvaluate = this.preEvaluate.bind(this);\n\t}\n\tpreCanvasDraw(ctx, moreProps) {\n\t\tsuper.preCanvasDraw(ctx, moreProps);\n\t\tctx.save();\n\t\tconst { margin, ratio } = this.context;\n\t\tconst { chartConfig } = moreProps;\n\n\t\tconst canvasOriginX = (0.5 * ratio) + chartConfig.origin[0] + margin.left;\n\t\tconst canvasOriginY = (0.5 * ratio) + chartConfig.origin[1] + margin.top;\n\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\t\tconst { clip, edgeClip } = this.props;\n\n\t\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\tctx.scale(ratio, ratio);\n\t\tif (edgeClip) {\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(-1, canvasOriginY - 10, width + margin.left + margin.right + 1, height + 20);\n\t\t\tctx.clip();\n\t\t}\n\n\t\tctx.translate(canvasOriginX, canvasOriginY);\n\n\t\tif (clip) {\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(-1, -1, width + 1, height + 1);\n\t\t\tctx.clip();\n\t\t}\n\t}\n\tpostCanvasDraw(ctx, moreProps) {\n\t\tsuper.postCanvasDraw(ctx, moreProps);\n\t\tctx.restore();\n\t}\n\tupdateMoreProps(moreProps) {\n\t\tsuper.updateMoreProps(moreProps);\n\t\tconst { chartConfig: chartConfigList } = moreProps;\n\n\t\tif (chartConfigList && Array.isArray(chartConfigList)) {\n\t\t\tconst { chartId } = this.context;\n\t\t\tconst chartConfig = find(chartConfigList, each => each.id === chartId);\n\t\t\tthis.moreProps.chartConfig = chartConfig;\n\t\t}\n\t\tif (isDefined(this.moreProps.chartConfig)) {\n\t\t\tconst { origin: [ox, oy] } = this.moreProps.chartConfig;\n\t\t\tif (isDefined(moreProps.mouseXY)) {\n\t\t\t\tconst { mouseXY: [x, y] } = moreProps;\n\t\t\t\tthis.moreProps.mouseXY = [\n\t\t\t\t\tx - ox,\n\t\t\t\t\ty - oy\n\t\t\t\t];\n\t\t\t}\n\t\t\tif (isDefined(moreProps.startPos)) {\n\t\t\t\tconst { startPos: [x, y] } = moreProps;\n\t\t\t\tthis.moreProps.startPos = [\n\t\t\t\t\tx - ox,\n\t\t\t\t\ty - oy\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\t}\n\tpreEvaluate(/* type, moreProps */) {\n\t\t/* if (\n\t\t\ttype === \"mousemove\"\n\t\t\t&& this.props.onMouseMove\n\t\t\t&& isDefined(moreProps)\n\t\t\t&& isDefined(moreProps.currentCharts)\n\t\t) {\n\t\t\tif (moreProps.currentCharts.indexOf(this.context.chartId) === -1) {\n\t\t\t\tmoreProps.show = false;\n\t\t\t}\n\t\t} */\n\t}\n\tshouldTypeProceed(type, moreProps) {\n\t\tif (\n\t\t\t(type === \"mousemove\" || type === \"click\")\n\t\t\t&& this.props.disablePan) {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\tALWAYS_TRUE_TYPES.indexOf(type) === -1\n\t\t\t&& isDefined(moreProps)\n\t\t\t&& isDefined(moreProps.currentCharts)\n\t\t) {\n\t\t\treturn (moreProps.currentCharts.indexOf(this.context.chartId) > -1);\n\t\t}\n\t\treturn true;\n\t}\n}\n\nGenericChartComponent.propTypes = GenericComponent.propTypes;\n\nGenericChartComponent.defaultProps = GenericComponent.defaultProps;\n\nGenericChartComponent.contextTypes = {\n\t...GenericComponent.contextTypes,\n\tcanvasOriginX: PropTypes.number,\n\tcanvasOriginY: PropTypes.number,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\tchartConfig: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n};\n\nexport default GenericChartComponent;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport PureComponent from \"./utils/PureComponent\";\n\nimport { hexToRGBA, isDefined } from \"./utils\";\n\nclass BackgroundText extends PureComponent {\n\tcomponentDidMount() {\n\t\tif (this.context.chartCanvasType !== \"svg\" && isDefined(this.context.getCanvasContexts)) {\n\t\t\tconst contexts = this.context.getCanvasContexts();\n\t\t\tif (contexts) BackgroundText.drawOnCanvas(contexts.bg, this.props, this.context, this.props.children);\n\t\t}\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.componentDidMount();\n\t}\n\trender() {\n\t\tconst { chartCanvasType } = this.context;\n\n\t\tif (chartCanvasType !== \"svg\") return null;\n\n\t\tconst { x, y, fill, opacity, stroke, strokeOpacity, fontFamily, fontSize, textAnchor } = this.props;\n\t\tconst props = { x, y, fill, opacity, stroke, strokeOpacity, fontFamily, fontSize, textAnchor };\n\t\treturn (\n\t\t\t<text {...props}>this.props.children(interval)</text>\n\t\t);\n\t}\n}\n\nBackgroundText.drawOnCanvas = (ctx, props, { interval }, getText) => {\n\tctx.clearRect(-1, -1, ctx.canvas.width + 2, ctx.canvas.height + 2);\n\tctx.save();\n\n\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\tctx.translate(0.5, 0.5);\n\n\tconst { x, y, fill, opacity, stroke, strokeOpacity, fontFamily, fontSize, textAnchor } = props;\n\n\tconst text = getText(interval);\n\n\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\n\tctx.font = `${ fontSize }px ${ fontFamily }`;\n\tctx.fillStyle = hexToRGBA(fill, opacity);\n\tctx.textAlign = textAnchor === \"middle\" ? \"center\" : textAnchor;\n\n\tif (stroke !== \"none\") ctx.strokeText(text, x, y);\n\tctx.fillText(text, x, y);\n\n\tctx.restore();\n};\n\nBackgroundText.propTypes = {\n\tx: PropTypes.number.isRequired,\n\ty: PropTypes.number.isRequired,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number.isRequired,\n\tfill: PropTypes.string,\n\tstroke: PropTypes.string,\n\topacity: PropTypes.number,\n\tstrokeOpacity: PropTypes.number,\n\ttextAnchor: PropTypes.string,\n\tchildren: PropTypes.func,\n};\n\nBackgroundText.defaultProps = {\n\topacity: 0.3,\n\tfill: \"#9E7523\",\n\tstroke: \"#9E7523\",\n\tstrokeOpacity: 1,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\ttextAnchor: \"middle\",\n};\n\nBackgroundText.contextTypes = {\n\tinterval: PropTypes.string.isRequired,\n\tgetCanvasContexts: PropTypes.func,\n\tchartCanvasType: PropTypes.string,\n};\n\nexport default BackgroundText;","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n// import { mean } from \"d3-array\";\n\nimport { path as d3Path } from \"d3-path\";\nimport { interpolateNumber } from \"d3-interpolate\";\n\nimport { last, noop } from \"./utils\";\n\nclass ZoomButtons extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleZoomOut = this.handleZoomOut.bind(this);\n\t\tthis.handleZoomIn = this.handleZoomIn.bind(this);\n\t\tthis.zoom = this.zoom.bind(this);\n\t}\n\tzoom(direction) {\n\t\tconst { xAxisZoom, xScale, plotData, xAccessor } = this.context;\n\t\tconst cx = xScale(xAccessor(last(plotData)));\n\t\t// mean(xScale.range());\n\t\tconst { zoomMultiplier } = this.props;\n\n\t\tconst c = direction > 0 ? 1 * zoomMultiplier : 1 / zoomMultiplier;\n\n\t\tconst [start, end] = xScale.domain();\n\t\tconst [newStart, newEnd] = xScale.range()\n\t\t\t.map(x => cx + (x - cx) * c)\n\t\t\t.map(xScale.invert);\n\n\t\tconst left = interpolateNumber(start, newStart);\n\t\tconst right = interpolateNumber(end, newEnd);\n\n\t\tconst foo = [0.25, 0.3, 0.5, 0.6, 0.75, 1].map(i => {\n\t\t\treturn [left(i), right(i)];\n\t\t});\n\n\t\tthis.interval = setInterval(() => {\n\t\t\txAxisZoom(foo.shift());\n\t\t\tif (foo.length === 0) {\n\t\t\t\tclearInterval(this.interval);\n\t\t\t\tdelete this.interval;\n\t\t\t}\n\t\t}, 10);\n\t}\n\thandleZoomOut() {\n\t\tif (this.interval) return;\n\t\tthis.zoom(1);\n\t}\n\thandleZoomIn() {\n\t\tif (this.interval) return;\n\t\tthis.zoom(-1);\n\t}\n\trender() {\n\t\tconst { chartConfig } = this.context;\n\t\tconst { width, height } = chartConfig;\n\t\tconst { size, heightFromBase, rx, ry } = this.props;\n\t\tconst { stroke, strokeOpacity, fill, strokeWidth, fillOpacity } = this.props;\n\t\tconst { textFill, textStrokeWidth } = this.props;\n\t\tconst { onReset } = this.props;\n\t\tconst centerX = Math.round(width / 2);\n\t\tconst y = height - heightFromBase;\n\n\t\tconst [w, h] = size;\n\t\tconst hLength = 5;\n\t\tconst wLength = 6;\n\n\t\tconst textY = Math.round(y + h / 2);\n\n\t\tconst resetX = centerX;\n\n\t\tconst zoomOut = d3Path();\n\t\tconst zoomOutX = centerX - w - 2 * strokeWidth;\n\t\tzoomOut.moveTo(zoomOutX - wLength, textY);\n\t\tzoomOut.lineTo(zoomOutX + wLength, textY);\n\t\tzoomOut.closePath();\n\n\t\tconst zoomIn = d3Path();\n\t\tconst zoomInX = centerX + w + 2 * strokeWidth;\n\n\t\tzoomIn.moveTo(zoomInX - wLength, textY);\n\t\tzoomIn.lineTo(zoomInX + wLength, textY);\n\n\t\tzoomIn.moveTo(zoomInX, textY - hLength);\n\t\tzoomIn.lineTo(zoomInX, textY + hLength);\n\t\t// zoomIn.closePath();\n\n\t\treturn (\n\t\t\t<g className=\"react-stockcharts-zoom-button\">\n\t\t\t\t<rect\n\t\t\t\t\tx={zoomOutX - w / 2}\n\t\t\t\t\ty={y}\n\t\t\t\t\trx={rx}\n\t\t\t\t\try={ry}\n\t\t\t\t\theight={h}\n\t\t\t\t\twidth={w}\n\t\t\t\t\tfill={fill}\n\t\t\t\t\tfillOpacity={fillOpacity}\n\t\t\t\t\tstroke={stroke}\n\t\t\t\t\tstrokeOpacity={strokeOpacity}\n\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t/>\n\t\t\t\t<path d={zoomOut.toString()}\n\t\t\t\t\tstroke={textFill}\n\t\t\t\t\tstrokeWidth={textStrokeWidth}\n\t\t\t\t/>\n\t\t\t\t<rect\n\t\t\t\t\tx={resetX - w / 2}\n\t\t\t\t\ty={y}\n\t\t\t\t\trx={rx}\n\t\t\t\t\try={ry}\n\t\t\t\t\theight={h}\n\t\t\t\t\twidth={w}\n\t\t\t\t\tfill={fill}\n\t\t\t\t\tfillOpacity={fillOpacity}\n\t\t\t\t\tstroke={stroke}\n\t\t\t\t\tstrokeOpacity={strokeOpacity}\n\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t/>\n\t\t\t\t<g transform={`translate (${resetX}, ${y + h / 4}) scale(.14)`}>\n\t\t\t\t\t<path d=\"M31 13C23.4 5.3 12.8.5 1.1.5c-23.3 0-42.3 19-42.3 42.5s18.9 42.5 42.3 42.5c13.8 0 26-6.6 33.7-16.9l-16.5-1.8C13.5 70.4 7.5 72.5 1 72.5c-16.2 0-29.3-13.2-29.3-29.4S-15.2 13.7 1 13.7c8.1 0 15.4 3.3 20.7 8.6l-10.9 11h32.5V.5L31 13z\"\n\t\t\t\t\t\tfill={textFill}\n\t\t\t\t\t/>\n\t\t\t\t</g>\n\t\t\t\t<rect\n\t\t\t\t\tx={zoomInX - w / 2}\n\t\t\t\t\ty={y}\n\t\t\t\t\trx={rx}\n\t\t\t\t\try={ry}\n\t\t\t\t\theight={h}\n\t\t\t\t\twidth={w}\n\t\t\t\t\tfill={fill}\n\t\t\t\t\tfillOpacity={fillOpacity}\n\t\t\t\t\tstroke={stroke}\n\t\t\t\t\tstrokeOpacity={strokeOpacity}\n\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t/>\n\t\t\t\t<path d={zoomIn.toString()}\n\t\t\t\t\tstroke={textFill}\n\t\t\t\t\tstrokeWidth={textStrokeWidth}\n\t\t\t\t/>\n\t\t\t\t<rect className=\"react-stockcharts-enable-interaction out\"\n\t\t\t\t\tonClick={this.handleZoomOut}\n\t\t\t\t\tx={zoomOutX - w / 2}\n\t\t\t\t\ty={y}\n\t\t\t\t\trx={rx}\n\t\t\t\t\try={ry}\n\t\t\t\t\theight={h}\n\t\t\t\t\twidth={w}\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t\t<rect className=\"react-stockcharts-enable-interaction reset\"\n\t\t\t\t\tonClick={onReset}\n\t\t\t\t\tx={resetX - w / 2}\n\t\t\t\t\ty={y}\n\t\t\t\t\trx={rx}\n\t\t\t\t\try={ry}\n\t\t\t\t\theight={h}\n\t\t\t\t\twidth={w}\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t\t<rect className=\"react-stockcharts-enable-interaction in\"\n\t\t\t\t\tonClick={this.handleZoomIn}\n\t\t\t\t\tx={zoomInX - w / 2}\n\t\t\t\t\ty={y}\n\t\t\t\t\trx={rx}\n\t\t\t\t\try={ry}\n\t\t\t\t\theight={h}\n\t\t\t\t\twidth={w}\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nZoomButtons.propTypes = {\n\tzoomMultiplier: PropTypes.number.isRequired,\n\tsize: PropTypes.array.isRequired,\n\theightFromBase: PropTypes.number.isRequired,\n\trx: PropTypes.number.isRequired,\n\try: PropTypes.number.isRequired,\n\tstroke: PropTypes.string.isRequired,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\tfill: PropTypes.string.isRequired,\n\tfillOpacity: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\ttextDy: PropTypes.string.isRequired,\n\ttextFill: PropTypes.string.isRequired,\n\ttextStrokeWidth: PropTypes.number.isRequired,\n\tonReset: PropTypes.func,\n};\n\nZoomButtons.defaultProps = {\n\tsize: [30, 24],\n\theightFromBase: 50,\n\trx: 3,\n\try: 3,\n\tstroke: \"#000000\",\n\tstrokeOpacity: 0.3,\n\tstrokeWidth: 1,\n\tfill: \"#D6D6D6\",\n\tfillOpacity: 0.4,\n\tfontSize: 16,\n\ttextDy: \".3em\",\n\ttextFill: \"#000000\",\n\ttextStrokeWidth: 2,\n\tzoomMultiplier: 1.5,\n\tonReset: noop,\n};\n\nZoomButtons.contextTypes = {\n\txScale: PropTypes.func.isRequired,\n\tchartConfig: PropTypes.object.isRequired,\n\tplotData: PropTypes.array.isRequired,\n\txAccessor: PropTypes.func.isRequired,\n\txAxisZoom: PropTypes.func.isRequired,\n};\n\nexport default ZoomButtons;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { line as d3Line } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport {\n\tisDefined,\n\tgetClosestItemIndexes,\n\tstrokeDashTypes,\n\tgetStrokeDasharray,\n\thexToRGBA,\n} from \"../utils\";\n\nclass LineSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\t// console.log(\"HERE\")\n\t\tconst { highlightOnHover, yAccessor, hoverTolerance } = this.props;\n\n\t\tif (!highlightOnHover) return false;\n\n\t\tconst { mouseXY, currentItem, xScale, plotData } = moreProps;\n\t\tconst { chartConfig: { yScale, origin } } = moreProps;\n\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst [x, y] = mouseXY;\n\t\tconst radius = hoverTolerance;\n\n\t\tconst { left, right } = getClosestItemIndexes(plotData, xScale.invert(x), xAccessor);\n\t\tif (left === right) {\n\t\t\tconst cy = yScale(yAccessor(currentItem)) + origin[1];\n\t\t\tconst cx = xScale(xAccessor(currentItem)) + origin[0];\n\n\t\t\tconst hovering1 = Math.pow(x - cx, 2) + Math.pow(y - cy, 2) < Math.pow(radius, 2);\n\n\t\t\treturn hovering1;\n\t\t} else {\n\t\t\tconst l = plotData[left];\n\t\t\tconst r = plotData[right];\n\t\t\tconst x1 = xScale(xAccessor(l)) + origin[0];\n\t\t\tconst y1 = yScale(yAccessor(l)) + origin[1];\n\t\t\tconst x2 = xScale(xAccessor(r)) + origin[0];\n\t\t\tconst y2 = yScale(yAccessor(r)) + origin[1];\n\n\t\t\t// y = m * x + b\n\t\t\tconst m /* slope */ = (y2 - y1) / (x2 - x1);\n\t\t\tconst b /* y intercept */ = -1 * m * x1 + y1;\n\n\t\t\tconst desiredY = Math.round(m * x + b);\n\n\t\t\tconst hovering2 = y >= desiredY - radius && y <= desiredY + radius;\n\n\t\t\treturn hovering2;\n\t\t}\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst {\n\t\t\tyAccessor,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeWidth,\n\t\t\thoverStrokeWidth,\n\t\t\tdefined,\n\t\t\tstrokeDasharray,\n\t\t\tinterpolation,\n\t\t\tcanvasClip,\n\t\t} = this.props;\n\n\t\tconst { connectNulls } = this.props;\n\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData, hovering } = moreProps;\n\n\t\tif (canvasClip) {\n\t\t\tctx.save();\n\t\t\tcanvasClip(ctx, moreProps);\n\t\t}\n\n\t\tctx.lineWidth = hovering ? hoverStrokeWidth : strokeWidth;\n\n\t\tctx.strokeStyle = hexToRGBA(stroke, strokeOpacity);\n\t\tctx.setLineDash(getStrokeDasharray(strokeDasharray).split(\",\"));\n\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\n\t\tctx.beginPath();\n\t\tdataSeries.context(ctx)(plotData);\n\t\tctx.stroke();\n\n\t\tif (canvasClip) {\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor, stroke, strokeOpacity, strokeWidth, hoverStrokeWidth, defined, strokeDasharray } = this.props;\n\t\tconst { connectNulls } = this.props;\n\t\tconst { interpolation, style } = this.props;\n\t\tconst { xAccessor, chartConfig } = moreProps;\n\n\t\tconst { xScale, plotData, hovering } = moreProps;\n\n\t\tconst { yScale } = chartConfig;\n\t\tconst dataSeries = d3Line()\n\t\t\t.x(d => Math.round(xScale(xAccessor(d))))\n\t\t\t.y(d => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tdataSeries.curve(interpolation);\n\t\t}\n\t\tif (!connectNulls) {\n\t\t\tdataSeries.defined(d => defined(yAccessor(d)));\n\t\t}\n\t\tconst d = dataSeries(plotData);\n\n\t\tconst { fill, className } = this.props;\n\n\t\treturn (\n\t\t\t<path\n\t\t\t\tstyle={style}\n\t\t\t\tclassName={`${className} ${stroke ? \"\" : \" line-stroke\"}`}\n\t\t\t\td={d}\n\t\t\t\tstroke={stroke}\n\t\t\t\tstrokeOpacity={strokeOpacity}\n\t\t\t\tstrokeWidth={hovering ? hoverStrokeWidth : strokeWidth}\n\t\t\t\tstrokeDasharray={getStrokeDasharray(strokeDasharray)}\n\t\t\t\tfill={fill}\n\t\t\t/>\n\t\t);\n\t}\n\trender() {\n\t\tconst { highlightOnHover, onHover, onUnHover } = this.props;\n\t\tconst hoverProps = (highlightOnHover || onHover || onUnHover)\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\n\t\t\tonClickWhenHover={this.props.onClick}\n\t\t\tonDoubleClickWhenHover={this.props.onDoubleClick}\n\t\t\tonContextMenuWhenHover={this.props.onContextMenu}\n\t\t\tonHover={this.props.onHover}\n\t\t\tonUnHover={this.props.onUnHover}\n\t\t\t{...hoverProps}\n\t\t/>;\n\t}\n}\n\n/*\nfunction segment(points, ctx) {\n\tctx.beginPath();\n\n\tconst [x, y] = first(points);\n\tctx.moveTo(x, y);\n\tfor (let i = 1; i < points.length; i++) {\n\t\tconst [x1, y1] = points[i];\n\t\tctx.lineTo(x1, y1);\n\t}\n\n\tctx.stroke();\n}\n*/\n\nLineSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tstrokeOpacity: PropTypes.number,\n\tstroke: PropTypes.string,\n\thoverStrokeWidth: PropTypes.number,\n\tfill: PropTypes.string,\n\tdefined: PropTypes.func,\n\thoverTolerance: PropTypes.number,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\thighlightOnHover: PropTypes.bool,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonHover: PropTypes.func,\n\tonUnHover: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\tyAccessor: PropTypes.func,\n\tconnectNulls: PropTypes.bool,\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n};\n\nLineSeries.defaultProps = {\n\tclassName: \"line \",\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\thoverStrokeWidth: 4,\n\tfill: \"none\",\n\tstroke: \"#4682B4\",\n\tstrokeDasharray: \"Solid\",\n\tdefined: d => !isNaN(d),\n\thoverTolerance: 6,\n\thighlightOnHover: false,\n\tconnectNulls: false,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default LineSeries;\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\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","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 {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","\nexport { default as ema } from \"./ema\";\nexport { default as sma } from \"./sma\";\nexport { default as wma } from \"./wma\";\nexport { default as tma } from \"./tma\";\nexport { default as bollingerBand } from \"./bollingerBand\";\nexport { default as heikinAshi } from \"./heikinAshi\";\nexport { default as kagi } from \"./kagi\";\nexport { default as pointAndFigure } from \"./pointAndFigure\";\nexport { default as renko } from \"./renko\";\nexport { default as macd } from \"./macd\";\nexport { default as rsi } from \"./rsi\";\nexport { default as atr } from \"./atr\";\nexport { default as stochasticOscillator } from \"./stochasticOscillator\";\nexport { default as forceIndex } from \"./forceIndex\";\nexport { default as sar } from \"./sar\";\nexport { default as elderRay } from \"./elderRay\";\nexport { default as change } from \"./change\";\nexport { default as elderImpulse } from \"./elderImpulse\";\nexport { default as compare } from \"./compare\";\n\nimport * as defaultOptionsForComputation from \"../calculator/defaultOptionsForComputation\";\nimport * as defaultOptionsForAppearance from \"./defaultOptionsForAppearance\";\n\nexport {\n\tdefaultOptionsForComputation,\n\tdefaultOptionsForAppearance\n};\n","\n\nexport default d => d;","export default () => {};","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { hexToRGBA, isDefined, isNotDefined, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nclass StraightLine extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { type, stroke, strokeWidth, opacity, strokeDasharray } = this.props;\n\t\tconst { yValue, xValue } = this.props;\n\t\tconst { xScale } = moreProps;\n\t\tconst { chartConfig: { yScale, width, height } } = moreProps;\n\n\t\tctx.beginPath();\n\n\t\tctx.strokeStyle = hexToRGBA(stroke, opacity);\n\t\tctx.lineWidth = strokeWidth;\n\n\t\tconst { x1, y1, x2, y2 } = getLineCoordinates(type, xScale, yScale, xValue, yValue, width, height);\n\n\t\tctx.setLineDash(getStrokeDasharray(strokeDasharray).split(\",\"));\n\t\tctx.moveTo(x1, y1);\n\t\tctx.lineTo(x2, y2);\n\t\tctx.stroke();\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { width, height } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale } } = moreProps;\n\n\t\tconst { className } = this.props;\n\t\tconst { type, stroke, strokeWidth, opacity, strokeDasharray } = this.props;\n\t\tconst { yValue, xValue } = this.props;\n\n\t\tconst lineCoordinates = getLineCoordinates(type, xScale, yScale, xValue, yValue, width, height);\n\n\t\treturn (\n\t\t\t<line\n\t\t\t\tclassName={className}\n\t\t\t\tstrokeDasharray={getStrokeDasharray(strokeDasharray)}\n\t\t\t\tstroke={stroke}\n\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\tstrokeOpacity={opacity}\n\t\t\t\t{...lineCoordinates}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nfunction getLineCoordinates(type, xScale, yScale, xValue, yValue, width, height) {\n\treturn type === \"horizontal\"\n\t\t? { x1: 0, y1: Math.round(yScale(yValue)), x2: width, y2: Math.round(yScale(yValue)) }\n\t\t: { x1: Math.round(xScale(xValue)), y1: 0, x2: Math.round(xScale(xValue)), y2: height };\n}\n\nStraightLine.propTypes = {\n\tclassName: PropTypes.string,\n\ttype: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\tstroke: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\topacity: PropTypes.number.isRequired,\n\tyValue: function(props, propName/* , componentName */) {\n\t\tif (props.type === \"vertical\" && isDefined(props[propName])) return new Error(\"Do not define `yValue` when type is `vertical`, define the `xValue` prop\");\n\t\tif (props.type === \"horizontal\" && isNotDefined(props[propName])) return new Error(\"when type = `horizontal` `yValue` is required\");\n\t\t// if (isDefined(props[propName]) && typeof props[propName] !== \"number\") return new Error(\"prop `yValue` accepts a number\");\n\t},\n\txValue: function(props, propName/* , componentName */) {\n\t\tif (props.type === \"horizontal\" && isDefined(props[propName])) return new Error(\"Do not define `xValue` when type is `horizontal`, define the `yValue` prop\");\n\t\tif (props.type === \"vertical\" && isNotDefined(props[propName])) return new Error(\"when type = `vertical` `xValue` is required\");\n\t\t// if (isDefined(props[propName]) && typeof props[propName] !== \"number\") return new Error(\"prop `xValue` accepts a number\");\n\t},\n};\n\nStraightLine.defaultProps = {\n\tclassName: \"line \",\n\ttype: \"horizontal\",\n\tstroke: \"#000000\",\n\topacity: 0.5,\n\tstrokeWidth: 1,\n\tstrokeDasharray: \"Solid\",\n};\n\nexport default StraightLine;\n","\n\n/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/exponentialMovingAverage.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport { isNotDefined, path } from \"../utils\";\nimport { EMA as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, sourcePath } = options;\n\n\t\tconst source = path(sourcePath);\n\t\tconst alpha = 2 / (windowSize + 1);\n\t\tlet previous;\n\t\tlet initialAccumulator = 0;\n\t\tlet skip = 0;\n\n\t\treturn data.map(function(d, i) {\n\t\t\tconst v = source(d, i);\n\t\t\tif (isNotDefined(previous) && isNotDefined(v)) {\n\t\t\t\tskip++;\n\t\t\t\treturn undefined;\n\t\t\t} else if (i < windowSize + skip - 1) {\n\t\t\t\tinitialAccumulator += v;\n\t\t\t\treturn undefined;\n\t\t\t} else if (i === windowSize + skip - 1) {\n\t\t\t\tinitialAccumulator += v;\n\t\t\t\tconst initialValue = initialAccumulator / windowSize;\n\t\t\t\tprevious = initialValue;\n\t\t\t\treturn initialValue;\n\t\t\t} else {\n\t\t\t\tconst nextValue = v * alpha + (1 - alpha) * previous;\n\t\t\t\tprevious = nextValue;\n\t\t\t\treturn nextValue;\n\t\t\t}\n\t\t});\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export { default as MACDTooltip } from \"./MACDTooltip\";\nexport { default as OHLCTooltip } from \"./OHLCTooltip\";\nexport { default as SingleValueTooltip } from \"./SingleValueTooltip\";\nexport { default as MovingAverageTooltip } from \"./MovingAverageTooltip\";\nexport { default as BollingerBandTooltip } from \"./BollingerBandTooltip\";\nexport { default as RSITooltip } from \"./RSITooltip\";\nexport { default as StochasticTooltip } from \"./StochasticTooltip\";\nexport { default as HoverTooltip } from \"./HoverTooltip\";\nexport { default as ToolTipText } from \"./ToolTipText\";\nexport { default as ToolTipTSpanLabel } from \"./ToolTipTSpanLabel\";\nexport { default as GroupTooltip } from \"./GroupTooltip\";\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { nest as d3Nest } from \"d3-collection\";\nimport { merge } from \"d3-array\";\nimport { stack as d3Stack } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { identity, hexToRGBA, head, functor, plotDataLengthBarWidth } from \"../utils\";\n\nclass StackedBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\t// var { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, d3Stack);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\treturn <g>{svgHelper(this.props, moreProps, xAccessor, d3Stack)}</g>;\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn <GenericChartComponent\n\t\t\tclip={clip}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nStackedBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclip: PropTypes.bool.isRequired,\n};\n\nStackedBarSeries.defaultProps = {\n\tbaseAt: (xScale, yScale/* , d*/) => head(yScale.range()),\n\tdirection: \"up\",\n\tclassName: \"bar\",\n\tstroke: true,\n\tfill: \"#4682B4\",\n\topacity: 0.5,\n\twidth: plotDataLengthBarWidth,\n\twidthRatio: 0.8,\n\tclip: true,\n\tswapScales: false,\n};\n\nexport function identityStack() {\n\tlet keys = [];\n\tfunction stack(data) {\n\t\tconst response = keys.map((key, i) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet arrays = data.map(d => {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet array = [0, d[key]];\n\t\t\t\tarray.data = d;\n\t\t\t\treturn array;\n\t\t\t});\n\t\t\tarrays.key = key;\n\t\t\tarrays.index = i;\n\t\t\treturn arrays;\n\t\t});\n\t\treturn response;\n\t}\n\tstack.keys = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn keys;\n\t\t}\n\t\tkeys = x;\n\t\treturn stack;\n\t};\n\treturn stack;\n}\n\n\nexport function drawOnCanvasHelper(ctx, props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\n\tdrawOnCanvas2(props, ctx, bars);\n}\n\nfunction convertToArray(item) {\n\treturn Array.isArray(item) ? item : [item];\n}\n\nexport function svgHelper(props, moreProps, xAccessor, stackFn, defaultPostAction = identity, postRotateAction = rotateXY) {\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\tconst bars = doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction);\n\treturn getBarsSVG2(props, bars);\n}\n\nfunction doStuff(props, xAccessor, plotData, xScale, yScale, stackFn, postRotateAction, defaultPostAction) {\n\tconst { yAccessor, swapScales } = props;\n\n\tconst modifiedYAccessor = swapScales ? convertToArray(props.xAccessor) : convertToArray(yAccessor);\n\tconst modifiedXAccessor = swapScales ? yAccessor : xAccessor;\n\n\tconst modifiedXScale = swapScales ? yScale : xScale;\n\tconst modifiedYScale = swapScales ? xScale : yScale;\n\n\tconst postProcessor = swapScales ? postRotateAction : defaultPostAction;\n\n\tconst bars = getBars(props, modifiedXAccessor, modifiedYAccessor, modifiedXScale, modifiedYScale, plotData, stackFn, postProcessor);\n\n\treturn bars;\n}\n\nexport const rotateXY = (array) => array.map(each => {\n\treturn {\n\t\t...each,\n\t\tx: each.y,\n\t\ty: each.x,\n\t\theight: each.width,\n\t\twidth: each.height\n\t};\n});\n\nexport function getBarsSVG2(props, bars) {\n\t/* eslint-disable react/prop-types */\n\tconst { opacity } = props;\n\t/* eslint-enable react/prop-types */\n\n\treturn bars.map((d, idx) => {\n\t\tif (d.width <= 1) {\n\t\t\treturn <line key={idx} className={d.className}\n\t\t\t\tstroke={d.fill}\n\t\t\t\tx1={d.x} y1={d.y}\n\t\t\t\tx2={d.x} y2={d.y + d.height} />;\n\t\t}\n\t\treturn <rect key={idx} className={d.className}\n\t\t\tstroke={d.stroke}\n\t\t\tfill={d.fill}\n\t\t\tx={d.x}\n\t\t\ty={d.y}\n\t\t\twidth={d.width}\n\t\t\tfillOpacity={opacity}\n\t\t\theight={d.height} />;\n\t});\n}\n\nexport function drawOnCanvas2(props, ctx, bars) {\n\tconst { stroke } = props;\n\n\tconst nest = d3Nest()\n\t\t.key(d => d.fill)\n\t\t.entries(bars);\n\n\tnest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tif (head(values).width > 1) {\n\t\t\tctx.strokeStyle = key;\n\t\t}\n\t\tconst fillStyle = head(values).width <= 1\n\t\t\t? key\n\t\t\t: hexToRGBA(key, props.opacity);\n\t\tctx.fillStyle = fillStyle;\n\n\t\tvalues.forEach(d => {\n\t\t\tif (d.width <= 1) {\n\t\t\t\t/* <line key={idx} className={d.className}\n\t\t\t\t\t\t\tstroke={stroke}\n\t\t\t\t\t\t\tfill={fill}\n\t\t\t\t\t\t\tx1={d.x} y1={d.y}\n\t\t\t\t\t\t\tx2={d.x} y2={d.y + d.height} />*/\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\tctx.lineTo(d.x, d.y + d.height);\n\t\t\t\tctx.stroke();\n\t\t\t\t*/\n\t\t\t\tctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n\t\t\t} else {\n\t\t\t\t/* <rect key={idx} className={d.className}\n\t\t\t\t\t\tstroke={stroke}\n\t\t\t\t\t\tfill={fill}\n\t\t\t\t\t\tx={d.x}\n\t\t\t\t\t\ty={d.y}\n\t\t\t\t\t\twidth={d.width}\n\t\t\t\t\t\theight={d.height} /> */\n\t\t\t\t/*\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\t\t\tctx.fill();\n\t\t\t\t*/\n\t\t\t\tctx.fillRect(d.x, d.y, d.width, d.height);\n\t\t\t\tif (stroke) ctx.strokeRect(d.x, d.y, d.width, d.height);\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nexport function getBars(props, xAccessor, yAccessor, xScale, yScale, plotData, stack = identityStack, after = identity) {\n\tconst { baseAt, className, fill, stroke, spaceBetweenBar = 0 } = props;\n\n\tconst getClassName = functor(className);\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\n\tconst widthFunctor = functor(props.width);\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\n\tconst barWidth = Math.round(width);\n\n\tconst eachBarWidth = (barWidth - spaceBetweenBar * (yAccessor.length - 1)) / yAccessor.length;\n\n\tconst offset = (barWidth === 1 ? 0 : 0.5 * width);\n\n\tconst ds = plotData\n\t\t.map(each => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet d = {\n\t\t\t\tappearance: {\n\t\t\t\t},\n\t\t\t\tx: xAccessor(each),\n\t\t\t};\n\t\t\tyAccessor.forEach((eachYAccessor, i) => {\n\t\t\t\tconst key = `y${i}`;\n\t\t\t\td[key] = eachYAccessor(each);\n\t\t\t\tconst appearance = {\n\t\t\t\t\tclassName: getClassName(each, i),\n\t\t\t\t\tstroke: stroke ? getFill(each, i) : \"none\",\n\t\t\t\t\tfill: getFill(each, i),\n\t\t\t\t};\n\t\t\t\td.appearance[key] = appearance;\n\t\t\t});\n\t\t\treturn d;\n\t\t});\n\n\tconst keys = yAccessor.map((_, i) => `y${i}`);\n\n\t// console.log(ds);\n\n\tconst data = stack().keys(keys)(ds);\n\n\t// console.log(data);\n\n\tconst newData = data.map((each, i) => {\n\t\tconst key = each.key;\n\t\treturn each.map((d) => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet array = [d[0], d[1]];\n\t\t\tarray.data = {\n\t\t\t\tx: d.data.x,\n\t\t\t\ti,\n\t\t\t\tappearance: d.data.appearance[key]\n\t\t\t};\n\t\t\treturn array;\n\t\t});\n\t});\n\t// console.log(newData);\n\t// console.log(merge(newData));\n\n\tconst bars = merge(newData)\n\t\t// .filter(d => isDefined(d.y))\n\t\t.map(d => {\n\t\t\t// let baseValue = yScale.invert(getBase(xScale, yScale, d.datum));\n\t\t\tlet y = yScale(d[1]);\n\t\t\t/* let h = isDefined(d.y0) && d.y0 !== 0 && !isNaN(d.y0)\n\t\t\t\t\t? yScale(d.y0) - y\n\t\t\t\t\t: getBase(xScale, yScale, d.datum) - yScale(d.y)*/\n\t\t\tlet h = getBase(xScale, yScale, d.data) - yScale(d[1] - d[0]);\n\t\t\t// console.log(d.y, yScale.domain(), yScale.range())\n\t\t\t// let h = ;\n\t\t\t// if (d.y < 0) h = -h;\n\t\t\t// console.log(d, y, h)\n\t\t\tif (h < 0) {\n\t\t\t\ty = y + h;\n\t\t\t\th = -h;\n\t\t\t}\n\t\t\t// console.log(d.data.i, Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)))\n\t\t\t/* console.log(d.series, d.datum.date, d.x,\n\t\t\t\t\tgetBase(xScale, yScale, d.datum), `d.y=${d.y}, d.y0=${d.y0}, y=${y}, h=${h}`)*/\n\t\t\treturn {\n\t\t\t\t...d.data.appearance,\n\t\t\t\t// series: d.series,\n\t\t\t\t// i: d.x,\n\t\t\t\tx: Math.round(xScale(d.data.x) - width / 2),\n\t\t\t\ty: y,\n\t\t\t\tgroupOffset: Math.round(offset - (d.data.i > 0 ? (eachBarWidth + spaceBetweenBar) * d.data.i : 0)),\n\t\t\t\tgroupWidth: Math.round(eachBarWidth),\n\t\t\t\toffset: Math.round(offset),\n\t\t\t\theight: h,\n\t\t\t\twidth: barWidth,\n\t\t\t};\n\t\t})\n\t\t.filter(bar => !isNaN(bar.y));\n\n\treturn after(bars);\n}\n\nexport default StackedBarSeries;\n","\n\nimport React from \"react\";\n\nimport { hexToRGBA, isDefined, getStrokeDasharray } from \"../utils\";\n\n/* eslint-disable react/prop-types */\nexport function renderSVG(props) {\n\tconst { className } = props;\n\n\tconst edge = helper(props);\n\tif (edge === null) return null;\n\tlet line, coordinateBase, coordinate;\n\n\tif (isDefined(edge.line)) {\n\t\tline = (\n\t\t\t<line\n\t\t\t\tclassName=\"react-stockcharts-cross-hair\"\n\t\t\t\tstrokeOpacity={edge.line.opacity}\n\t\t\t\tstroke={edge.line.stroke}\n\t\t\t\tstrokeDasharray={getStrokeDasharray(edge.line.strokeDasharray)}\n\t\t\t\tx1={edge.line.x1}\n\t\t\t\ty1={edge.line.y1}\n\t\t\t\tx2={edge.line.x2}\n\t\t\t\ty2={edge.line.y2}\n\t\t\t/>\n\t\t);\n\t}\n\tif (isDefined(edge.coordinateBase)) {\n\t\tconst { rectWidth, rectHeight, arrowWidth } = edge.coordinateBase;\n\n\t\tconst path =\n\t\t\tedge.orient === \"left\"\n\t\t\t\t? `M0,0L0,${rectHeight}L${rectWidth},${rectHeight}L${rectWidth +\n\t\t\t\t\t arrowWidth},10L${rectWidth},0L0,0L0,0`\n\t\t\t\t: `M0,${arrowWidth}L${arrowWidth},${rectHeight}L${rectWidth +\n\t\t\t\t\t arrowWidth},${rectHeight}L${rectWidth +\n\t\t\t\t\t arrowWidth},0L${arrowWidth},0L0,${arrowWidth}`;\n\n\t\tcoordinateBase =\n\t\t\tedge.orient === \"left\" || edge.orient === \"right\" ? (\n\t\t\t\t<g\n\t\t\t\t\tkey={1}\n\t\t\t\t\ttransform={`translate(${edge.coordinateBase.edgeXRect},${\n\t\t\t\t\t\tedge.coordinateBase.edgeYRect\n\t\t\t\t\t})`}\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td={path}\n\t\t\t\t\t\tclassName=\"react-stockchart-text-background\"\n\t\t\t\t\t\theight={rectHeight}\n\t\t\t\t\t\twidth={rectWidth}\n\t\t\t\t\t\tstroke={edge.coordinateBase.stroke}\n\t\t\t\t\t\tstrokeLinejoin=\"miter\"\n\t\t\t\t\t\tstrokeOpacity={edge.coordinateBase.strokeOpacity}\n\t\t\t\t\t\tstrokeWidth={edge.coordinateBase.strokeWidth}\n\t\t\t\t\t\tfill={edge.coordinateBase.fill}\n\t\t\t\t\t\tfillOpacity={edge.coordinateBase.opacity}\n\t\t\t\t\t/>\n\t\t\t\t</g>\n\t\t\t) : (\n\t\t\t\t<rect\n\t\t\t\t\tkey={1}\n\t\t\t\t\tclassName=\"react-stockchart-text-background\"\n\t\t\t\t\tx={edge.coordinateBase.edgeXRect}\n\t\t\t\t\ty={edge.coordinateBase.edgeYRect}\n\t\t\t\t\theight={rectHeight}\n\t\t\t\t\twidth={rectWidth}\n\t\t\t\t\tfill={edge.coordinateBase.fill}\n\t\t\t\t\topacity={edge.coordinateBase.opacity}\n\t\t\t\t/>\n\t\t\t);\n\n\t\tcoordinate = (\n\t\t\t<text\n\t\t\t\tkey={2}\n\t\t\t\tx={edge.coordinate.edgeXText}\n\t\t\t\ty={edge.coordinate.edgeYText}\n\t\t\t\ttextAnchor={edge.coordinate.textAnchor}\n\t\t\t\tfontFamily={edge.coordinate.fontFamily}\n\t\t\t\tfontSize={edge.coordinate.fontSize}\n\t\t\t\tdy=\".32em\"\n\t\t\t\tfill={edge.coordinate.textFill}\n\t\t\t>\n\t\t\t\t{edge.coordinate.displayCoordinate}\n\t\t\t</text>\n\t\t);\n\t}\n\treturn (\n\t\t<g className={className}>\n\t\t\t{line}\n\t\t\t{coordinateBase}\n\t\t\t{coordinate}\n\t\t</g>\n\t);\n}\n/* eslint-enable react/prop-types */\n\nfunction helper(props) {\n\tconst {\n\t\tcoordinate: displayCoordinate,\n\t\tshow,\n\t\ttype,\n\t\torient,\n\t\tedgeAt,\n\t\thideLine,\n\t\tlineStrokeDasharray\n\t} = props;\n\tconst {\n\t\tfill,\n\t\topacity,\n\t\tfontFamily,\n\t\tfontSize,\n\t\ttextFill,\n\t\tlineStroke,\n\t\tlineOpacity\n\t} = props;\n\tconst { stroke, strokeOpacity, strokeWidth } = props;\n\tconst { arrowWidth, rectWidth, rectHeight, rectRadius } = props;\n\tconst { x1, y1, x2, y2, dx } = props;\n\n\tif (!show) return null;\n\n\tlet coordinateBase, coordinate;\n\tif (isDefined(displayCoordinate)) {\n\t\tconst textAnchor = \"middle\"; // TODO: Below it is necessary to implement logic for the possibility of alignment from the right or from the left.\n\n\t\tlet edgeXRect, edgeYRect, edgeXText, edgeYText;\n\n\t\tif (type === \"horizontal\") {\n\t\t\tedgeXRect =\n\t\t\t\tdx + (orient === \"right\" ? edgeAt + 1 : edgeAt - rectWidth - 1);\n\t\t\tedgeYRect = y1 - rectHeight / 2 - strokeWidth;\n\t\t\tedgeXText =\n\t\t\t\tdx +\n\t\t\t\t(orient === \"right\"\n\t\t\t\t\t? edgeAt + rectWidth / 2\n\t\t\t\t\t: edgeAt - rectWidth / 2);\n\t\t\tedgeYText = y1;\n\t\t} else {\n\t\t\tconst dy = orient === \"bottom\" ? strokeWidth - 1 : -strokeWidth + 1;\n\t\t\tedgeXRect = x1 - rectWidth / 2;\n\t\t\tedgeYRect =\n\t\t\t\t(orient === \"bottom\" ? edgeAt : edgeAt - rectHeight) + dy;\n\t\t\tedgeXText = x1;\n\t\t\tedgeYText =\n\t\t\t\t(orient === \"bottom\"\n\t\t\t\t\t? edgeAt + rectHeight / 2\n\t\t\t\t\t: edgeAt - rectHeight / 2) + dy;\n\t\t}\n\n\t\tcoordinateBase = {\n\t\t\tedgeXRect,\n\t\t\tedgeYRect,\n\t\t\trectHeight: rectHeight + strokeWidth,\n\t\t\trectWidth,\n\t\t\trectRadius,\n\t\t\tfill,\n\t\t\topacity,\n\t\t\tarrowWidth,\n\t\t\tstroke,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeWidth\n\t\t};\n\t\tcoordinate = {\n\t\t\tedgeXText,\n\t\t\tedgeYText,\n\t\t\ttextAnchor,\n\t\t\tfontFamily,\n\t\t\tfontSize,\n\t\t\ttextFill,\n\t\t\tdisplayCoordinate\n\t\t};\n\t}\n\n\tconst line = hideLine\n\t\t? undefined\n\t\t: {\n\t\t\topacity: lineOpacity,\n\t\t\tstroke: lineStroke,\n\t\t\tstrokeDasharray: lineStrokeDasharray,\n\t\t\tx1,\n\t\t\ty1,\n\t\t\tx2,\n\t\t\ty2\n\t\t};\n\n\treturn {\n\t\tcoordinateBase,\n\t\tcoordinate,\n\t\tline,\n\t\torient\n\t};\n}\n\nexport function drawOnCanvas(ctx, props) {\n\tconst { fontSize, fontFamily } = props;\n\n\tctx.font = `${fontSize}px ${fontFamily}`;\n\tctx.textBaseline = \"middle\";\n\tconst width = Math.round(ctx.measureText(props.coordinate).width + 10);\n\n\tconst edge = helper({ ...props, rectWidth: width });\n\n\tif (edge === null) return;\n\n\tif (isDefined(edge.line)) {\n\t\tconst dashArray = getStrokeDasharray(edge.line.strokeDasharray)\n\t\t\t.split(\",\")\n\t\t\t.map(d => +d);\n\t\tctx.setLineDash(dashArray);\n\t\tctx.strokeStyle = hexToRGBA(edge.line.stroke, edge.line.opacity);\n\t\tctx.lineWidth = 1;\n\t\tctx.beginPath();\n\t\tctx.moveTo(edge.line.x1, edge.line.y1);\n\t\tctx.lineTo(edge.line.x2, edge.line.y2);\n\t\tctx.stroke();\n\t}\n\n\tctx.setLineDash([]);\n\tif (isDefined(edge.coordinateBase)) {\n\t\tconst {\n\t\t\trectWidth,\n\t\t\trectHeight,\n\t\t\trectRadius,\n\t\t\tarrowWidth\n\t\t} = edge.coordinateBase;\n\n\t\tctx.fillStyle = hexToRGBA(\n\t\t\tedge.coordinateBase.fill,\n\t\t\tedge.coordinateBase.opacity\n\t\t);\n\t\tif (isDefined(edge.coordinateBase.stroke)) {\n\t\t\tctx.strokeStyle = hexToRGBA(\n\t\t\t\tedge.coordinateBase.stroke,\n\t\t\t\tedge.coordinateBase.strokeOpacity\n\t\t\t);\n\t\t\tctx.lineWidth = edge.coordinateBase.strokeWidth;\n\t\t}\n\n\t\tlet x = edge.coordinateBase.edgeXRect;\n\t\tconst y = edge.coordinateBase.edgeYRect;\n\t\tconst halfHeight = rectHeight / 2;\n\n\t\tctx.beginPath();\n\t\tif (edge.orient === \"right\") {\n\t\t\tx -= arrowWidth;\n\t\t\tctx.moveTo(x, y + halfHeight);\n\t\t\tctx.lineTo(x + arrowWidth, y);\n\t\t\tctx.lineTo(x + rectWidth + arrowWidth, y);\n\t\t\tctx.lineTo(x + rectWidth + arrowWidth, y + rectHeight);\n\t\t\tctx.lineTo(x + arrowWidth, y + rectHeight);\n\t\t\tctx.closePath();\n\t\t} else if (edge.orient === \"left\") {\n\t\t\t// x += arrowWidth;\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + rectWidth, y);\n\t\t\tctx.lineTo(x + rectWidth + arrowWidth, y + halfHeight);\n\t\t\tctx.lineTo(x + rectWidth, y + rectHeight);\n\t\t\tctx.lineTo(x, y + rectHeight);\n\t\t\tctx.closePath();\n\t\t} else {\n\t\t\t// console.error(x, y, rectWidth, rectHeight)\n\t\t\tif (rectRadius) {\n\t\t\t\troundRect(ctx, x, y, rectWidth, rectHeight, 3);\n\t\t\t} else {\n\t\t\t\tctx.rect(x, y, rectWidth, rectHeight);\n\t\t\t}\n\t\t}\n\t\tctx.fill();\n\n\t\tif (isDefined(edge.coordinateBase.stroke)) {\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tctx.fillStyle = edge.coordinate.textFill;\n\t\tctx.textAlign =\n\t\t\tedge.coordinate.textAnchor === \"middle\"\n\t\t\t\t? \"center\"\n\t\t\t\t: edge.coordinate.textAnchor;\n\t\tctx.fillText(\n\t\t\tedge.coordinate.displayCoordinate,\n\t\t\tedge.coordinate.edgeXText,\n\t\t\tedge.coordinate.edgeYText\n\t\t);\n\t}\n}\n\nfunction roundRect(ctx, x, y, width, height, radius) {\n\tctx.beginPath();\n\tctx.moveTo(x + radius, y);\n\tctx.lineTo(x + width - radius, y);\n\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\tctx.lineTo(x + width, y + height - radius);\n\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\tctx.lineTo(x + radius, y + height);\n\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\tctx.lineTo(x, y + radius);\n\tctx.quadraticCurveTo(x, y, x + radius, y);\n\tctx.closePath();\n}\n\n// export default EdgeCoordinate;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","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","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import {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","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","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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","\nexport { default as TypeChooser } from \"./TypeChooser\";\nexport { default as SaveChartAsImage } from \"./SaveChartAsImage\";\nexport { default as fitWidth } from \"./fitWidth\";\nexport { default as fitDimensions } from \"./fitDimensions\";\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default 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}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _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\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { area as d3Area } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { hexToRGBA, isDefined, first, functor } from \"../utils\";\n\nclass AreaOnlySeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor, defined, base, canvasGradient } = this.props;\n\t\tconst { fill, stroke, opacity, interpolation, canvasClip } = this.props;\n\n\t\tconst { xScale, chartConfig: { yScale }, plotData, xAccessor } = moreProps;\n\n\t\tif (canvasClip) {\n\t\t\tctx.save();\n\t\t\tcanvasClip(ctx, moreProps);\n\t\t}\n\n\t\tif (canvasGradient != null) {\n\t\t\tctx.fillStyle = canvasGradient(moreProps, ctx);\n\t\t} else {\n\t\t\tctx.fillStyle = hexToRGBA(fill, opacity);\n\t\t}\n\t\tctx.strokeStyle = stroke;\n\n\t\tctx.beginPath();\n\t\tconst newBase = functor(base);\n\t\tconst areaSeries = d3Area()\n\t\t\t.defined(d => defined(yAccessor(d)))\n\t\t\t.x((d) => Math.round(xScale(xAccessor(d))))\n\t\t\t.y0((d) => newBase(yScale, d, moreProps))\n\t\t\t.y1((d) => Math.round(yScale(yAccessor(d))))\n\t\t\t.context(ctx);\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tareaSeries.curve(interpolation);\n\t\t}\n\t\tareaSeries(plotData);\n\t\tctx.fill();\n\n\t\tif (canvasClip) {\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor, defined, base, style } = this.props;\n\t\tconst { stroke, fill, className, opacity, interpolation } = this.props;\n\n\t\tconst { xScale, chartConfig: { yScale }, plotData, xAccessor } = moreProps;\n\n\t\tconst newBase = functor(base);\n\t\tconst areaSeries = d3Area()\n\t\t\t.defined(d => defined(yAccessor(d)))\n\t\t\t.x((d) => Math.round(xScale(xAccessor(d))))\n\t\t\t.y0((d) => newBase(yScale, d, moreProps))\n\t\t\t.y1((d) => Math.round(yScale(yAccessor(d))));\n\n\t\tif (isDefined(interpolation)) {\n\t\t\tareaSeries.curve(interpolation);\n\t\t}\n\n\t\tconst d = areaSeries(plotData);\n\t\tconst newClassName = className.concat(isDefined(stroke) ? \"\" : \" line-stroke\");\n\t\treturn (\n\t\t\t<path\n\t\t\t\tstyle={style}\n\t\t\t\td={d}\n\t\t\t\tstroke={stroke}\n\t\t\t\tfill={hexToRGBA(fill, opacity)}\n\t\t\t\tclassName={newClassName}\n\n\t\t\t/>\n\t\t);\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<GenericChartComponent\n\t\t\t\tsvgDraw={this.renderSVG}\n\t\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\t\tdrawOn={[\"pan\"]}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nAreaOnlySeries.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\tstroke: PropTypes.string,\n\tfill: PropTypes.string,\n\topacity: PropTypes.number,\n\tdefined: PropTypes.func,\n\tbase: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.number\n\t]),\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n\tcanvasGradient: PropTypes.func,\n};\n\nAreaOnlySeries.defaultProps = {\n\tclassName: \"line \",\n\tfill: \"none\",\n\topacity: 1,\n\tdefined: d => !isNaN(d),\n\tbase: (yScale /* , d, moreProps */) => first(yScale.range()),\n};\n\nexport default AreaOnlySeries;\n","\n\nimport { sum } from \"d3-array\";\n\nimport { ATR as defaultOptions } from \"./defaultOptionsForComputation\";\nimport { slidingWindow, last, isDefined } from \"../utils\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\tlet source = d => ({ open: d.open, high: d.high, low: d.low, close: d.close });\n\n\tfunction calculator(data) {\n\t\tconst { windowSize } = options;\n\n\t\tconst trueRangeAlgorithm = slidingWindow()\n\t\t\t.windowSize(2)\n\t\t\t.source(source)\n\t\t\t.undefinedValue(d => d.high - d.low) // the first TR value is simply the High minus the Low\n\t\t\t.accumulator(values => {\n\t\t\t\tconst prev = values[0];\n\t\t\t\tconst d = values[1];\n\t\t\t\treturn Math.max(d.high - d.low,\n\t\t\t\t\td.high - prev.close,\n\t\t\t\t\td.low - prev.close);\n\t\t\t});\n\n\t\tlet prevATR;\n\n\t\tconst atrAlgorithm = slidingWindow()\n\t\t\t.skipInitial(1) // trueRange starts from index 1 so ATR starts from 1\n\t\t\t.windowSize(windowSize)\n\t\t\t.accumulator(values => {\n\t\t\t\tconst tr = last(values);\n\t\t\t\tconst atr = isDefined(prevATR)\n\t\t\t\t\t? ((prevATR * (windowSize - 1)) + tr) / windowSize\n\t\t\t\t\t: sum(values) / windowSize;\n\n\t\t\t\tprevATR = atr;\n\t\t\t\treturn atr;\n\t\t\t});\n\n\t\tconst newData = atrAlgorithm(trueRangeAlgorithm(data));\n\n\t\treturn newData;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\tcalculator.source = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn source;\n\t\t}\n\t\tsource = x;\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nexport const themes = {\n\tlight: {\n\t\tBollingerBand: {\n\t\t\tstroke: {\n\t\t\t\ttop: \"#964B00\",\n\t\t\t\tmiddle: \"#000000\",\n\t\t\t\tbottom: \"#964B00\",\n\t\t\t},\n\t\t\tfill: \"#4682B4\",\n\t\t},\n\t\tElderImpulse: {\n\t\t\tstroke: {\n\t\t\t\tup: \"#6BA583\",\n\t\t\t\tdown: \"#FF0000\",\n\t\t\t\tneutral: \"#0000FF\",\n\t\t\t}\n\t\t},\n\t\tMACD: {\n\t\t\tfill: {\n\t\t\t\tdivergence: \"#4682B4\"\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tmacd: \"#FF0000\",\n\t\t\t\tsignal: \"#00F300\",\n\t\t\t},\n\t\t},\n\t\tFullStochasticOscillator: {\n\t\t\tstroke: {\n\t\t\t\ttop: \"#37a600\",\n\t\t\t\tmiddle: \"#b8ab00\",\n\t\t\t\tbottom: \"#37a600\",\n\t\t\t\tdLine: \"#17becf\",\n\t\t\t\tkLine: \"#ff7f0e\",\n\t\t\t},\n\t\t},\n\t},\n\tdark: {\n\t\tBollingerBand: {\n\t\t\tstroke: {\n\t\t\t\ttop: \"#964B00\",\n\t\t\t\tmiddle: \"#FF6600\",\n\t\t\t\tbottom: \"#964B00\",\n\t\t\t},\n\t\t\tfill: \"#4682B4\",\n\t\t},\n\t\tElderImpulse: {\n\t\t\tstroke: {\n\t\t\t\tup: \"#6BA583\",\n\t\t\t\tdown: \"#FF0000\",\n\t\t\t\tneutral: \"#0000FF\",\n\t\t\t}\n\t\t},\n\t\tMACD: {\n\t\t\tfill: {\n\t\t\t\tdivergence: \"#FF6600\"\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tmacd: \"#ea2bff\",\n\t\t\t\tsignal: \"#74d400\",\n\t\t\t},\n\t\t},\n\t\tFullStochasticOscillator: {\n\t\t\tstroke: {\n\t\t\t\ttop: \"#37a600\",\n\t\t\t\tmiddle: \"#b8ab00\",\n\t\t\t\tbottom: \"#37a600\",\n\t\t\t\tdLine: \"#ea2bff\",\n\t\t\t\tkLine: \"#74d400\"\n\t\t\t}\n\t\t},\n\t}\n};\n\nexport const BollingerBand = themes.light.BollingerBand;\nexport const ElderImpulse = themes.light.ElderImpulse;\nexport const MACD = themes.light.MACD;\nexport const FullStochasticOscillator = themes.light.FullStochasticOscillator;\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export { default as EdgeIndicator } from \"./EdgeIndicator\";\nexport { default as CurrentCoordinate } from \"./CurrentCoordinate\";\nexport { default as MouseCoordinateX } from \"./MouseCoordinateX\";\nexport { default as MouseCoordinateXV2 } from \"./MouseCoordinateXV2\";\n\nexport { default as MouseCoordinateY } from \"./MouseCoordinateY\";\nexport { default as CrossHairCursor } from \"./CrossHairCursor\";\nexport { default as PriceCoordinate } from \"./PriceCoordinate\";\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDefault from \"./formatDefault\";\nimport formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n}\n","import formatTypes from \"./formatTypes\";\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n};\n","export default function(x) {\n return x;\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import 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 sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport LineSeries from \"./LineSeries\";\nimport AreaOnlySeries from \"./AreaOnlySeries\";\nimport { strokeDashTypes } from \"../utils\";\n\nfunction AreaSeries(props) {\n\tconst { yAccessor, baseAt } = props;\n\tconst {\n\t\tclassName,\n\t\topacity,\n\t\tstroke,\n\t\tstrokeWidth,\n\t\tstrokeOpacity,\n\t\tstrokeDasharray,\n\t\tcanvasGradient,\n\t\tfill,\n\t\tinterpolation,\n\t\tstyle,\n\t\tcanvasClip,\n\t} = props;\n\n\treturn (\n\t\t<g className={className}>\n\t\t\t<AreaOnlySeries\n\t\t\t\tyAccessor={yAccessor}\n\t\t\t\tinterpolation={interpolation}\n\t\t\t\tbase={baseAt}\n\t\t\t\tcanvasGradient={canvasGradient}\n\t\t\t\tfill={fill}\n\t\t\t\topacity={opacity}\n\t\t\t\tstyle={style}\n\t\t\t\tcanvasClip={canvasClip}\n\t\t\t\tstroke=\"none\"\n\t\t\t/>\n\t\t\t<LineSeries\n\t\t\t\tyAccessor={yAccessor}\n\t\t\t\tstroke={stroke}\n\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\tstrokeOpacity={strokeOpacity}\n\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\tinterpolation={interpolation}\n\t\t\t\tstyle={style}\n\t\t\t\tcanvasClip={canvasClip}\n\t\t\t\tfill=\"none\"\n\t\t\t\thoverHighlight={false}\n\t\t\t/>\n\t\t</g>\n\t);\n}\n\nAreaSeries.propTypes = {\n\tstroke: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tcanvasGradient: PropTypes.func,\n\tfill: PropTypes.string.isRequired,\n\tstrokeOpacity: PropTypes.number.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\tbaseAt: PropTypes.func,\n\tinterpolation: PropTypes.func,\n\tcanvasClip: PropTypes.func,\n\tstyle: PropTypes.object,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n};\n\nAreaSeries.defaultProps = {\n\tstroke: \"#4682B4\",\n\tstrokeWidth: 1,\n\tstrokeOpacity: 1,\n\tstrokeDasharray: \"Solid\",\n\topacity: 0.5,\n\tfill: \"#4682B4\",\n\tclassName: \"react-stockcharts-area\",\n};\n\nexport default AreaSeries;\n","\n\n/* an extension to d3.zip so we call a function instead of an array */\n\nimport { min } from \"d3-array\";\n\nimport identity from \"./identity\";\n\nexport default function zipper() {\n\tlet combine = identity;\n\n\tfunction zip() {\n\t\tconst n = arguments.length;\n\t\tif (!n) return [];\n\t\tconst m = min(arguments, d3_zipLength);\n\n\t\t// eslint-disable-next-line prefer-const\n\t\tlet i, zips = new Array(m);\n\t\tfor (i = -1; ++i < m; ) {\n\t\t\tfor (let j = -1, zip = zips[i] = new Array(n); ++j < n; ) {\n\t\t\t\tzip[j] = arguments[j][i];\n\t\t\t}\n\t\t\tzips[i] = combine.apply(this, zips[i]);\n\t\t}\n\t\treturn zips;\n\t}\n\tfunction d3_zipLength(d) {\n\t\treturn d.length;\n\t}\n\tzip.combine = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn combine;\n\t\t}\n\t\tcombine = x;\n\t\treturn zip;\n\t};\n\treturn zip;\n}\n","// https://github.com/jonschlinkert/is-equal-shallow/\n\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2015, Jon Schlinkert.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nfunction isDate(date) {\n\treturn Object.prototype.toString.call(date) === \"[object Date]\";\n}\n\nfunction isEqual(val1, val2) {\n\treturn (isDate(val1) && isDate(val2))\n\t\t? val1.getTime() === val2.getTime()\n\t\t: val1 === val2;\n}\n\nexport default function shallowEqual(a, b) {\n\tif (!a && !b) { return true; }\n\tif (!a && b || a && !b) { return false; }\n\n\tlet numKeysA = 0, numKeysB = 0, key;\n\tfor (key in b) {\n\t\tnumKeysB++;\n\t\tif (/* !isPrimitive(b[key]) || */ (b.hasOwnProperty(key) && !a.hasOwnProperty(key)) || !isEqual(a[key], b[key])) {\n\t\t\t// console.log(key, a, b);\n\t\t\treturn false;\n\t\t}\n\t}\n\tfor (key in a) {\n\t\tnumKeysA++;\n\t}\n\treturn numKeysA === numKeysB;\n}\n","\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nclass SVGComponent extends Component {\n\trender() {\n\t\tconst { children } = this.props;\n\t\treturn <GenericChartComponent\n\t\t\tdrawOn={[]}\n\t\t\tsvgDraw={children}\n\t\t/>;\n\t}\n}\n\nSVGComponent.propTypes = {\n\tchildren: PropTypes.func.isRequired,\n};\n\nexport default SVGComponent;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport StackedBarSeries, {\n\tdrawOnCanvasHelper,\n\tdrawOnCanvas2,\n\tgetBarsSVG2,\n\tsvgHelper,\n\tidentityStack\n} from \"./StackedBarSeries\";\n\nimport { functor, isDefined } from \"../utils\";\n\nclass BarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tif (this.props.swapScales) {\n\t\t\tconst { xAccessor } = moreProps;\n\t\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, identityStack);\n\t\t} else {\n\t\t\tconst bars = getBars(this.props, moreProps);\n\t\t\tdrawOnCanvas2(this.props, ctx, bars);\n\t\t}\n\n\t}\n\trenderSVG(moreProps) {\n\t\tif (this.props.swapScales) {\n\t\t\tconst { xAccessor } = moreProps;\n\t\t\treturn <g>{svgHelper(this.props, moreProps, xAccessor, identityStack)}</g>;\n\t\t} else {\n\t\t\tconst bars = getBars(this.props, moreProps);\n\t\t\treturn <g>{getBarsSVG2(this.props, bars)}</g>;\n\t\t}\n\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn (\n\t\t\t<GenericChartComponent\n\t\t\t\tclip={clip}\n\t\t\t\tsvgDraw={this.renderSVG}\n\n\t\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\t\tcanvasDraw={this.drawOnCanvas}\n\n\t\t\t\tdrawOn={[\"pan\"]}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]),\n\tstroke: PropTypes.bool,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]),\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]),\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]),\n\tclip: PropTypes.bool,\n\tswapScales: PropTypes.bool,\n};\n\n\nBarSeries.defaultProps = StackedBarSeries.defaultProps;\n\nexport default BarSeries;\n\n/*\n Initially, this program was using StackedBarSeries.getBars\n to benefit from code reuse and having a single place that\n contains the logic for drawing all types of bar charts\n simple, grouped, horizontal, but turnes out\n making it highly cuztimizable also made it slow for the\n most simple case, a regular bar chart.\n This function contains just the necessary logic\n to create bars\n*/\nfunction getBars(props, moreProps) {\n\tconst { baseAt, fill, stroke, yAccessor } = props;\n\tconst { xScale, xAccessor, plotData, chartConfig: { yScale } } = moreProps;\n\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\n\tconst widthFunctor = functor(props.width);\n\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\t/*\n\tconst barWidth = Math.round(width);\n\tconst offset = Math.round(barWidth === 1 ? 0 : 0.5 * barWidth);\n\t*/\n\tconst offset = Math.floor(0.5 * width);\n\n\tconst bars = plotData\n\t\t.filter(d => isDefined(yAccessor(d)))\n\t\t.map(d => {\n\t\t\tconst yValue = yAccessor(d);\n\t\t\tlet y = yScale(yValue);\n\n\t\t\tconst x = Math.round(xScale(xAccessor(d))) - offset;\n\t\t\tlet h = getBase(xScale, yScale, d) - yScale(yValue);\n\n\t\t\tif (h < 0) {\n\t\t\t\ty = y + h;\n\t\t\t\th = -h;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t// type: \"line\"\n\t\t\t\tx,\n\t\t\t\ty: Math.round(y),\n\t\t\t\theight: Math.round(h),\n\t\t\t\twidth: offset * 2,\n\t\t\t\tfill: getFill(d, 0),\n\t\t\t\tstroke: stroke ? getFill(d, 0) : \"none\",\n\t\t\t};\n\t\t});\n\n\treturn bars;\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { forceSimulation, forceX, forceCollide } from \"d3-force\";\nimport { range as d3Range } from \"d3-array\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport AxisZoomCapture from \"./AxisZoomCapture\";\n\nimport { first, last, hexToRGBA, isNotDefined, isDefined, identity, zipper, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nclass Axis extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.getMoreProps = this.getMoreProps.bind(this);\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\tgetMoreProps() {\n\t\treturn this.node.getMoreProps();\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { showDomain, showTicks, transform, range, getScale } = this.props;\n\n\t\tctx.save();\n\t\tctx.translate(transform[0], transform[1]);\n\n\t\tif (showDomain) drawAxisLine(ctx, this.props, range);\n\t\tif (showTicks) {\n\t\t\tconst tickProps = tickHelper(this.props, getScale(moreProps));\n\t\t\tdrawTicks(ctx, tickProps);\n\t\t}\n\n\t\tctx.restore();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\t\tconst { showDomain, showTicks, range, getScale } = this.props;\n\n\t\tconst ticks = showTicks ? axisTicksSVG(this.props, getScale(moreProps)) : null;\n\t\tconst domain = showDomain ? axisLineSVG(this.props, range) : null;\n\n\t\treturn <g className={className}>\n\t\t\t{ticks}\n\t\t\t{domain}\n\t\t</g>;\n\t}\n\trender() {\n\t\tconst { bg, axisZoomCallback, className, zoomCursorClassName, zoomEnabled, getScale, inverted } = this.props;\n\t\tconst { transform, getMouseDelta, edgeClip } = this.props;\n\t\tconst { onContextMenu, onDoubleClick } = this.props;\n\n\t\tconst zoomCapture = zoomEnabled\n\t\t\t? <AxisZoomCapture\n\t\t\t\tbg={bg}\n\t\t\t\tgetScale={getScale}\n\t\t\t\tgetMoreProps={this.getMoreProps}\n\t\t\t\tgetMouseDelta={getMouseDelta}\n\t\t\t\taxisZoomCallback={axisZoomCallback}\n\t\t\t\tclassName={className}\n\t\t\t\tzoomCursorClassName={zoomCursorClassName}\n\t\t\t\tinverted={inverted}\n\t\t\t\tonContextMenu={onContextMenu}\n\t\t\t\tonDoubleClick={onDoubleClick}\n\t\t\t/>\n\t\t\t: null;\n\n\t\treturn <g transform={`translate(${ transform[0] }, ${ transform[1] })`}>\n\t\t\t{zoomCapture}\n\t\t\t<GenericChartComponent ref={this.saveNode}\n\t\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\t\tclip={false}\n\t\t\t\tedgeClip={edgeClip}\n\t\t\t\tsvgDraw={this.renderSVG}\n\t\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\t\tdrawOn={[\"pan\"]}\n\t\t\t/>\n\t\t</g>;\n\t}\n}\n\nAxis.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickLabelFill: PropTypes.string,\n\ttickStroke: PropTypes.string,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n\ttickInterval: PropTypes.number,\n\ttickIntervalFunction: PropTypes.func,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tzoomEnabled: PropTypes.bool,\n\tinverted: PropTypes.bool,\n\tzoomCursorClassName: PropTypes.string,\n\ttransform: PropTypes.arrayOf(PropTypes.number).isRequired,\n\trange: PropTypes.arrayOf(PropTypes.number).isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tbg: PropTypes.object.isRequired,\n\tedgeClip: PropTypes.bool.isRequired,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nAxis.defaultProps = {\n\tzoomEnabled: false,\n\tzoomCursorClassName: \"\",\n\tedgeClip: false,\n};\n\nfunction tickHelper(props, scale) {\n\tconst {\n\t\torient, innerTickSize, tickFormat, tickPadding,\n\t\ttickLabelFill, tickStrokeWidth, tickStrokeDasharray,\n\t\tfontSize, fontFamily, fontWeight, showTicks, flexTicks,\n\t\tshowTickLabel\n\t} = props;\n\tconst {\n\t\tticks: tickArguments, tickValues: tickValuesProp,\n\t\ttickStroke, tickStrokeOpacity, tickInterval, tickIntervalFunction\n\t} = props;\n\n\t// if (tickArguments) tickArguments = [tickArguments];\n\n\tlet tickValues;\n\tif (isDefined(tickValuesProp)) {\n\t\tif (typeof tickValuesProp === \"function\") {\n\t\t\ttickValues = tickValuesProp(scale.domain());\n\t\t} else {\n\t\t\ttickValues = tickValuesProp;\n\t\t}\n\t} else if (isDefined(tickInterval)) {\n\t\tconst [min, max] = scale.domain();\n\t\tconst baseTickValues = d3Range(min, max, (max - min) / tickInterval);\n\n\t\ttickValues = tickIntervalFunction\n\t\t\t? tickIntervalFunction(min, max, tickInterval)\n\t\t\t: baseTickValues;\n\t} else if (isDefined(scale.ticks)) {\n\t\ttickValues = scale.ticks(tickArguments, flexTicks);\n\t} else {\n\t\ttickValues = scale.domain();\n\t}\n\n\tconst baseFormat = scale.tickFormat\n\t\t? scale.tickFormat(tickArguments)\n\t\t: identity;\n\n\tconst format = isNotDefined(tickFormat)\n\t\t? baseFormat\n\t\t: d => tickFormat(d) || \"\";\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst tickSpacing = Math.max(innerTickSize, 0) + tickPadding;\n\n\tlet ticks, dy, canvas_dy, textAnchor;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\tdy = sign < 0 ? \"0em\" : \".71em\";\n\t\tcanvas_dy = sign < 0 ? 0 : (fontSize * .71);\n\t\ttextAnchor = \"middle\";\n\n\t\tticks = tickValues.map(d => {\n\t\t\tconst x = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: x,\n\t\t\t\ty1: 0,\n\t\t\t\tx2: x,\n\t\t\t\ty2: sign * innerTickSize,\n\t\t\t\tlabelX: x,\n\t\t\t\tlabelY: sign * tickSpacing,\n\t\t\t};\n\t\t});\n\n\t\tif (showTicks && flexTicks) {\n\t\t\t// console.log(ticks, showTicks);\n\n\t\t\tconst nodes = ticks.map(d => ({ id: d.value, value: d.value, fy: d.y2, origX: d.x1 }));\n\n\t\t\tconst simulation = forceSimulation(nodes)\n\t\t\t\t.force(\"x\", forceX(d => d.origX).strength(1))\n\t\t\t\t.force(\"collide\", forceCollide(22))\n\t\t\t\t// .force(\"center\", forceCenter())\n\t\t\t\t.stop();\n\n\t\t\tfor (let i = 0; i < 100; ++i) simulation.tick();\n\t\t\t// console.log(nodes);\n\n\t\t\tconst zip = zipper()\n\t\t\t\t.combine((a, b) => {\n\t\t\t\t\tif (Math.abs(b.x - b.origX) > 0.01) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tx2: b.x,\n\t\t\t\t\t\t\tlabelX: b.x\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\n\t\t\tticks = zip(ticks, nodes);\n\t\t}\n\n\n\t} else {\n\t\tticks = tickValues.map(d => {\n\t\t\tconst y = Math.round(scale(d));\n\t\t\treturn {\n\t\t\t\tvalue: d,\n\t\t\t\tx1: 0,\n\t\t\t\ty1: y,\n\t\t\t\tx2: sign * innerTickSize,\n\t\t\t\ty2: y,\n\t\t\t\tlabelX: sign * tickSpacing,\n\t\t\t\tlabelY: y,\n\t\t\t};\n\t\t});\n\n\t\tdy = \".32em\";\n\t\tcanvas_dy = (fontSize * .32);\n\t\ttextAnchor = sign < 0 ? \"end\" : \"start\";\n\t}\n\n\treturn {\n\t\tticks, scale, tickStroke,\n\t\ttickLabelFill: (tickLabelFill || tickStroke),\n\t\ttickStrokeOpacity,\n\t\ttickStrokeWidth,\n\t\ttickStrokeDasharray,\n\t\tdy,\n\t\tcanvas_dy,\n\t\ttextAnchor,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tformat,\n\t\tshowTickLabel,\n\t};\n}\n\n/* eslint-disable react/prop-types */\nfunction axisLineSVG(props, range) {\n\tconst { orient, outerTickSize } = props;\n\tconst { domainClassName, fill, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\n\tlet d;\n\n\tif (orient === \"bottom\" || orient === \"top\") {\n\t\td = \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize;\n\t} else {\n\t\td = \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize;\n\t}\n\n\treturn (\n\t\t<path\n\t\t\tclassName={domainClassName}\n\t\t\td={d}\n\t\t\tfill={fill}\n\t\t\topacity={opacity}\n\t\t\tstroke={stroke}\n\t\t\tstrokeWidth={strokeWidth} >\n\t\t</path>\n\t);\n}\n/* eslint-enable react/prop-types */\n\n\nfunction drawAxisLine(ctx, props, range) {\n\t// props = { ...AxisLine.defaultProps, ...props };\n\n\tconst { orient, outerTickSize, stroke, strokeWidth, opacity } = props;\n\n\tconst sign = orient === \"top\" || orient === \"left\" ? -1 : 1;\n\tconst xAxis = (orient === \"bottom\" || orient === \"top\");\n\n\t// var range = d3_scaleRange(xAxis ? xScale : yScale);\n\n\tctx.lineWidth = strokeWidth;\n\tctx.strokeStyle = hexToRGBA(stroke, opacity);\n\n\tctx.beginPath();\n\n\tif (xAxis) {\n\t\tctx.moveTo(first(range), sign * outerTickSize);\n\t\tctx.lineTo(first(range), 0);\n\t\tctx.lineTo(last(range), 0);\n\t\tctx.lineTo(last(range), sign * outerTickSize);\n\t} else {\n\t\tctx.moveTo(sign * outerTickSize, first(range));\n\t\tctx.lineTo(0, first(range));\n\t\tctx.lineTo(0, last(range));\n\t\tctx.lineTo(sign * outerTickSize, last(range));\n\t}\n\tctx.stroke();\n}\n\nfunction Tick(props) {\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeDasharray, tickStrokeWidth, textAnchor, fontSize, fontFamily, fontWeight } = props;\n\tconst { x1, y1, x2, y2, labelX, labelY, dy } = props;\n\treturn (\n\t\t<g className=\"tick\">\n\t\t\t<line\n\t\t\t\tshapeRendering=\"crispEdges\"\n\t\t\t\topacity={tickStrokeOpacity}\n\t\t\t\tstroke={tickStroke}\n\t\t\t\tstrokeWidth={tickStrokeWidth}\n\t\t\t\tstrokeDasharray={getStrokeDasharray(tickStrokeDasharray)}\n\t\t\t\tx1={x1} y1={y1}\n\t\t\t\tx2={x2} y2={y2} />\n\t\t\t<text\n\t\t\t\tdy={dy} x={labelX} y={labelY}\n\t\t\t\tfill={tickLabelFill}\n\t\t\t\tfontSize={fontSize}\n\t\t\t\tfontWeight={fontWeight}\n\t\t\t\tfontFamily={fontFamily}\n\t\t\t\ttextAnchor={textAnchor}>\n\t\t\t\t{props.children}\n\t\t\t</text>\n\t\t</g>\n\t);\n}\n\nTick.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tx1: PropTypes.number.isRequired,\n\ty1: PropTypes.number.isRequired,\n\tx2: PropTypes.number.isRequired,\n\ty2: PropTypes.number.isRequired,\n\tlabelX: PropTypes.number.isRequired,\n\tlabelY: PropTypes.number.isRequired,\n\tdy: PropTypes.string.isRequired,\n\ttickStroke: PropTypes.string,\n\ttickLabelFill: PropTypes.string,\n\ttickStrokeWidth: PropTypes.number,\n\ttickStrokeOpacity: PropTypes.number,\n\ttickStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\ttextAnchor: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontWeight: PropTypes.oneOfType([\n\t PropTypes.string,\n\t PropTypes.number\n\t]),\n};\n\nfunction axisTicksSVG(props, scale) {\n\tconst result = tickHelper(props, scale);\n\n\tconst { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeWidth, tickStrokeDasharray, textAnchor } = result;\n\tconst { fontSize, fontFamily, fontWeight, ticks, format } = result;\n\n\tconst { dy } = result;\n\n\treturn (\n\t\t<g>\n\t\t\t{ticks.map((tick, idx) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Tick key={idx}\n\t\t\t\t\t\ttickStroke={tickStroke}\n\t\t\t\t\t\ttickLabelFill={tickLabelFill}\n\t\t\t\t\t\ttickStrokeWidth={tickStrokeWidth}\n\t\t\t\t\t\ttickStrokeOpacity={tickStrokeOpacity}\n\t\t\t\t\t\ttickStrokeDasharray={tickStrokeDasharray}\n\t\t\t\t\t\tdy={dy}\n\t\t\t\t\t\tx1={tick.x1} y1={tick.y1}\n\t\t\t\t\t\tx2={tick.x2} y2={tick.y2}\n\t\t\t\t\t\tlabelX={tick.labelX} labelY={tick.labelY}\n\t\t\t\t\t\ttextAnchor={textAnchor}\n\t\t\t\t\t\tfontSize={fontSize}\n\t\t\t\t\t\tfontWeight={fontWeight}\n\t\t\t\t\t\tfontFamily={fontFamily}>{format(tick.value)}</Tick>\n\t\t\t\t);\n\t\t\t})}\n\t\t</g>\n\t);\n}\n\nfunction drawTicks(ctx, result) {\n\n\tconst { tickStroke, tickStrokeOpacity, tickLabelFill } = result;\n\tconst { textAnchor, fontSize, fontFamily, fontWeight, ticks, showTickLabel } = result;\n\n\tctx.strokeStyle = hexToRGBA(tickStroke, tickStrokeOpacity);\n\n\tctx.fillStyle = tickStroke;\n\t// ctx.textBaseline = 'middle';\n\n\tticks.forEach((tick) => {\n\t\tdrawEachTick(ctx, tick, result);\n\t});\n\n\tctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = tickLabelFill;\n\tctx.textAlign = textAnchor === \"middle\" ? \"center\" : textAnchor;\n\n\tif (showTickLabel) {\n\t\tticks.forEach((tick) => {\n\t\t\tdrawEachTickLabel(ctx, tick, result);\n\t\t});\n\t}\n}\n\nfunction drawEachTick(ctx, tick, result) {\n\tconst { tickStrokeWidth, tickStrokeDasharray } = result;\n\n\tctx.beginPath();\n\n\tctx.moveTo(tick.x1, tick.y1);\n\tctx.lineTo(tick.x2, tick.y2);\n\tctx.lineWidth = tickStrokeWidth;\n\tctx.setLineDash(getStrokeDasharray(tickStrokeDasharray).split(\",\"));\n\tctx.stroke();\n}\n\nfunction drawEachTickLabel(ctx, tick, result) {\n\tconst { canvas_dy, format } = result;\n\n\tctx.beginPath();\n\tctx.fillText(format(tick.value), tick.labelX, tick.labelY + canvas_dy);\n}\n\nexport default Axis;\n","\n\nimport { set, map } from \"d3-collection\";\nimport { ascending } from \"d3-array\";\nimport { scaleLinear } from \"d3-scale\";\n\nimport { isDefined, isNotDefined, head, last } from \"../utils\";\nimport { levelDefinition } from \"./levels\";\n\nconst MAX_LEVEL = levelDefinition.length - 1;\n\nexport default function financeDiscontinuousScale(\n\tindex,\n\tfutureProvider,\n\tbackingLinearScale = scaleLinear()\n) {\n\n\tif (isNotDefined(index))\n\t\tthrow new Error(\"Use the discontinuousTimeScaleProvider to create financeDiscontinuousScale\");\n\n\tfunction scale(x) {\n\t\treturn backingLinearScale(x);\n\t}\n\tscale.invert = function(x) {\n\t\tconst inverted = backingLinearScale.invert(x);\n\t\treturn Math.round(inverted * 10000) / 10000;\n\t};\n\tscale.domain = function(x) {\n\t\tif (!arguments.length) return backingLinearScale.domain();\n\t\tbackingLinearScale.domain(x);\n\t\treturn scale;\n\t};\n\tscale.range = function(x) {\n\t\tif (!arguments.length) return backingLinearScale.range();\n\t\tbackingLinearScale.range(x);\n\t\treturn scale;\n\t};\n\tscale.rangeRound = function(x) {\n\t\treturn backingLinearScale.range(x);\n\t};\n\tscale.clamp = function(x) {\n\t\tif (!arguments.length) return backingLinearScale.clamp();\n\t\tbackingLinearScale.clamp(x);\n\t\treturn scale;\n\t};\n\tscale.interpolate = function(x) {\n\t\tif (!arguments.length) return backingLinearScale.interpolate();\n\t\tbackingLinearScale.interpolate(x);\n\t\treturn scale;\n\t};\n\tscale.ticks = function(m, flexTicks) {\n\t\tconst backingTicks = backingLinearScale.ticks(m);\n\t\tconst ticksMap = map();\n\n\t\tconst [domainStart, domainEnd] = backingLinearScale.domain();\n\n\t\tconst start = Math.max(Math.ceil(domainStart), head(index).index) + Math.abs(head(index).index);\n\t\tconst end = Math.min(Math.floor(domainEnd), last(index).index) + Math.abs(head(index).index);\n\n\t\tif (Math.floor(domainEnd) > end) {\n\t\t\t// console.log(end, domainEnd, index);\n\t\t}\n\n\t\tconst desiredTickCount = Math.ceil((end - start) / (domainEnd - domainStart) * backingTicks.length);\n\n\t\tfor (let i = MAX_LEVEL; i >= 0; i--) {\n\t\t\tconst ticksAtLevel = ticksMap.get(i);\n\t\t\tconst temp = isNotDefined(ticksAtLevel)\n\t\t\t\t? []\n\t\t\t\t: ticksAtLevel.slice();\n\n\t\t\tfor (let j = start; j <= end; j++) {\n\t\t\t\tif (index[j].level === i) {\n\t\t\t\t\ttemp.push(index[j]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tticksMap.set(i, temp);\n\t\t}\n\n\t\tlet unsortedTicks = [];\n\t\tfor (let i = MAX_LEVEL; i >= 0; i--) {\n\t\t\tif ((ticksMap.get(i).length + unsortedTicks.length) > desiredTickCount * 1.5) break;\n\t\t\tunsortedTicks = unsortedTicks.concat(ticksMap.get(i).map(d => d.index));\n\t\t}\n\n\t\tconst ticks = unsortedTicks.sort(ascending);\n\n\t\t// console.log(backingTicks.length, desiredTickCount, ticks, ticksMap);\n\n\t\tif (!flexTicks && end - start > ticks.length) {\n\t\t\tconst ticksSet = set(ticks);\n\n\t\t\tconst d = Math.abs(head(index).index);\n\n\t\t\t// ignore ticks within this distance\n\t\t\tconst distance = Math.ceil(\n\t\t\t\t(backingTicks.length > 0\n\t\t\t\t\t? (last(backingTicks) - head(backingTicks)) / (backingTicks.length) / 4\n\t\t\t\t\t: 1) * 1.5);\n\n\t\t\tfor (let i = 0; i < ticks.length - 1; i++) {\n\t\t\t\tfor (let j = i + 1; j < ticks.length; j++) {\n\t\t\t\t\tif (ticks[j] - ticks[i] <= distance) {\n\t\t\t\t\t\tticksSet.remove(index[ticks[i] + d].level >= index[ticks[j] + d].level ? ticks[j] : ticks[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst tickValues = ticksSet.values().map(d => parseInt(d, 10));\n\n\t\t\t// console.log(ticks.length, tickValues, level);\n\t\t\t// console.log(ticks, tickValues, distance);\n\n\t\t\treturn tickValues;\n\t\t}\n\n\t\treturn ticks;\n\t};\n\tscale.tickFormat = function() {\n\t\treturn function(x) {\n\t\t\tconst d = Math.abs(head(index).index);\n\t\t\tconst { format, date } = index[Math.floor(x + d)];\n\t\t\treturn format(date);\n\t\t};\n\t};\n\tscale.value = function(x) {\n\t\tconst d = Math.abs(head(index).index);\n\t\tif (isDefined(index[Math.floor(x + d)])) {\n\t\t\tconst { date } = index[Math.floor(x + d)];\n\t\t\treturn date;\n\t\t}\n\t};\n\tscale.nice = function(m) {\n\t\tbackingLinearScale.nice(m);\n\t\treturn scale;\n\t};\n\tscale.index = function(x) {\n\t\tif (!arguments.length) return index;\n\t\tindex = x;\n\t\treturn scale;\n\t};\n\tscale.copy = function() {\n\t\treturn financeDiscontinuousScale(index, futureProvider, backingLinearScale.copy());\n\t};\n\treturn scale;\n}","export const defaultFormatters = {\n\tyearFormat: \"%Y\",\n\tquarterFormat: \"%b %Y\",\n\tmonthFormat: \"%b\",\n\tweekFormat: \"%d %b\",\n\tdayFormat: \"%a %d\",\n\thourFormat: \"%_I %p\",\n\tminuteFormat: \"%I:%M %p\",\n\tsecondFormat: \"%I:%M:%S %p\",\n\tmilliSecondFormat: \"%L\",\n};\n\nexport const levelDefinition = [\n\t/* eslint-disable no-unused-vars */\n\t/* 19 */(d, date, i) => d.startOfYear && date.getFullYear() % 12 === 0 && \"yearFormat\",\n\t/* 18 */(d, date, i) => d.startOfYear && date.getFullYear() % 4 === 0 && \"yearFormat\",\n\t/* 17 */(d, date, i) => d.startOfYear && date.getFullYear() % 2 === 0 && \"yearFormat\",\n\t/* 16 */(d, date, i) => d.startOfYear && \"yearFormat\",\n\t/* 15 */(d, date, i) => d.startOfQuarter && \"quarterFormat\",\n\t/* 14 */(d, date, i) => d.startOfMonth && \"monthFormat\",\n\t/* 13 */(d, date, i) => d.startOfWeek && \"weekFormat\",\n\t/* 12 */(d, date, i) => d.startOfDay && i % 2 === 0 && \"dayFormat\",\n\t/* 11 */(d, date, i) => d.startOfDay && \"dayFormat\",\n\t/* 10 */(d, date, i) => d.startOfHalfDay && \"hourFormat\", // 12h\n\t/* 9 */(d, date, i) => d.startOfQuarterDay && \"hourFormat\", // 6h\n\t/* 8 */(d, date, i) => d.startOfEighthOfADay && \"hourFormat\", // 3h\n\t/* 7 */(d, date, i) => d.startOfHour && date.getHours() % 2 === 0 && \"hourFormat\", // 2h -- REMOVE THIS\n\t/* 6 */(d, date, i) => d.startOfHour && \"hourFormat\", // 1h\n\t/* 5 */(d, date, i) => d.startOf30Minutes && \"minuteFormat\",\n\t/* 4 */(d, date, i) => d.startOf15Minutes && \"minuteFormat\",\n\t/* 3 */(d, date, i) => d.startOf5Minutes && \"minuteFormat\",\n\t/* 2 */(d, date, i) => d.startOfMinute && \"minuteFormat\",\n\t/* 1 */(d, date, i) => d.startOf30Seconds && \"secondFormat\",\n\t/* 0 */(d, date, i) => \"secondFormat\",\n\t/* eslint-enable no-unused-vars */\n];\n","\n\nimport { mean } from \"d3-array\";\n\nimport { slidingWindow } from \"../utils\";\nimport { SMA as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, sourcePath } = options;\n\n\t\tconst average = slidingWindow()\n\t\t\t.windowSize(windowSize)\n\t\t\t.sourcePath(sourcePath)\n\t\t\t.accumulator(values => mean(values));\n\n\t\treturn average(data);\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nimport { slidingWindow, path } from \"../utils\";\nimport { ForceIndex as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { sourcePath, volumePath } = options;\n\n\t\tconst source = path(sourcePath);\n\t\tconst volume = path(volumePath);\n\n\t\tconst forceIndexCalulator = slidingWindow()\n\t\t\t.windowSize(2)\n\t\t\t.accumulator(([prev, curr]) => (source(curr) - source(prev)) * volume(curr));\n\n\t\tconst forceIndex = forceIndexCalulator(data);\n\n\t\treturn forceIndex;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\treturn 2;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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\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 objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\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\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\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array ? array.length : 0;\n return length ? baseFlatten(array, INFINITY) : [];\n}\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 */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\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\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\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\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 // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\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\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 && (type == 'object' || type == 'function');\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 && typeof value == 'object';\n}\n\nmodule.exports = flattenDeep;\n","\nexport {\n\tdefault as discontinuousTimeScaleProvider,\n\tdiscontinuousTimeScaleProviderBuilder\n} from \"./discontinuousTimeScaleProvider\";\nexport { default as financeDiscontinuousScale } from \"./financeDiscontinuousScale\";\n\nexport function defaultScaleProvider(xScale) {\n\treturn (data, xAccessor) => ({ data, xScale, xAccessor, displayXAccessor: xAccessor });\n}","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n })).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return text == null ? \"\"\n : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : text;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatRows = tsv.formatRows;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","/** @license React v16.8.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;c<b;c++)d+=\"&args[]=\"+encodeURIComponent(arguments[c+1]);ca(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",d)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};\nfunction E(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}E.prototype.isReactComponent={};E.prototype.setState=function(a,b){\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a?B(\"85\"):void 0;this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C}var H=G.prototype=new F;\nH.constructor=G;k(H,E.prototype);H.isPureReactComponent=!0;var I={current:null},J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,d){var c=void 0,e={},g=null,h=null;if(null!=b)for(c in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=b[c]);var f=arguments.length-2;if(1===f)e.children=d;else if(1<f){for(var l=Array(f),m=0;m<f;m++)l[m]=arguments[m+2];e.children=l}if(a&&a.defaultProps)for(c in f=a.defaultProps,f)void 0===e[c]&&(e[c]=f[c]);return{$$typeof:p,type:a,key:g,ref:h,props:e,_owner:J.current}}\nfunction da(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function N(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var O=/\\/+/g,P=[];function Q(a,b,d,c){if(P.length){var e=P.pop();e.result=a;e.keyPrefix=b;e.func=d;e.context=c;e.count=0;return e}return{result:a,keyPrefix:b,func:d,context:c,count:0}}\nfunction R(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>P.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h<a.length;h++){e=a[h];var f=b+T(e,h);g+=S(e,f,d,c)}else if(null===a||\"object\"!==typeof a?f=null:(f=A&&a[A]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),h=\n0;!(e=a.next()).done;)e=e.value,f=b+T(e,h++),g+=S(e,f,d,c);else\"object\"===e&&(d=\"\"+a,B(\"31\",\"[object Object]\"===d?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":d,\"\"));return g}function U(a,b,d){return null==a?0:S(a,\"\",b,d)}function T(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function ea(a,b){a.func.call(a.context,b,a.count++)}\nfunction fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(O,\"$&/\")+\"/\")+d)),c.push(a))}function V(a,b,d,c,e){var g=\"\";null!=d&&(g=(\"\"+d).replace(O,\"$&/\")+\"/\");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B(\"307\"):void 0;return a}\nvar X={Children:{map:function(a,b,d){if(null==a)return a;var c=[];V(a,c,null,b,d);return c},forEach:function(a,b,d){if(null==a)return a;b=Q(null,null,b,d);U(a,ea,b);R(b)},count:function(a){return U(a,function(){return null},null)},toArray:function(a){var b=[];V(a,b,null,function(a){return a});return b},only:function(a){N(a)?void 0:B(\"143\");return a}},createRef:function(){return{current:null}},Component:E,PureComponent:G,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,\n_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:y,render:a}},lazy:function(a){return{$$typeof:ba,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:aa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return W().useCallback(a,b)},useContext:function(a,b){return W().useContext(a,b)},useEffect:function(a,b){return W().useEffect(a,b)},useImperativeHandle:function(a,\nb,d){return W().useImperativeHandle(a,b,d)},useDebugValue:function(){},useLayoutEffect:function(a,b){return W().useLayoutEffect(a,b)},useMemo:function(a,b){return W().useMemo(a,b)},useReducer:function(a,b,d){return W().useReducer(a,b,d)},useRef:function(a){return W().useRef(a)},useState:function(a){return W().useState(a)},Fragment:r,StrictMode:t,Suspense:z,createElement:M,cloneElement:function(a,b,d){null===a||void 0===a?B(\"267\",a):void 0;var c=void 0,e=k({},a.props),g=a.key,h=a.ref,f=a._owner;if(null!=\nb){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=\"\"+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:\"16.8.0\",\nunstable_ConcurrentMode:x,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:I,ReactCurrentOwner:J,assign:k}},Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;\n","/** @license React v16.8.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),p=require(\"object-assign\"),ba=require(\"scheduler\");function ca(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction t(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;d<b;d++)c+=\"&args[]=\"+encodeURIComponent(arguments[d+1]);ca(!1,\"Minified React error #\"+a+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",c)}aa?void 0:t(\"227\");function da(a,b,c,d,e,f,g,h,l){var k=Array.prototype.slice.call(arguments,3);try{b.apply(c,k)}catch(m){this.onError(m)}}\nvar ea=!1,fa=null,ha=!1,ia=null,ja={onError:function(a){ea=!0;fa=a}};function ka(a,b,c,d,e,f,g,h,l){ea=!1;fa=null;da.apply(ja,arguments)}function la(a,b,c,d,e,f,g,h,l){ka.apply(this,arguments);if(ea){if(ea){var k=fa;ea=!1;fa=null}else t(\"198\"),k=void 0;ha||(ha=!0,ia=k)}}var ma=null,na={};\nfunction oa(){if(ma)for(var a in na){var b=na[a],c=ma.indexOf(a);-1<c?void 0:t(\"96\",a);if(!pa[c]){b.extractEvents?void 0:t(\"97\",a);pa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;ra.hasOwnProperty(h)?t(\"99\",h):void 0;ra[h]=f;var l=f.phasedRegistrationNames;if(l){for(e in l)l.hasOwnProperty(e)&&sa(l[e],g,h);e=!0}else f.registrationName?(sa(f.registrationName,g,h),e=!0):e=!1;e?void 0:t(\"98\",d,a)}}}}\nfunction sa(a,b,c){ta[a]?t(\"100\",a):void 0;ta[a]=b;ua[a]=b.eventTypes[c].dependencies}var pa=[],ra={},ta={},ua={},va=null,wa=null,xa=null;function ya(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=xa(c);la(d,b,void 0,a);a.currentTarget=null}function za(a,b){null==b?t(\"30\"):void 0;if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}\nfunction Aa(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var Ba=null;function Ca(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)ya(a,b[d],c[d]);else b&&ya(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}\nvar Da={injectEventPluginOrder:function(a){ma?t(\"101\"):void 0;ma=Array.prototype.slice.call(a);oa()},injectEventPluginsByName:function(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];na.hasOwnProperty(c)&&na[c]===d||(na[c]?t(\"102\",c):void 0,na[c]=d,b=!0)}b&&oa()}};\nfunction Ea(a,b){var c=a.stateNode;if(!c)return null;var d=va(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;c&&\"function\"!==typeof c?t(\"231\",b,typeof c):void 0;\nreturn c}function Fa(a){null!==a&&(Ba=za(Ba,a));a=Ba;Ba=null;if(a&&(Aa(a,Ca),Ba?t(\"95\"):void 0,ha))throw a=ia,ha=!1,ia=null,a;}var Ga=Math.random().toString(36).slice(2),Ha=\"__reactInternalInstance$\"+Ga,Ia=\"__reactEventHandlers$\"+Ga;function Ja(a){if(a[Ha])return a[Ha];for(;!a[Ha];)if(a.parentNode)a=a.parentNode;else return null;a=a[Ha];return 5===a.tag||6===a.tag?a:null}function Ka(a){a=a[Ha];return!a||5!==a.tag&&6!==a.tag?null:a}\nfunction La(a){if(5===a.tag||6===a.tag)return a.stateNode;t(\"33\")}function Ma(a){return a[Ia]||null}function Na(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}function Oa(a,b,c){if(b=Ea(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=za(c._dispatchListeners,b),c._dispatchInstances=za(c._dispatchInstances,a)}\nfunction Pa(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Na(b);for(b=c.length;0<b--;)Oa(c[b],\"captured\",a);for(b=0;b<c.length;b++)Oa(c[b],\"bubbled\",a)}}function Qa(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Ea(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=za(c._dispatchListeners,b),c._dispatchInstances=za(c._dispatchInstances,a))}function Ra(a){a&&a.dispatchConfig.registrationName&&Qa(a._targetInst,null,a)}\nfunction Sa(a){Aa(a,Pa)}var Ta=!(\"undefined\"===typeof window||!window.document||!window.document.createElement);function Ua(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Va={animationend:Ua(\"Animation\",\"AnimationEnd\"),animationiteration:Ua(\"Animation\",\"AnimationIteration\"),animationstart:Ua(\"Animation\",\"AnimationStart\"),transitionend:Ua(\"Transition\",\"TransitionEnd\")},Wa={},Xa={};\nTa&&(Xa=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Va.animationend.animation,delete Va.animationiteration.animation,delete Va.animationstart.animation),\"TransitionEvent\"in window||delete Va.transitionend.transition);function Ya(a){if(Wa[a])return Wa[a];if(!Va[a])return a;var b=Va[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Xa)return Wa[a]=b[c];return a}\nvar Za=Ya(\"animationend\"),$a=Ya(\"animationiteration\"),ab=Ya(\"animationstart\"),bb=Ya(\"transitionend\"),cb=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),db=null,eb=null,fb=null;\nfunction gb(){if(fb)return fb;var a,b=eb,c=b.length,d,e=\"value\"in db?db.value:db.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return fb=e.slice(a,1<d?1-d:void 0)}function hb(){return!0}function ib(){return!1}\nfunction A(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?hb:ib;this.isPropagationStopped=ib;return this}\np(A.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=hb)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=hb)},persist:function(){this.isPersistent=hb},isPersistent:ib,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ib;this._dispatchInstances=this._dispatchListeners=null}});A.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nA.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;p(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=p({},d.Interface,a);c.extend=d.extend;jb(c);return c};jb(A);function kb(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}function lb(a){a instanceof this?void 0:t(\"279\");a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}\nfunction jb(a){a.eventPool=[];a.getPooled=kb;a.release=lb}var mb=A.extend({data:null}),nb=A.extend({data:null}),ob=[9,13,27,32],pb=Ta&&\"CompositionEvent\"in window,qb=null;Ta&&\"documentMode\"in document&&(qb=document.documentMode);\nvar rb=Ta&&\"TextEvent\"in window&&!qb,sb=Ta&&(!pb||qb&&8<qb&&11>=qb),tb=String.fromCharCode(32),vb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},wb=!1;\nfunction xb(a,b){switch(a){case \"keyup\":return-1!==ob.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function yb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var zb=!1;function Ab(a,b){switch(a){case \"compositionend\":return yb(b);case \"keypress\":if(32!==b.which)return null;wb=!0;return tb;case \"textInput\":return a=b.data,a===tb&&wb?null:a;default:return null}}\nfunction Bb(a,b){if(zb)return\"compositionend\"===a||!pb&&xb(a,b)?(a=gb(),fb=eb=db=null,zb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return sb&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar Cb={eventTypes:vb,extractEvents:function(a,b,c,d){var e=void 0;var f=void 0;if(pb)b:{switch(a){case \"compositionstart\":e=vb.compositionStart;break b;case \"compositionend\":e=vb.compositionEnd;break b;case \"compositionupdate\":e=vb.compositionUpdate;break b}e=void 0}else zb?xb(a,c)&&(e=vb.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(e=vb.compositionStart);e?(sb&&\"ko\"!==c.locale&&(zb||e!==vb.compositionStart?e===vb.compositionEnd&&zb&&(f=gb()):(db=d,eb=\"value\"in db?db.value:db.textContent,zb=\n!0)),e=mb.getPooled(e,b,c,d),f?e.data=f:(f=yb(c),null!==f&&(e.data=f)),Sa(e),f=e):f=null;(a=rb?Ab(a,c):Bb(a,c))?(b=nb.getPooled(vb.beforeInput,b,c,d),b.data=a,Sa(b)):b=null;return null===f?b:null===b?f:[f,b]}},Db=null,Eb=null,Fb=null;function Gb(a){if(a=wa(a)){\"function\"!==typeof Db?t(\"280\"):void 0;var b=va(a.stateNode);Db(a.stateNode,a.type,b)}}function Hb(a){Eb?Fb?Fb.push(a):Fb=[a]:Eb=a}function Ib(){if(Eb){var a=Eb,b=Fb;Fb=Eb=null;Gb(a);if(b)for(a=0;a<b.length;a++)Gb(b[a])}}\nfunction Jb(a,b){return a(b)}function Kb(a,b,c){return a(b,c)}function Lb(){}var Mb=!1;function Nb(a,b){if(Mb)return a(b);Mb=!0;try{return Jb(a,b)}finally{if(Mb=!1,null!==Eb||null!==Fb)Lb(),Ib()}}var Ob={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Pb(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!Ob[a.type]:\"textarea\"===b?!0:!1}\nfunction Qb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function Sb(a){if(!Ta)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}function Tb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ub(a){var b=Tb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Vb(a){a._valueTracker||(a._valueTracker=Ub(a))}function Wb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Tb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}\nvar Xb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Yb=/^(.*)[\\\\\\/]/,D=\"function\"===typeof Symbol&&Symbol.for,Zb=D?Symbol.for(\"react.element\"):60103,$b=D?Symbol.for(\"react.portal\"):60106,ac=D?Symbol.for(\"react.fragment\"):60107,bc=D?Symbol.for(\"react.strict_mode\"):60108,cc=D?Symbol.for(\"react.profiler\"):60114,dc=D?Symbol.for(\"react.provider\"):60109,ec=D?Symbol.for(\"react.context\"):60110,fc=D?Symbol.for(\"react.concurrent_mode\"):60111,gc=D?Symbol.for(\"react.forward_ref\"):60112,hc=D?Symbol.for(\"react.suspense\"):\n60113,ic=D?Symbol.for(\"react.memo\"):60115,jc=D?Symbol.for(\"react.lazy\"):60116,kc=\"function\"===typeof Symbol&&Symbol.iterator;function lc(a){if(null===a||\"object\"!==typeof a)return null;a=kc&&a[kc]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction mc(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case fc:return\"ConcurrentMode\";case ac:return\"Fragment\";case $b:return\"Portal\";case cc:return\"Profiler\";case bc:return\"StrictMode\";case hc:return\"Suspense\"}if(\"object\"===typeof a)switch(a.$$typeof){case ec:return\"Context.Consumer\";case dc:return\"Context.Provider\";case gc:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\n\")\":\"ForwardRef\");case ic:return mc(a.type);case jc:if(a=1===a._status?a._result:null)return mc(a)}return null}function nc(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=mc(a.type);c=null;d&&(c=mc(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Yb,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nvar oc=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pc=Object.prototype.hasOwnProperty,qc={},rc={};\nfunction sc(a){if(pc.call(rc,a))return!0;if(pc.call(qc,a))return!1;if(oc.test(a))return rc[a]=!0;qc[a]=!0;return!1}function tc(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction uc(a,b,c,d){if(null===b||\"undefined\"===typeof b||tc(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function F(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var G={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){G[a]=new F(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];G[b]=new F(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){G[a]=new F(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){G[a]=new F(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){G[a]=new F(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){G[a]=new F(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){G[a]=new F(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){G[a]=new F(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){G[a]=new F(a,5,!1,a.toLowerCase(),null)});var vc=/[\\-:]([a-z])/g;function wc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(vc,\nwc);G[b]=new F(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(vc,wc);G[b]=new F(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(vc,wc);G[b]=new F(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});G.tabIndex=new F(\"tabIndex\",1,!1,\"tabindex\",null);\nfunction xc(a,b,c,d){var e=G.hasOwnProperty(b)?G[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(uc(b,c,e,d)&&(c=null),d||null===e?sc(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nfunction yc(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function zc(a,b){var c=b.checked;return p({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ac(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=yc(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bc(a,b){b=b.checked;null!=b&&xc(a,\"checked\",b,!1)}\nfunction Cc(a,b){Bc(a,b);var c=yc(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Dc(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Dc(a,b.type,yc(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Ec(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Dc(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var Fc={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function Gc(a,b,c){a=A.getPooled(Fc.change,a,b,c);a.type=\"change\";Hb(c);Sa(a);return a}var Hc=null,Ic=null;function Jc(a){Fa(a)}\nfunction Kc(a){var b=La(a);if(Wb(b))return a}function Lc(a,b){if(\"change\"===a)return b}var Mc=!1;Ta&&(Mc=Sb(\"input\")&&(!document.documentMode||9<document.documentMode));function Nc(){Hc&&(Hc.detachEvent(\"onpropertychange\",Oc),Ic=Hc=null)}function Oc(a){\"value\"===a.propertyName&&Kc(Ic)&&(a=Gc(Ic,a,Qb(a)),Nb(Jc,a))}function Pc(a,b,c){\"focus\"===a?(Nc(),Hc=b,Ic=c,Hc.attachEvent(\"onpropertychange\",Oc)):\"blur\"===a&&Nc()}function Qc(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return Kc(Ic)}\nfunction Rc(a,b){if(\"click\"===a)return Kc(b)}function Sc(a,b){if(\"input\"===a||\"change\"===a)return Kc(b)}\nvar Tc={eventTypes:Fc,_isInputEventSupported:Mc,extractEvents:function(a,b,c,d){var e=b?La(b):window,f=void 0,g=void 0,h=e.nodeName&&e.nodeName.toLowerCase();\"select\"===h||\"input\"===h&&\"file\"===e.type?f=Lc:Pb(e)?Mc?f=Sc:(f=Qc,g=Pc):(h=e.nodeName)&&\"input\"===h.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(f=Rc);if(f&&(f=f(a,b)))return Gc(f,c,d);g&&g(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Dc(e,\"number\",e.value)}},Uc=A.extend({view:null,detail:null}),Vc={Alt:\"altKey\",\nControl:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Wc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Vc[a])?!!b[a]:!1}function Xc(){return Wc}\nvar Yc=0,Zc=0,$c=!1,ad=!1,bd=Uc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Xc,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Yc;Yc=a.screenX;return $c?\"mousemove\"===a.type?a.screenX-b:0:($c=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Zc;Zc=a.screenY;return ad?\"mousemove\"===a.type?a.screenY-b:0:(ad=!0,0)}}),cd=bd.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),dd={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},ed={eventTypes:dd,extractEvents:function(a,b,c,d){var e=\"mouseover\"===a||\"pointerover\"===a,f=\"mouseout\"===a||\"pointerout\"===a;if(e&&(c.relatedTarget||c.fromElement)||!f&&!e)return null;e=d.window===d?d:(e=d.ownerDocument)?e.defaultView||e.parentWindow:window;f?(f=b,b=(b=c.relatedTarget||c.toElement)?Ja(b):null):f=null;if(f===b)return null;var g=void 0,h=void 0,l=void 0,k=void 0;if(\"mouseout\"===a||\"mouseover\"===a)g=bd,h=dd.mouseLeave,l=dd.mouseEnter,k=\"mouse\";\nelse if(\"pointerout\"===a||\"pointerover\"===a)g=cd,h=dd.pointerLeave,l=dd.pointerEnter,k=\"pointer\";var m=null==f?e:La(f);e=null==b?e:La(b);a=g.getPooled(h,f,c,d);a.type=k+\"leave\";a.target=m;a.relatedTarget=e;c=g.getPooled(l,b,c,d);c.type=k+\"enter\";c.target=e;c.relatedTarget=m;d=b;if(f&&d)a:{b=f;e=d;k=0;for(g=b;g;g=Na(g))k++;g=0;for(l=e;l;l=Na(l))g++;for(;0<k-g;)b=Na(b),k--;for(;0<g-k;)e=Na(e),g--;for(;k--;){if(b===e||b===e.alternate)break a;b=Na(b);e=Na(e)}b=null}else b=null;e=b;for(b=[];f&&f!==e;){k=\nf.alternate;if(null!==k&&k===e)break;b.push(f);f=Na(f)}for(f=[];d&&d!==e;){k=d.alternate;if(null!==k&&k===e)break;f.push(d);d=Na(d)}for(d=0;d<b.length;d++)Qa(b[d],\"bubbled\",a);for(d=f.length;0<d--;)Qa(f[d],\"captured\",c);return[a,c]}};function fd(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var gd=Object.prototype.hasOwnProperty;\nfunction hd(a,b){if(fd(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!gd.call(b,c[d])||!fd(a[c[d]],b[c[d]]))return!1;return!0}function kd(a){var b=a;if(a.alternate)for(;b.return;)b=b.return;else{if(0!==(b.effectTag&2))return 1;for(;b.return;)if(b=b.return,0!==(b.effectTag&2))return 1}return 3===b.tag?2:3}function ld(a){2!==kd(a)?t(\"188\"):void 0}\nfunction md(a){var b=a.alternate;if(!b)return b=kd(a),3===b?t(\"188\"):void 0,1===b?null:a;for(var c=a,d=b;;){var e=c.return,f=e?e.alternate:null;if(!e||!f)break;if(e.child===f.child){for(var g=e.child;g;){if(g===c)return ld(e),a;if(g===d)return ld(e),b;g=g.sibling}t(\"188\")}if(c.return!==d.return)c=e,d=f;else{g=!1;for(var h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}g?\nvoid 0:t(\"189\")}}c.alternate!==d?t(\"190\"):void 0}3!==c.tag?t(\"188\"):void 0;return c.stateNode.current===c?a:b}function nd(a){a=md(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar od=A.extend({animationName:null,elapsedTime:null,pseudoElement:null}),pd=A.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),qd=Uc.extend({relatedTarget:null});function rd(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar sd={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},td={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},ud=Uc.extend({key:function(a){if(a.key){var b=sd[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=rd(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?td[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Xc,charCode:function(a){return\"keypress\"===\na.type?rd(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?rd(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),vd=bd.extend({dataTransfer:null}),wd=Uc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Xc}),xd=A.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),yd=bd.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),zd=[[\"abort\",\"abort\"],[Za,\"animationEnd\"],[$a,\"animationIteration\"],[ab,\"animationStart\"],[\"canplay\",\"canPlay\"],[\"canplaythrough\",\"canPlayThrough\"],[\"drag\",\"drag\"],[\"dragenter\",\"dragEnter\"],[\"dragexit\",\"dragExit\"],[\"dragleave\",\"dragLeave\"],[\"dragover\",\"dragOver\"],[\"durationchange\",\"durationChange\"],[\"emptied\",\"emptied\"],[\"encrypted\",\"encrypted\"],\n[\"ended\",\"ended\"],[\"error\",\"error\"],[\"gotpointercapture\",\"gotPointerCapture\"],[\"load\",\"load\"],[\"loadeddata\",\"loadedData\"],[\"loadedmetadata\",\"loadedMetadata\"],[\"loadstart\",\"loadStart\"],[\"lostpointercapture\",\"lostPointerCapture\"],[\"mousemove\",\"mouseMove\"],[\"mouseout\",\"mouseOut\"],[\"mouseover\",\"mouseOver\"],[\"playing\",\"playing\"],[\"pointermove\",\"pointerMove\"],[\"pointerout\",\"pointerOut\"],[\"pointerover\",\"pointerOver\"],[\"progress\",\"progress\"],[\"scroll\",\"scroll\"],[\"seeking\",\"seeking\"],[\"stalled\",\"stalled\"],\n[\"suspend\",\"suspend\"],[\"timeupdate\",\"timeUpdate\"],[\"toggle\",\"toggle\"],[\"touchmove\",\"touchMove\"],[bb,\"transitionEnd\"],[\"waiting\",\"waiting\"],[\"wheel\",\"wheel\"]],Ad={},Bd={};function Cd(a,b){var c=a[0];a=a[1];var d=\"on\"+(a[0].toUpperCase()+a.slice(1));b={phasedRegistrationNames:{bubbled:d,captured:d+\"Capture\"},dependencies:[c],isInteractive:b};Ad[a]=b;Bd[c]=b}\n[[\"blur\",\"blur\"],[\"cancel\",\"cancel\"],[\"click\",\"click\"],[\"close\",\"close\"],[\"contextmenu\",\"contextMenu\"],[\"copy\",\"copy\"],[\"cut\",\"cut\"],[\"auxclick\",\"auxClick\"],[\"dblclick\",\"doubleClick\"],[\"dragend\",\"dragEnd\"],[\"dragstart\",\"dragStart\"],[\"drop\",\"drop\"],[\"focus\",\"focus\"],[\"input\",\"input\"],[\"invalid\",\"invalid\"],[\"keydown\",\"keyDown\"],[\"keypress\",\"keyPress\"],[\"keyup\",\"keyUp\"],[\"mousedown\",\"mouseDown\"],[\"mouseup\",\"mouseUp\"],[\"paste\",\"paste\"],[\"pause\",\"pause\"],[\"play\",\"play\"],[\"pointercancel\",\"pointerCancel\"],\n[\"pointerdown\",\"pointerDown\"],[\"pointerup\",\"pointerUp\"],[\"ratechange\",\"rateChange\"],[\"reset\",\"reset\"],[\"seeked\",\"seeked\"],[\"submit\",\"submit\"],[\"touchcancel\",\"touchCancel\"],[\"touchend\",\"touchEnd\"],[\"touchstart\",\"touchStart\"],[\"volumechange\",\"volumeChange\"]].forEach(function(a){Cd(a,!0)});zd.forEach(function(a){Cd(a,!1)});\nvar Dd={eventTypes:Ad,isInteractiveTopLevelEventType:function(a){a=Bd[a];return void 0!==a&&!0===a.isInteractive},extractEvents:function(a,b,c,d){var e=Bd[a];if(!e)return null;switch(a){case \"keypress\":if(0===rd(c))return null;case \"keydown\":case \"keyup\":a=ud;break;case \"blur\":case \"focus\":a=qd;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=\nvd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=wd;break;case Za:case $a:case ab:a=od;break;case bb:a=xd;break;case \"scroll\":a=Uc;break;case \"wheel\":a=yd;break;case \"copy\":case \"cut\":case \"paste\":a=pd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=cd;break;default:a=A}b=a.getPooled(e,b,c,d);Sa(b);return b}},Ed=Dd.isInteractiveTopLevelEventType,\nFd=[];function Gd(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=Ja(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=Qb(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<pa.length;h++){var l=pa[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=za(g,l))}Fa(g)}}var Hd=!0;\nfunction H(a,b){if(!b)return null;var c=(Ed(a)?Id:Jd).bind(null,a);b.addEventListener(a,c,!1)}function Kd(a,b){if(!b)return null;var c=(Ed(a)?Id:Jd).bind(null,a);b.addEventListener(a,c,!0)}function Id(a,b){Kb(Jd,a,b)}\nfunction Jd(a,b){if(Hd){var c=Qb(b);c=Ja(c);null===c||\"number\"!==typeof c.tag||2===kd(c)||(c=null);if(Fd.length){var d=Fd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Nb(Gd,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>Fd.length&&Fd.push(a)}}}var Ld={},Md=0,Nd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Od(a){Object.prototype.hasOwnProperty.call(a,Nd)||(a[Nd]=Md++,Ld[a[Nd]]={});return Ld[a[Nd]]}function Pd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Qd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Rd(a,b){var c=Qd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Qd(c)}}function Sd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Sd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Td(){for(var a=window,b=Pd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Pd(a.document)}return b}function Ud(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Vd=Ta&&\"documentMode\"in document&&11>=document.documentMode,Wd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Xd=null,Yd=null,Zd=null,$d=!1;\nfunction ae(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if($d||null==Xd||Xd!==Pd(c))return null;c=Xd;\"selectionStart\"in c&&Ud(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Zd&&hd(Zd,c)?null:(Zd=c,a=A.getPooled(Wd.select,Yd,a,b),a.type=\"select\",a.target=Xd,Sa(a),a)}\nvar be={eventTypes:Wd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Od(e);f=ua.onSelect;for(var g=0;g<f.length;g++){var h=f[g];if(!e.hasOwnProperty(h)||!e[h]){e=!1;break a}}e=!0}f=!e}if(f)return null;e=b?La(b):window;switch(a){case \"focus\":if(Pb(e)||\"true\"===e.contentEditable)Xd=e,Yd=b,Zd=null;break;case \"blur\":Zd=Yd=Xd=null;break;case \"mousedown\":$d=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return $d=!1,ae(c,d);case \"selectionchange\":if(Vd)break;\ncase \"keydown\":case \"keyup\":return ae(c,d)}return null}};Da.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));va=Ma;wa=Ka;xa=La;Da.injectEventPluginsByName({SimpleEventPlugin:Dd,EnterLeaveEventPlugin:ed,ChangeEventPlugin:Tc,SelectEventPlugin:be,BeforeInputEventPlugin:Cb});function ce(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction de(a,b){a=p({children:void 0},b);if(b=ce(b.children))a.children=b;return a}function ee(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+yc(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction fe(a,b){null!=b.dangerouslySetInnerHTML?t(\"91\"):void 0;return p({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function ge(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?t(\"92\"):void 0,Array.isArray(b)&&(1>=b.length?void 0:t(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:yc(c)}}\nfunction he(a,b){var c=yc(b.value),d=yc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ie(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var je={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ke(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function le(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ke(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar me=void 0,ne=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==je.svg||\"innerHTML\"in a)a.innerHTML=b;else{me=me||document.createElement(\"div\");me.innerHTML=\"<svg>\"+b+\"</svg>\";for(b=me.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction oe(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pe={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qe=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pe).forEach(function(a){qe.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pe[b]=pe[a]})});function re(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pe.hasOwnProperty(a)&&pe[a]?(\"\"+b).trim():b+\"px\"}\nfunction se(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=re(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var te=p({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ue(a,b){b&&(te[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?t(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?t(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:t(\"61\")),null!=b.style&&\"object\"!==typeof b.style?t(\"62\",\"\"):void 0)}\nfunction ve(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction we(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Od(a);b=ua[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case \"scroll\":Kd(\"scroll\",a);break;case \"focus\":case \"blur\":Kd(\"focus\",a);Kd(\"blur\",a);c.blur=!0;c.focus=!0;break;case \"cancel\":case \"close\":Sb(e)&&Kd(e,a);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===cb.indexOf(e)&&H(e,a)}c[e]=!0}}}function xe(){}var ye=null,ze=null;\nfunction Ae(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}function Be(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ce=\"function\"===typeof setTimeout?setTimeout:void 0,De=\"function\"===typeof clearTimeout?clearTimeout:void 0,Ee=ba.unstable_scheduleCallback,Fe=ba.unstable_cancelCallback;\nfunction Ge(a,b,c,d,e){a[Ia]=e;\"input\"===c&&\"radio\"===e.type&&null!=e.name&&Bc(a,e);ve(c,d);d=ve(c,e);for(var f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];\"style\"===g?se(a,h):\"dangerouslySetInnerHTML\"===g?ne(a,h):\"children\"===g?oe(a,h):xc(a,g,h,d)}switch(c){case \"input\":Cc(a,e);break;case \"textarea\":he(a,e);break;case \"select\":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?ee(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?ee(a,!!e.multiple,e.defaultValue,\n!0):ee(a,!!e.multiple,e.multiple?[]:\"\",!1))}}function He(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Ie(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}new Set;var Je=[],Ke=-1;function I(a){0>Ke||(a.current=Je[Ke],Je[Ke]=null,Ke--)}function J(a,b){Ke++;Je[Ke]=a.current;a.current=b}var Le={},K={current:Le},L={current:!1},Me=Le;\nfunction Oe(a,b){var c=a.type.contextTypes;if(!c)return Le;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function M(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Pe(a){I(L,a);I(K,a)}function Qe(a){I(L,a);I(K,a)}\nfunction Re(a,b,c){K.current!==Le?t(\"168\"):void 0;J(K,b,a);J(L,c,a)}function Se(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:t(\"108\",mc(b)||\"Unknown\",e);return p({},c,d)}function Te(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Le;Me=K.current;J(K,b,a);J(L,L.current,a);return!0}\nfunction Ue(a,b,c){var d=a.stateNode;d?void 0:t(\"169\");c?(b=Se(a,b,Me),d.__reactInternalMemoizedMergedChildContext=b,I(L,a),I(K,a),J(K,b,a)):I(L,a);J(L,c,a)}var Ve=null,We=null;function Xe(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Ye(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Ve=Xe(function(a){return b.onCommitFiberRoot(c,a)});We=Xe(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ze(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function N(a,b,c,d){return new Ze(a,b,c,d)}\nfunction $e(a){a=a.prototype;return!(!a||!a.isReactComponent)}function af(a){if(\"function\"===typeof a)return $e(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gc)return 11;if(a===ic)return 14}return 2}\nfunction bf(a,b){var c=a.alternate;null===c?(c=N(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction cf(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)$e(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ac:return df(c.children,e,f,b);case fc:return ef(c,e|3,f,b);case bc:return ef(c,e|2,f,b);case cc:return a=N(12,c,b,e|4),a.elementType=cc,a.type=cc,a.expirationTime=f,a;case hc:return a=N(13,c,b,e),a.elementType=hc,a.type=hc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case dc:g=10;break a;case ec:g=9;break a;case gc:g=11;break a;case ic:g=\n14;break a;case jc:g=16;d=null;break a}t(\"130\",null==a?a:typeof a,\"\")}b=N(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function df(a,b,c,d){a=N(7,a,d,b);a.expirationTime=c;return a}function ef(a,b,c,d){a=N(8,a,d,b);b=0===(b&1)?bc:fc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function ff(a,b,c){a=N(6,a,null,b);a.expirationTime=c;return a}\nfunction gf(a,b,c){b=N(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function hf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:c<b?a.earliestPendingTime=b:a.latestPendingTime>b&&(a.latestPendingTime=b);jf(b,a)}\nfunction kf(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:c<b?a.earliestSuspendedTime=b:d>b&&(a.latestSuspendedTime=b);jf(b,a)}function lf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}\nfunction jf(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||d<a)&&(e=d);a=e;0!==a&&c>a&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function P(a,b){if(a&&a.defaultProps){b=p({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction mf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var nf=(new aa.Component).refs;\nfunction of(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:p({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar xf={isMounted:function(a){return(a=a._reactInternalFiber)?2===kd(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=pf();d=qf(d,a);var e=rf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);sf();tf(a,e);uf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=pf();d=qf(d,a);var e=rf(d);e.tag=vf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);sf();tf(a,e);uf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=pf();c=qf(c,a);var d=rf(c);d.tag=\nwf;void 0!==b&&null!==b&&(d.callback=b);sf();tf(a,d);uf(a,c)}};function yf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!hd(c,d)||!hd(e,f):!0}\nfunction zf(a,b,c){var d=!1,e=Le;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Af(f):(e=M(b)?Me:K.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Oe(a,e):Le);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=xf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Bf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&xf.enqueueReplaceState(b,b.state,null)}\nfunction Cf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=nf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Af(f):(f=M(b)?Me:K.current,e.context=Oe(a,f));f=a.updateQueue;null!==f&&(Df(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(of(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&xf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(Df(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Ef=Array.isArray;\nfunction Ff(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?t(\"309\"):void 0,d=c.stateNode);d?void 0:t(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===nf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?t(\"284\"):void 0;c._owner?void 0:t(\"290\",a)}return a}\nfunction Gf(a,b){\"textarea\"!==a.type&&t(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Hf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=bf(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=ff(c,a.mode,d),b.return=a,b;b=e(b,c,d);b.return=a;return b}function l(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props,d),d.ref=Ff(a,b,c),d.return=a,d;d=cf(c.type,c.key,c.props,null,a.mode,d);d.ref=Ff(a,b,c);d.return=a;return d}function k(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=gf(c,a.mode,d),b.return=a,b;b=e(b,c.children||[],d);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=df(c,a.mode,d,f),b.return=a,b;b=e(b,c,d);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=ff(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Zb:return c=cf(b.type,b.key,b.props,null,a.mode,c),c.ref=Ff(a,null,b),c.return=a,c;case $b:return b=gf(b,a.mode,c),b.return=a,b}if(Ef(b)||\nlc(b))return b=df(b,a.mode,c,null),b.return=a,b;Gf(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Zb:return c.key===e?c.type===ac?m(a,b,c.props.children,d,e):l(a,b,c,d):null;case $b:return c.key===e?k(a,b,c,d):null}if(Ef(c)||lc(c))return null!==e?null:m(a,b,c,d,null);Gf(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Zb:return a=a.get(null===d.key?c:d.key)||null,d.type===ac?m(b,a,d.props.children,e,d.key):l(b,a,d,e);case $b:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e)}if(Ef(d)||lc(d))return a=a.get(c)||null,m(b,a,d,e,null);Gf(b,d)}return null}function w(e,g,h,k){for(var l=null,m=null,n=g,u=g=0,r=null;null!==n&&u<h.length;u++){n.index>u?(r=n,n=null):r=n.sibling;var v=x(e,n,h[u],k);if(null===v){null===n&&(n=r);break}a&&\nn&&null===v.alternate&&b(e,n);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;n=r}if(u===h.length)return c(e,n),l;if(null===n){for(;u<h.length;u++)if(n=q(e,h[u],k))g=f(n,g,u),null===m?l=n:m.sibling=n,m=n;return l}for(n=d(e,n);u<h.length;u++)if(r=C(n,e,u,h[u],k))a&&null!==r.alternate&&n.delete(null===r.key?u:r.key),g=f(r,g,u),null===m?l=r:m.sibling=r,m=r;a&&n.forEach(function(a){return b(e,a)});return l}function E(e,g,h,k){var l=lc(h);\"function\"!==typeof l?t(\"150\"):void 0;h=l.call(h);null==h?t(\"151\"):void 0;\nfor(var m=l=null,n=g,u=g=0,r=null,v=h.next();null!==n&&!v.done;u++,v=h.next()){n.index>u?(r=n,n=null):r=n.sibling;var z=x(e,n,v.value,k);if(null===z){n||(n=r);break}a&&n&&null===z.alternate&&b(e,n);g=f(z,g,u);null===m?l=z:m.sibling=z;m=z;n=r}if(v.done)return c(e,n),l;if(null===n){for(;!v.done;u++,v=h.next())v=q(e,v.value,k),null!==v&&(g=f(v,g,u),null===m?l=v:m.sibling=v,m=v);return l}for(n=d(e,n);!v.done;u++,v=h.next())v=C(n,e,u,v.value,k),null!==v&&(a&&null!==v.alternate&&n.delete(null===v.key?u:\nv.key),g=f(v,g,u),null===m?l=v:m.sibling=v,m=v);a&&n.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ac&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Zb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===ac:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===ac?f.props.children:f.props,h);d.ref=Ff(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===ac?(d=df(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=cf(f.type,f.key,f.props,null,a.mode,h),h.ref=Ff(a,d,f),h.return=a,a=h)}return g(a);case $b:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=gf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=ff(f,a.mode,h),d.return=a,a=d),g(a);if(Ef(f))return w(a,d,f,h);if(lc(f))return E(a,d,f,h);l&&Gf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,t(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var If=Hf(!0),Jf=Hf(!1),Kf={},Lf={current:Kf},Mf={current:Kf},Nf={current:Kf};function Of(a){a===Kf?t(\"174\"):void 0;return a}\nfunction Pf(a,b){J(Nf,b,a);J(Mf,a,a);J(Lf,Kf,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:le(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=le(b,c)}I(Lf,a);J(Lf,b,a)}function Qf(a){I(Lf,a);I(Mf,a);I(Nf,a)}function Rf(a){Of(Nf.current);var b=Of(Lf.current);var c=le(b,a.type);b!==c&&(J(Mf,a,a),J(Lf,c,a))}function Sf(a){Mf.current===a&&(I(Lf,a),I(Mf,a))}\nvar Tf=0,Uf=2,Vf=4,Wf=8,Xf=16,Yf=32,Zf=64,$f=128,ag=Xb.ReactCurrentDispatcher,bg=0,cg=null,Q=null,dg=null,eg=null,R=null,fg=null,gg=0,hg=null,ig=0,jg=!1,kg=null,lg=0;function mg(){t(\"307\")}function ng(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!fd(a[c],b[c]))return!1;return!0}\nfunction og(a,b,c,d,e,f){bg=f;cg=b;dg=null!==a?a.memoizedState:null;ag.current=null===dg?pg:qg;b=c(d,e);if(jg){do jg=!1,lg+=1,dg=null!==a?a.memoizedState:null,fg=eg,hg=R=Q=null,ag.current=qg,b=c(d,e);while(jg);kg=null;lg=0}ag.current=rg;a=cg;a.memoizedState=eg;a.expirationTime=gg;a.updateQueue=hg;a.effectTag|=ig;a=null!==Q&&null!==Q.next;bg=0;fg=R=eg=dg=Q=cg=null;gg=0;hg=null;ig=0;a?t(\"300\"):void 0;return b}\nfunction sg(){ag.current=rg;bg=0;fg=R=eg=dg=Q=cg=null;gg=0;hg=null;ig=0;jg=!1;kg=null;lg=0}function tg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===R?eg=R=a:R=R.next=a;return R}function ug(){if(null!==fg)R=fg,fg=R.next,Q=dg,dg=null!==Q?Q.next:null;else{null===dg?t(\"310\"):void 0;Q=dg;var a={memoizedState:Q.memoizedState,baseState:Q.baseState,queue:Q.queue,baseUpdate:Q.baseUpdate,next:null};R=null===R?eg=a:R.next=a;dg=Q.next}return R}\nfunction vg(a,b){return\"function\"===typeof b?b(a):b}\nfunction wg(a){var b=ug(),c=b.queue;null===c?t(\"311\"):void 0;if(0<lg){var d=c.dispatch;if(null!==kg){var e=kg.get(c);if(void 0!==e){kg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);fd(f,b.memoizedState)||(xg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;\nm<bg?(k||(k=!0,h=g,e=f),m>gg&&(gg=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);fd(f,b.memoizedState)||(xg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}\nfunction yg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===hg?(hg={lastEffect:null},hg.lastEffect=a.next=a):(b=hg.lastEffect,null===b?hg.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,hg.lastEffect=a));return a}function zg(a,b,c,d){var e=tg();ig|=a;e.memoizedState=yg(b,c,void 0,void 0===d?null:d)}\nfunction Bg(a,b,c,d){var e=ug();d=void 0===d?null:d;var f=void 0;if(null!==Q){var g=Q.memoizedState;f=g.destroy;if(null!==d&&ng(d,g.deps)){yg(Tf,c,f,d);return}}ig|=a;e.memoizedState=yg(b,c,f,d)}function Cg(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Dg(){}\nfunction Eg(a,b,c){25>lg?void 0:t(\"301\");var d=a.alternate;if(a===cg||null!==d&&d===cg)if(jg=!0,a={expirationTime:bg,action:c,eagerReducer:null,eagerState:null,next:null},null===kg&&(kg=new Map),c=kg.get(b),void 0===c)kg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{sf();var e=pf();e=qf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var l=b.eagerState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(fd(k,l))return}catch(m){}finally{}uf(a,e)}}\nvar rg={readContext:Af,useCallback:mg,useContext:mg,useEffect:mg,useImperativeHandle:mg,useLayoutEffect:mg,useMemo:mg,useReducer:mg,useRef:mg,useState:mg,useDebugValue:mg},pg={readContext:Af,useCallback:function(a,b){tg().memoizedState=[a,void 0===b?null:b];return a},useContext:Af,useEffect:function(a,b){return zg(516,$f|Zf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):[a];return zg(4,Vf|Yf,Cg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return zg(4,Vf|Yf,a,b)},\nuseMemo:function(a,b){var c=tg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=tg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=Eg.bind(null,cg,a);return[d.memoizedState,a]},useRef:function(a){var b=tg();a={current:a};return b.memoizedState=a},useState:function(a){var b=tg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:vg,\neagerState:a};a=a.dispatch=Eg.bind(null,cg,a);return[b.memoizedState,a]},useDebugValue:Dg},qg={readContext:Af,useCallback:function(a,b){var c=ug();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&ng(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:Af,useEffect:function(a,b){return Bg(516,$f|Zf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):[a];return Bg(4,Vf|Yf,Cg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Bg(4,Vf|Yf,a,b)},\nuseMemo:function(a,b){var c=ug();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&ng(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:wg,useRef:function(){return ug().memoizedState},useState:function(a){return wg(vg,a)},useDebugValue:Dg},Fg=null,Gg=null,Hg=!1;\nfunction Ig(a,b){var c=N(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Jg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;default:return!1}}\nfunction Kg(a){if(Hg){var b=Gg;if(b){var c=b;if(!Jg(a,b)){b=He(c);if(!b||!Jg(a,b)){a.effectTag|=2;Hg=!1;Fg=a;return}Ig(Fg,c)}Fg=a;Gg=Ie(b)}else a.effectTag|=2,Hg=!1,Fg=a}}function Lg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag;)a=a.return;Fg=a}function Mg(a){if(a!==Fg)return!1;if(!Hg)return Lg(a),Hg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Be(b,a.memoizedProps))for(b=Gg;b;)Ig(a,b),b=He(b);Lg(a);Gg=Fg?He(a.stateNode):null;return!0}function Ng(){Gg=Fg=null;Hg=!1}\nvar Og=Xb.ReactCurrentOwner,xg=!1;function S(a,b,c,d){b.child=null===a?Jf(b,null,c,d):If(b,a.child,c,d)}function Pg(a,b,c,d,e){c=c.render;var f=b.ref;Qg(b,e);d=og(a,b,c,d,f,e);if(null!==a&&!xg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Rg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Sg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!$e(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Tg(a,b,g,d,e,f);a=cf(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:hd,c(e,d)&&a.ref===b.ref))return Rg(a,b,f);b.effectTag|=1;a=bf(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}\nfunction Tg(a,b,c,d,e,f){return null!==a&&hd(a.memoizedProps,d)&&a.ref===b.ref&&(xg=!1,e<f)?Rg(a,b,f):Ug(a,b,c,d,f)}function Vg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function Ug(a,b,c,d,e){var f=M(c)?Me:K.current;f=Oe(b,f);Qg(b,e);c=og(a,b,c,d,f,e);if(null!==a&&!xg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Rg(a,b,e);b.effectTag|=1;S(a,b,c,e);return b.child}\nfunction Wg(a,b,c,d,e){if(M(c)){var f=!0;Te(b)}else f=!1;Qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),zf(b,c,d,e),Cf(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var l=g.context,k=c.contextType;\"object\"===typeof k&&null!==k?k=Af(k):(k=M(c)?Me:K.current,k=Oe(b,k));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&Bf(b,g,d,k);Xg=!1;var x=b.memoizedState;l=g.state=x;var C=b.updateQueue;null!==C&&(Df(b,C,d,g,e),l=b.memoizedState);h!==d||x!==l||L.current||Xg?(\"function\"===typeof m&&(of(b,c,m,d),l=b.memoizedState),(h=Xg||yf(b,c,h,d,x,l,k))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&\ng.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=l),g.props=d,g.state=l,g.context=k,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,h=b.memoizedProps,g.props=b.type===b.elementType?h:P(b.type,h),l=g.context,k=c.contextType,\"object\"===typeof k&&null!==k?k=Af(k):(k=M(c)?Me:K.current,k=Oe(b,k)),m=c.getDerivedStateFromProps,(q=\"function\"===\ntypeof m||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||l!==k)&&Bf(b,g,d,k),Xg=!1,l=b.memoizedState,x=g.state=l,C=b.updateQueue,null!==C&&(Df(b,C,d,g,e),x=b.memoizedState),h!==d||l!==x||L.current||Xg?(\"function\"===typeof m&&(of(b,c,m,d),x=b.memoizedState),(m=Xg||yf(b,c,h,d,l,x,k))?(q||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===\ntypeof g.componentWillUpdate&&g.componentWillUpdate(d,x,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=\nx),g.props=d,g.state=x,g.context=k,d=m):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&l===a.memoizedState||(b.effectTag|=256),d=!1);return Yg(a,b,c,d,f,e)}\nfunction Yg(a,b,c,d,e,f){Vg(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Ue(b,c,!1),Rg(a,b,f);d=b.stateNode;Og.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=If(b,a.child,null,f),b.child=If(b,null,h,f)):S(a,b,h,f);b.memoizedState=d.state;e&&Ue(b,c,!0);return b.child}function Zg(a){var b=a.stateNode;b.pendingContext?Re(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Re(a,b.context,!1);Pf(a,b.containerInfo)}\nfunction $g(a,b,c){var d=b.mode,e=b.pendingProps,f=b.memoizedState;if(0===(b.effectTag&64)){f=null;var g=!1}else f={timedOutAt:null!==f?f.timedOutAt:0},g=!0,b.effectTag&=-65;if(null===a)if(g){var h=e.fallback;a=df(null,d,0,null);0===(b.mode&1)&&(a.child=null!==b.memoizedState?b.child.child:b.child);d=df(h,d,c,null);a.sibling=d;c=a;c.return=d.return=b}else c=d=Jf(b,null,e.children,c);else null!==a.memoizedState?(d=a.child,h=d.sibling,g?(c=e.fallback,e=bf(d,d.pendingProps,0),0===(b.mode&1)&&(g=null!==\nb.memoizedState?b.child.child:b.child,g!==d.child&&(e.child=g)),d=e.sibling=bf(h,c,h.expirationTime),c=e,e.childExpirationTime=0,c.return=d.return=b):c=d=If(b,d.child,e.children,c)):(h=a.child,g?(g=e.fallback,e=df(null,d,0,null),e.child=h,0===(b.mode&1)&&(e.child=null!==b.memoizedState?b.child.child:b.child),d=e.sibling=df(g,d,c,null),d.effectTag|=2,c=e,e.childExpirationTime=0,c.return=d.return=b):d=c=If(b,h,e.children,c)),b.stateNode=a.stateNode;b.memoizedState=f;b.child=c;return d}\nfunction Rg(a,b,c){null!==a&&(b.contextDependencies=a.contextDependencies);if(b.childExpirationTime<c)return null;null!==a&&b.child!==a.child?t(\"153\"):void 0;if(null!==b.child){a=b.child;c=bf(a,a.pendingProps,a.expirationTime);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=bf(a,a.pendingProps,a.expirationTime),c.return=b;c.sibling=null}return b.child}\nfunction ah(a,b,c){var d=b.expirationTime;if(null!==a)if(a.memoizedProps!==b.pendingProps||L.current)xg=!0;else{if(d<c){xg=!1;switch(b.tag){case 3:Zg(b);Ng();break;case 5:Rf(b);break;case 1:M(b.type)&&Te(b);break;case 4:Pf(b,b.stateNode.containerInfo);break;case 10:bh(b,b.memoizedProps.value);break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;if(0!==d&&d>=c)return $g(a,b,c);b=Rg(a,b,c);return null!==b?b.sibling:null}}return Rg(a,b,c)}}else xg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Oe(b,K.current);Qg(b,c);e=og(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;sg();if(M(d)){var f=!0;Te(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&of(b,d,g,a);e.updater=xf;b.stateNode=e;e._reactInternalFiber=b;Cf(b,d,a,c);b=Yg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=mf(e);b.type=a;e=b.tag=af(a);f=P(a,f);g=void 0;switch(e){case 0:g=Ug(null,b,a,f,c);break;case 1:g=Wg(null,b,a,f,c);break;case 11:g=Pg(null,b,a,f,c);break;case 14:g=Sg(null,b,a,P(a.type,f),d,c);break;default:t(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:P(d,e),Ug(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:P(d,e),Wg(a,b,d,e,c);case 3:Zg(b);d=b.updateQueue;null===d?t(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;Df(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Ng(),b=Rg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)Gg=Ie(b.stateNode.containerInfo),Fg=b,e=Hg=!0;e?(b.effectTag|=2,b.child=Jf(b,null,d,c)):(S(a,b,d,c),Ng());b=b.child}return b;case 5:return Rf(b),null===a&&Kg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,Be(d,e)?g=null:null!==f&&Be(d,f)&&(b.effectTag|=16),Vg(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Kg(b),null;case 13:return $g(a,b,c);case 4:return Pf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=If(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:P(d,e),Pg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;bh(b,f);if(null!==g){var h=g.value;f=fd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!L.current){b=Rg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=rf(c),k.tag=wf,tf(h,k));h.expirationTime<c&&(h.expirationTime=c);k=h.alternate;null!==k&&k.expirationTime<c&&(k.expirationTime=c);for(var m=h.return;null!==m;){k=m.alternate;if(m.childExpirationTime<c)m.childExpirationTime=c,null!==k&&k.childExpirationTime<c&&(k.childExpirationTime=c);else if(null!==k&&k.childExpirationTime<c)k.childExpirationTime=c;else break;m=m.return}l.expirationTime<c&&(l.expirationTime=c);break}k=k.next}}else g=10===h.tag?h.type===b.type?null:\nh.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}}S(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,Qg(b,c),e=Af(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,S(a,b,d,c),b.child;case 14:return e=b.type,f=P(e,b.pendingProps),f=P(e.type,f),Sg(a,b,e,f,d,c);case 15:return Tg(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===\nd?e:P(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,M(d)?(a=!0,Te(b)):a=!1,Qg(b,c),zf(b,d,e,c),Cf(b,d,e,c),Yg(null,b,d,!0,a,c);default:t(\"156\")}}var ch={current:null},dh=null,eh=null,fh=null;function bh(a,b){var c=a.type._context;J(ch,c._currentValue,a);c._currentValue=b}function gh(a){var b=ch.current;I(ch,a);a.type._context._currentValue=b}function Qg(a,b){dh=a;fh=eh=null;var c=a.contextDependencies;null!==c&&c.expirationTime>=b&&(xg=!0);a.contextDependencies=null}\nfunction Af(a,b){if(fh!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)fh=a,b=1073741823;b={context:a,observedBits:b,next:null};null===eh?(null===dh?t(\"308\"):void 0,eh=b,dh.contextDependencies={first:b,expirationTime:0}):eh=eh.next=b}return a._currentValue}var hh=0,vf=1,wf=2,ih=3,Xg=!1;function jh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction kh(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function rf(a){return{expirationTime:a,tag:hh,payload:null,callback:null,next:null,nextEffect:null}}function lh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction tf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=jh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=jh(a.memoizedState),e=c.updateQueue=jh(c.memoizedState)):d=a.updateQueue=kh(e):null===e&&(e=c.updateQueue=kh(d));null===e||d===e?lh(d,b):null===d.lastUpdate||null===e.lastUpdate?(lh(d,b),lh(e,b)):(lh(d,b),e.lastUpdate=b)}\nfunction mh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=jh(a.memoizedState):nh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function nh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=kh(b));return b}\nfunction oh(a,b,c,d,e,f){switch(c.tag){case vf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ih:a.effectTag=a.effectTag&-2049|64;case hh:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return p({},d,e);case wf:Xg=!0}return d}\nfunction Df(a,b,c,d,e){Xg=!1;b=nh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;m<e?(null===g&&(g=l,f=k),h<m&&(h=m)):(k=oh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=32,l.nextEffect=null,null===b.lastEffect?b.firstEffect=b.lastEffect=l:(b.lastEffect.nextEffect=l,b.lastEffect=l)));l=l.next}m=null;for(l=b.firstCapturedUpdate;null!==l;){var q=l.expirationTime;q<e?(null===m&&(m=l,null===g&&(f=k)),h<q&&(h=q)):(k=oh(a,b,l,k,c,d),null!==l.callback&&(a.effectTag|=\n32,l.nextEffect=null,null===b.lastCapturedEffect?b.firstCapturedEffect=b.lastCapturedEffect=l:(b.lastCapturedEffect.nextEffect=l,b.lastCapturedEffect=l)));l=l.next}null===g&&(b.lastUpdate=null);null===m?b.lastCapturedUpdate=null:a.effectTag|=32;null===g&&null===m&&(f=k);b.baseState=f;b.firstUpdate=g;b.firstCapturedUpdate=m;a.expirationTime=h;a.memoizedState=k}\nfunction ph(a,b,c){null!==b.firstCapturedUpdate&&(null!==b.lastUpdate&&(b.lastUpdate.next=b.firstCapturedUpdate,b.lastUpdate=b.lastCapturedUpdate),b.firstCapturedUpdate=b.lastCapturedUpdate=null);qh(b.firstEffect,c);b.firstEffect=b.lastEffect=null;qh(b.firstCapturedEffect,c);b.firstCapturedEffect=b.lastCapturedEffect=null}function qh(a,b){for(;null!==a;){var c=a.callback;if(null!==c){a.callback=null;var d=b;\"function\"!==typeof c?t(\"191\",c):void 0;c.call(d)}a=a.nextEffect}}\nfunction rh(a,b){return{value:a,source:b,stack:nc(b)}}function sh(a){a.effectTag|=4}var wh=void 0,xh=void 0,yh=void 0,zh=void 0;wh=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};xh=function(){};\nyh=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;Of(Lf.current);a=null;switch(c){case \"input\":f=zc(g,f);d=zc(g,d);a=[];break;case \"option\":f=de(g,f);d=de(g,d);a=[];break;case \"select\":f=p({},f,{value:void 0});d=p({},d,{value:void 0});a=[];break;case \"textarea\":f=fe(g,f);d=fe(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=xe)}ue(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if(\"style\"===\nc){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(ta.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if(\"style\"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]=\"\");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||\n(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else\"dangerouslySetInnerHTML\"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,\"\"+k)):\"children\"===c?l===k||\"string\"!==typeof k&&\"number\"!==typeof k||(a=a||[]).push(c,\"\"+k):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(ta.hasOwnProperty(c)?(null!=k&&we(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push(\"style\",h);e=a;(b.updateQueue=e)&&sh(b)}};zh=function(a,b,c,d){c!==d&&sh(b)};\nvar Ah=\"function\"===typeof WeakSet?WeakSet:Set;function Bh(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=nc(c));null!==c&&mc(c.type);b=b.value;null!==a&&1===a.tag&&mc(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Ch(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Dh(a,c)}else b.current=null}\nfunction Eh(a,b,c){c=c.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do{if((d.tag&a)!==Tf){var e=d.destroy;d.destroy=void 0;void 0!==e&&e()}(d.tag&b)!==Tf&&(e=d.create,d.destroy=e());d=d.next}while(d!==c)}}\nfunction Fh(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d.style.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=re(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if(13===c.tag&&null!==c.memoizedState){d=c.child.sibling;d.return=c;c=d;continue}else if(null!==c.child){c.child.return=c;c=c.child;continue}if(c===a)break;for(;null===c.sibling;){if(null===c.return||\nc.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction Gh(a){\"function\"===typeof We&&We(a);switch(a.tag){case 0:case 11:case 14:case 15:var b=a.updateQueue;if(null!==b&&(b=b.lastEffect,null!==b)){var c=b=b.next;do{var d=c.destroy;if(void 0!==d){var e=a;try{d()}catch(f){Dh(e,f)}}c=c.next}while(c!==b)}break;case 1:Ch(a);b=a.stateNode;if(\"function\"===typeof b.componentWillUnmount)try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(f){Dh(a,f)}break;case 5:Ch(a);break;case 4:Hh(a)}}\nfunction Ih(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Jh(a){a:{for(var b=a.return;null!==b;){if(Ih(b)){var c=b;break a}b=b.return}t(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:t(\"161\")}c.effectTag&16&&(oe(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Ih(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)if(c)if(d){var f=b,g=e.stateNode,h=c;8===f.nodeType?f.parentNode.insertBefore(g,h):f.insertBefore(g,h)}else b.insertBefore(e.stateNode,c);else d?(g=b,h=e.stateNode,8===g.nodeType?(f=g.parentNode,f.insertBefore(h,g)):(f=g,f.appendChild(h)),g=g._reactRootContainer,null!==g&&void 0!==g||null!==f.onclick||(f.onclick=xe)):b.appendChild(e.stateNode);\nelse if(4!==e.tag&&null!==e.child){e.child.return=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e.return||e.return===a)return;e=e.return}e.sibling.return=e.return;e=e.sibling}}\nfunction Hh(a){for(var b=a,c=!1,d=void 0,e=void 0;;){if(!c){c=b.return;a:for(;;){null===c?t(\"160\"):void 0;switch(c.tag){case 5:d=c.stateNode;e=!1;break a;case 3:d=c.stateNode.containerInfo;e=!0;break a;case 4:d=c.stateNode.containerInfo;e=!0;break a}c=c.return}c=!0}if(5===b.tag||6===b.tag){a:for(var f=b,g=f;;)if(Gh(g),null!==g.child&&4!==g.tag)g.child.return=g,g=g.child;else{if(g===f)break;for(;null===g.sibling;){if(null===g.return||g.return===f)break a;g=g.return}g.sibling.return=g.return;g=g.sibling}e?\n(f=d,g=b.stateNode,8===f.nodeType?f.parentNode.removeChild(g):f.removeChild(g)):d.removeChild(b.stateNode)}else if(4===b.tag?(d=b.stateNode.containerInfo,e=!0):Gh(b),null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return;b=b.return;4===b.tag&&(c=!1)}b.sibling.return=b.return;b=b.sibling}}\nfunction Kh(a,b){switch(b.tag){case 0:case 11:case 14:case 15:Eh(Vf,Wf,b);break;case 1:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&Ge(c,f,e,a,d,b)}break;case 6:null===b.stateNode?t(\"162\"):void 0;b.stateNode.nodeValue=b.memoizedProps;break;case 3:break;case 12:break;case 13:c=b.memoizedState;d=void 0;a=b;null===c?d=!1:(d=!0,a=b.child,0===c.timedOutAt&&(c.timedOutAt=pf()));null!==a&&Fh(a,d);c=\nb.updateQueue;if(null!==c){b.updateQueue=null;var g=b.stateNode;null===g&&(g=b.stateNode=new Ah);c.forEach(function(a){var c=Lh.bind(null,b,a);g.has(a)||(g.add(a),a.then(c,c))})}break;case 17:break;default:t(\"163\")}}var Mh=\"function\"===typeof WeakMap?WeakMap:Map;function Nh(a,b,c){c=rf(c);c.tag=ih;c.payload={element:null};var d=b.value;c.callback=function(){Oh(d);Bh(a,b)};return c}\nfunction Ph(a,b,c){c=rf(c);c.tag=ih;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Qh?Qh=new Set([this]):Qh.add(this));var c=b.value,e=b.stack;Bh(a,b);this.componentDidCatch(c,{componentStack:null!==e?e:\"\"})});return c}\nfunction Rh(a){switch(a.tag){case 1:M(a.type)&&Pe(a);var b=a.effectTag;return b&2048?(a.effectTag=b&-2049|64,a):null;case 3:return Qf(a),Qe(a),b=a.effectTag,0!==(b&64)?t(\"285\"):void 0,a.effectTag=b&-2049|64,a;case 5:return Sf(a),null;case 13:return b=a.effectTag,b&2048?(a.effectTag=b&-2049|64,a):null;case 4:return Qf(a),null;case 10:return gh(a),null;default:return null}}\nvar Sh=Xb.ReactCurrentDispatcher,Th=Xb.ReactCurrentOwner,Uh=1073741822,Vh=0,Wh=!1,T=null,Xh=null,U=0,Yh=-1,Zh=!1,V=null,$h=!1,ai=null,bi=null,ci=null,Qh=null;function di(){if(null!==T)for(var a=T.return;null!==a;){var b=a;switch(b.tag){case 1:var c=b.type.childContextTypes;null!==c&&void 0!==c&&Pe(b);break;case 3:Qf(b);Qe(b);break;case 5:Sf(b);break;case 4:Qf(b);break;case 10:gh(b)}a=a.return}Xh=null;U=0;Yh=-1;Zh=!1;T=null}\nfunction ei(a,b){ci=bi=ai=null;var c=W;W=!0;do{if(b.effectTag&512){var d=!1,e=void 0;try{var f=b;Eh($f,Tf,f);Eh(Tf,Zf,f)}catch(g){d=!0,e=g}d&&Dh(b,e)}b=b.nextEffect}while(null!==b);W=c;c=a.expirationTime;0!==c&&fi(a,c)}function sf(){null!==bi&&Fe(bi);null!==ci&&ci()}\nfunction gi(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:M(b.type)&&Pe(b);break;case 3:Qf(b);Qe(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Mg(b),b.effectTag&=-3;xh(b);break;case 5:Sf(b);var h=Of(Nf.current);f=b.type;if(null!==e&&null!=b.stateNode)yh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=Of(Lf.current);if(Mg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,q=h;e[Ha]=g;e[Ia]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":H(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k<cb.length;k++)H(cb[k],e);break;case \"source\":H(\"error\",e);break;case \"img\":case \"image\":case \"link\":H(\"error\",e);H(\"load\",e);break;case \"form\":H(\"reset\",e);H(\"submit\",e);break;case \"details\":H(\"toggle\",e);break;case \"input\":Ac(e,m);H(\"invalid\",e);we(q,\"onChange\");break;case \"select\":e._wrapperState=\n{wasMultiple:!!m.multiple};H(\"invalid\",e);we(q,\"onChange\");break;case \"textarea\":ge(e,m),H(\"invalid\",e),we(q,\"onChange\")}ue(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],\"children\"===f?\"string\"===typeof l?e.textContent!==l&&(k=[\"children\",l]):\"number\"===typeof l&&e.textContent!==\"\"+l&&(k=[\"children\",\"\"+l]):ta.hasOwnProperty(f)&&null!=l&&we(q,f));switch(h){case \"input\":Vb(e);Ec(e,m,!0);break;case \"textarea\":Vb(e);ie(e,m);break;case \"select\":case \"option\":break;default:\"function\"===typeof m.onClick&&\n(e.onclick=xe)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&sh(b)}else{m=b;e=f;q=g;k=9===h.nodeType?h:h.ownerDocument;l===je.html&&(l=ke(e));l===je.html?\"script\"===e?(e=k.createElement(\"div\"),e.innerHTML=\"<script>\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof q.is?k=k.createElement(e,{is:q.is}):(k=k.createElement(e),\"select\"===e&&q.multiple&&(k.multiple=!0)):k=k.createElementNS(l,e);e=k;e[Ha]=m;e[Ia]=g;wh(e,b,!1,!1);q=e;k=f;m=g;var x=h,C=ve(k,m);switch(k){case \"iframe\":case \"object\":H(\"load\",\nq);h=m;break;case \"video\":case \"audio\":for(h=0;h<cb.length;h++)H(cb[h],q);h=m;break;case \"source\":H(\"error\",q);h=m;break;case \"img\":case \"image\":case \"link\":H(\"error\",q);H(\"load\",q);h=m;break;case \"form\":H(\"reset\",q);H(\"submit\",q);h=m;break;case \"details\":H(\"toggle\",q);h=m;break;case \"input\":Ac(q,m);h=zc(q,m);H(\"invalid\",q);we(x,\"onChange\");break;case \"option\":h=de(q,m);break;case \"select\":q._wrapperState={wasMultiple:!!m.multiple};h=p({},m,{value:void 0});H(\"invalid\",q);we(x,\"onChange\");break;case \"textarea\":ge(q,\nm);h=fe(q,m);H(\"invalid\",q);we(x,\"onChange\");break;default:h=m}ue(k,h);l=void 0;var w=k,E=q,v=h;for(l in v)if(v.hasOwnProperty(l)){var n=v[l];\"style\"===l?se(E,n):\"dangerouslySetInnerHTML\"===l?(n=n?n.__html:void 0,null!=n&&ne(E,n)):\"children\"===l?\"string\"===typeof n?(\"textarea\"!==w||\"\"!==n)&&oe(E,n):\"number\"===typeof n&&oe(E,\"\"+n):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ta.hasOwnProperty(l)?null!=n&&we(x,l):null!=n&&xc(E,l,n,C))}switch(k){case \"input\":Vb(q);\nEc(q,m,!1);break;case \"textarea\":Vb(q);ie(q,m);break;case \"option\":null!=m.value&&q.setAttribute(\"value\",\"\"+yc(m.value));break;case \"select\":h=q;h.multiple=!!m.multiple;q=m.value;null!=q?ee(h,!!m.multiple,q,!1):null!=m.defaultValue&&ee(h,!!m.multiple,m.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(q.onclick=xe)}(g=Ae(f,g))&&sh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?t(\"166\"):void 0;break;case 6:e&&null!=b.stateNode?zh(e,b,e.memoizedProps,g):(\"string\"!==\ntypeof g&&(null===b.stateNode?t(\"166\"):void 0),e=Of(Nf.current),Of(Lf.current),Mg(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Ha]=g,(g=f.nodeValue!==e)&&sh(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Ha]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;T=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=\nb.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Qf(b);xh(b);break;case 10:gh(b);break;case 9:break;case 14:break;case 17:M(b.type)&&Pe(b);break;default:t(\"156\")}T=null}b=a;if(1===U||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=\na.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=Rh(a,U);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}\nfunction hi(a){var b=ah(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=gi(a));Th.current=null;return b}\nfunction ii(a,b){Wh?t(\"243\"):void 0;sf();Wh=!0;var c=Sh.current;Sh.current=rg;var d=a.nextExpirationTimeToWorkOn;if(d!==U||a!==Xh||null===T)di(),Xh=a,U=d,T=bf(Xh.current,null,U),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==T&&!ji();)T=hi(T);else for(;null!==T;)T=hi(T)}catch(E){if(fh=eh=dh=null,sg(),null===T)e=!0,Oh(E);else{null===T?t(\"271\"):void 0;var f=T,g=f.return;if(null===g)e=!0,Oh(E);else{a:{var h=a,l=g,k=f,m=E;g=U;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==\nm&&\"object\"===typeof m&&\"function\"===typeof m.then){var q=m;m=l;var x=-1,C=-1;do{if(13===m.tag){var w=m.alternate;if(null!==w&&(w=w.memoizedState,null!==w)){C=10*(1073741822-w.timedOutAt);break}w=m.pendingProps.maxDuration;if(\"number\"===typeof w)if(0>=w)x=0;else if(-1===x||w<x)x=w}m=m.return}while(null!==m);m=l;do{if(w=13===m.tag)w=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(w){l=m.updateQueue;null===l?(l=new Set,l.add(q),m.updateQueue=l):l.add(q);if(0===(m.mode&1)){m.effectTag|=\n64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=rf(1073741823),g.tag=wf,tf(k,g)));k.expirationTime=1073741823;break a}k=h.pingCache;null===k?(k=h.pingCache=new Mh,l=new Set,k.set(q,l)):(l=k.get(q),void 0===l&&(l=new Set,k.set(q,l)));l.has(g)||(l.add(g),k=ki.bind(null,h,q,g),q.then(k,k));-1===x?h=1073741823:(-1===C&&(C=10*(1073741822-lf(h,g))-5E3),h=C+x);0<=h&&Yh<h&&(Yh=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((mc(k.type)||\"A React component\")+\n\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+nc(k))}Zh=!0;m=rh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Nh(h,m,g);mh(h,g);break a;case 1:if(q=m,x=h.type,C=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof x.getDerivedStateFromError||null!==C&&\"function\"===typeof C.componentDidCatch&&(null===Qh||!Qh.has(C)))){h.effectTag|=2048;\nh.expirationTime=g;g=Ph(h,q,g);mh(h,g);break a}}h=h.return}while(null!==h)}T=gi(f);continue}}}break}while(1);Wh=!1;Sh.current=c;fh=eh=dh=null;sg();if(e)Xh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?t(\"281\"):void 0;Xh=null;if(Zh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){kf(a,d);li(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;\nb=a.expirationTime=1073741823;li(a,c,d,b,-1);return}}b&&-1!==Yh?(kf(a,d),b=10*(1073741822-lf(a,d)),b<Yh&&(Yh=b),b=10*(1073741822-pf()),b=Yh-b,li(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction Dh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Qh||!Qh.has(d))){a=rh(b,a);a=Ph(c,a,1073741823);tf(c,a);uf(c,1073741823);return}break;case 3:a=rh(b,a);a=Nh(c,a,1073741823);tf(c,a);uf(c,1073741823);return}c=c.return}3===a.tag&&(c=rh(b,a),c=Nh(a,c,1073741823),tf(a,c),uf(a,1073741823))}\nfunction qf(a,b){0!==Vh?a=Vh:Wh?a=$h?1073741823:U:b.mode&1?(a=mi?1073741822-10*(((1073741822-a+15)/10|0)+1):1073741822-25*(((1073741822-a+500)/25|0)+1),null!==Xh&&a===U&&--a):a=1073741823;mi&&(0===ni||a<ni)&&(ni=a);return a}\nfunction ki(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Xh&&U===c)Xh=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;jf(c,a);c=a.expirationTime;0!==c&&fi(a,c)}}function Lh(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=pf();b=qf(b,a);a=oi(a,b);null!==a&&(hf(a,b),b=a.expirationTime,0!==b&&fi(a,b))}\nfunction oi(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}\nfunction uf(a,b){a=oi(a,b);null!==a&&(!Wh&&0!==U&&b>U&&di(),hf(a,b),Wh&&!$h&&Xh===a||fi(a,a.expirationTime),pi>qi&&(pi=0,t(\"185\")))}function ri(a,b,c,d,e){var f=Vh;Vh=1073741823;try{return a(b,c,d,e)}finally{Vh=f}}var si=null,X=null,ti=0,ui=void 0,W=!1,vi=null,Y=0,ni=0,wi=!1,xi=null,Z=!1,yi=!1,mi=!1,zi=null,Ai=ba.unstable_now(),Bi=1073741822-(Ai/10|0),Ci=Bi,qi=50,pi=0,Di=null;function Ei(){Bi=1073741822-((ba.unstable_now()-Ai)/10|0)}\nfunction Fi(a,b){if(0!==ti){if(b<ti)return;null!==ui&&ba.unstable_cancelCallback(ui)}ti=b;a=ba.unstable_now()-Ai;ui=ba.unstable_scheduleCallback(Gi,{timeout:10*(1073741822-b)-a})}function li(a,b,c,d,e){a.expirationTime=d;0!==e||ji()?0<e&&(a.timeoutHandle=Ce(Hi.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Hi(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;Ei();Ci=Bi;Ii(a,c)}function pf(){if(W)return Ci;Ji();if(0===Y||1===Y)Ei(),Ci=Bi;return Ci}\nfunction fi(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===X?(si=X=a,a.nextScheduledRoot=a):(X=X.nextScheduledRoot=a,X.nextScheduledRoot=si)):b>a.expirationTime&&(a.expirationTime=b);W||(Z?yi&&(vi=a,Y=1073741823,Ki(a,1073741823,!1)):1073741823===b?Li(1073741823,!1):Fi(a,b))}\nfunction Ji(){var a=0,b=null;if(null!==X)for(var c=X,d=si;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===X?t(\"244\"):void 0;if(d===d.nextScheduledRoot){si=X=d.nextScheduledRoot=null;break}else if(d===si)si=e=d.nextScheduledRoot,X.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===X){X=c;X.nextScheduledRoot=si;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===X)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}vi=b;Y=a}var Mi=!1;function ji(){return Mi?!0:ba.unstable_shouldYield()?Mi=!0:!1}function Gi(){try{if(!ji()&&null!==si){Ei();var a=si;do{var b=a.expirationTime;0!==b&&Bi<=b&&(a.nextExpirationTimeToWorkOn=Bi);a=a.nextScheduledRoot}while(a!==si)}Li(0,!0)}finally{Mi=!1}}\nfunction Li(a,b){Ji();if(b)for(Ei(),Ci=Bi;null!==vi&&0!==Y&&a<=Y&&!(Mi&&Bi>Y);)Ki(vi,Y,Bi>Y),Ji(),Ei(),Ci=Bi;else for(;null!==vi&&0!==Y&&a<=Y;)Ki(vi,Y,!1),Ji();b&&(ti=0,ui=null);0!==Y&&Fi(vi,Y);pi=0;Di=null;if(null!==zi)for(a=zi,zi=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){wi||(wi=!0,xi=d)}}if(wi)throw a=xi,xi=null,wi=!1,a;}function Ii(a,b){W?t(\"253\"):void 0;vi=a;Y=b;Ki(a,b,!1);Li(1073741823,!1)}\nfunction Ki(a,b,c){W?t(\"245\"):void 0;W=!0;if(c){var d=a.finishedWork;null!==d?Oi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,De(d)),ii(a,c),d=a.finishedWork,null!==d&&(ji()?a.finishedWork=d:Oi(a,d,b)))}else d=a.finishedWork,null!==d?Oi(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,De(d)),ii(a,c),d=a.finishedWork,null!==d&&Oi(a,d,b));W=!1}\nfunction Oi(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===zi?zi=[d]:zi.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===Di?pi++:(Di=a,pi=0);$h=Wh=!0;a.current===b?t(\"177\"):void 0;c=a.pendingCommitExpirationTime;0===c?t(\"261\"):void 0;a.pendingCommitExpirationTime=0;d=b.expirationTime;var e=b.childExpirationTime;d=e>d?e:d;a.didError=!1;0===d?(a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=\n0):(d<a.latestPingedTime&&(a.latestPingedTime=0),e=a.latestPendingTime,0!==e&&(e>d?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>d&&(a.earliestPendingTime=a.latestPendingTime)),e=a.earliestSuspendedTime,0===e?hf(a,d):d<a.latestSuspendedTime?(a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0,hf(a,d)):d>e&&hf(a,d));jf(0,a);Th.current=null;1<b.effectTag?null!==b.lastEffect?(b.lastEffect.nextEffect=b,d=b.firstEffect):d=b:d=b.firstEffect;ye=Hd;e=Td();if(Ud(e)){if(\"selectionStart\"in\ne)var f={start:e.selectionStart,end:e.selectionEnd};else a:{f=(f=e.ownerDocument)&&f.defaultView||window;var g=f.getSelection&&f.getSelection();if(g&&0!==g.rangeCount){f=g.anchorNode;var h=g.anchorOffset,l=g.focusNode;g=g.focusOffset;try{f.nodeType,l.nodeType}catch(ub){f=null;break a}var k=0,m=-1,q=-1,x=0,C=0,w=e,E=null;b:for(;;){for(var v;;){w!==f||0!==h&&3!==w.nodeType||(m=k+h);w!==l||0!==g&&3!==w.nodeType||(q=k+g);3===w.nodeType&&(k+=w.nodeValue.length);if(null===(v=w.firstChild))break;E=w;w=v}for(;;){if(w===\ne)break b;E===f&&++x===h&&(m=k);E===l&&++C===g&&(q=k);if(null!==(v=w.nextSibling))break;w=E;E=w.parentNode}w=v}f=-1===m||-1===q?null:{start:m,end:q}}else f=null}f=f||{start:0,end:0}}else f=null;ze={focusedElem:e,selectionRange:f};Hd=!1;for(V=d;null!==V;){e=!1;f=void 0;try{for(;null!==V;){if(V.effectTag&256)a:{var n=V.alternate;h=V;switch(h.tag){case 0:case 11:case 15:Eh(Uf,Tf,h);break a;case 1:if(h.effectTag&256&&null!==n){var u=n.memoizedProps,z=n.memoizedState,Ag=h.stateNode,Ni=Ag.getSnapshotBeforeUpdate(h.elementType===\nh.type?u:P(h.type,u),z);Ag.__reactInternalSnapshotBeforeUpdate=Ni}break a;case 3:case 5:case 6:case 4:case 17:break a;default:t(\"163\")}}V=V.nextEffect}}catch(ub){e=!0,f=ub}e&&(null===V?t(\"178\"):void 0,Dh(V,f),null!==V&&(V=V.nextEffect))}for(V=d;null!==V;){n=!1;u=void 0;try{for(;null!==V;){var y=V.effectTag;y&16&&oe(V.stateNode,\"\");if(y&128){var B=V.alternate;if(null!==B){var r=B.ref;null!==r&&(\"function\"===typeof r?r(null):r.current=null)}}switch(y&14){case 2:Jh(V);V.effectTag&=-3;break;case 6:Jh(V);\nV.effectTag&=-3;Kh(V.alternate,V);break;case 4:Kh(V.alternate,V);break;case 8:z=V;Hh(z);z.return=null;z.child=null;z.memoizedState=null;z.updateQueue=null;var O=z.alternate;null!==O&&(O.return=null,O.child=null,O.memoizedState=null,O.updateQueue=null)}V=V.nextEffect}}catch(ub){n=!0,u=ub}n&&(null===V?t(\"178\"):void 0,Dh(V,u),null!==V&&(V=V.nextEffect))}r=ze;B=Td();y=r.focusedElem;n=r.selectionRange;if(B!==y&&y&&y.ownerDocument&&Sd(y.ownerDocument.documentElement,y)){null!==n&&Ud(y)&&(B=n.start,r=n.end,\nvoid 0===r&&(r=B),\"selectionStart\"in y?(y.selectionStart=B,y.selectionEnd=Math.min(r,y.value.length)):(r=(B=y.ownerDocument||document)&&B.defaultView||window,r.getSelection&&(r=r.getSelection(),u=y.textContent.length,O=Math.min(n.start,u),n=void 0===n.end?O:Math.min(n.end,u),!r.extend&&O>n&&(u=n,n=O,O=u),u=Rd(y,O),z=Rd(y,n),u&&z&&(1!==r.rangeCount||r.anchorNode!==u.node||r.anchorOffset!==u.offset||r.focusNode!==z.node||r.focusOffset!==z.offset)&&(B=B.createRange(),B.setStart(u.node,u.offset),r.removeAllRanges(),\nO>n?(r.addRange(B),r.extend(z.node,z.offset)):(B.setEnd(z.node,z.offset),r.addRange(B))))));B=[];for(r=y;r=r.parentNode;)1===r.nodeType&&B.push({element:r,left:r.scrollLeft,top:r.scrollTop});\"function\"===typeof y.focus&&y.focus();for(y=0;y<B.length;y++)r=B[y],r.element.scrollLeft=r.left,r.element.scrollTop=r.top}ze=null;Hd=!!ye;ye=null;a.current=b;for(V=d;null!==V;){y=!1;B=void 0;try{for(r=a,O=c;null!==V;){var qa=V.effectTag;if(qa&36){var Rb=V.alternate;n=V;u=O;switch(n.tag){case 0:case 11:case 15:Eh(Xf,\nYf,n);break;case 1:var id=n.stateNode;if(n.effectTag&4)if(null===Rb)id.componentDidMount();else{var dj=n.elementType===n.type?Rb.memoizedProps:P(n.type,Rb.memoizedProps);id.componentDidUpdate(dj,Rb.memoizedState,id.__reactInternalSnapshotBeforeUpdate)}var th=n.updateQueue;null!==th&&ph(n,th,id,u);break;case 3:var uh=n.updateQueue;if(null!==uh){z=null;if(null!==n.child)switch(n.child.tag){case 5:z=n.child.stateNode;break;case 1:z=n.child.stateNode}ph(n,uh,z,u)}break;case 5:var ej=n.stateNode;null===\nRb&&n.effectTag&4&&Ae(n.type,n.memoizedProps)&&ej.focus();break;case 6:break;case 4:break;case 12:break;case 13:break;case 17:break;default:t(\"163\")}}if(qa&128){var jd=V.ref;if(null!==jd){var vh=V.stateNode;switch(V.tag){case 5:var Ne=vh;break;default:Ne=vh}\"function\"===typeof jd?jd(Ne):jd.current=Ne}}qa&512&&(ai=r);V=V.nextEffect}}catch(ub){y=!0,B=ub}y&&(null===V?t(\"178\"):void 0,Dh(V,B),null!==V&&(V=V.nextEffect))}null!==d&&null!==ai&&(qa=ei.bind(null,a,d),bi=Ee(qa),ci=qa);Wh=$h=!1;\"function\"===\ntypeof Ve&&Ve(b.stateNode);qa=b.expirationTime;b=b.childExpirationTime;b=b>qa?b:qa;0===b&&(Qh=null);a.expirationTime=b;a.finishedWork=null}function Oh(a){null===vi?t(\"246\"):void 0;vi.expirationTime=0;wi||(wi=!0,xi=a)}function Pi(a,b){var c=Z;Z=!0;try{return a(b)}finally{(Z=c)||W||Li(1073741823,!1)}}function Qi(a,b){if(Z&&!yi){yi=!0;try{return a(b)}finally{yi=!1}}return a(b)}\nfunction Ri(a,b,c){if(mi)return a(b,c);Z||W||0===ni||(Li(ni,!1),ni=0);var d=mi,e=Z;Z=mi=!0;try{return a(b,c)}finally{mi=d,(Z=e)||W||Li(1073741823,!1)}}\nfunction Si(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===kd(c)&&1===c.tag?void 0:t(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(M(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);t(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(M(h)){c=Se(c,h,g);break a}}c=g}else c=Le;null===b.context?b.context=c:b.pendingContext=c;b=e;e=rf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nsf();tf(f,e);uf(f,d);return d}function Ti(a,b,c,d){var e=b.current,f=pf();e=qf(f,e);return Si(a,b,c,e,d)}function Ui(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Vi(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$b,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nDb=function(a,b,c){switch(b){case \"input\":Cc(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Ma(d);e?void 0:t(\"90\");Wb(d);Cc(d,e)}}}break;case \"textarea\":he(a,c);break;case \"select\":b=c.value,null!=b&&ee(a,!!c.multiple,b,!1)}};\nfunction Wi(a){var b=1073741822-25*(((1073741822-pf()+500)/25|0)+1);b>=Uh&&(b=Uh-1);this._expirationTime=Uh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Wi.prototype.render=function(a){this._defer?void 0:t(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Xi;Si(a,b,null,c,d._onCommit);return d};\nWi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nWi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:t(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?t(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Ii(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Wi.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};function Xi(){this._callbacks=null;this._didCommit=!1;this._onCommit=this._onCommit.bind(this)}Xi.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nXi.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];\"function\"!==typeof c?t(\"191\",c):void 0;c()}}};\nfunction Yi(a,b,c){b=N(3,null,null,b?3:0);a={current:b,containerInfo:a,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:c,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null};this._internalRoot=b.stateNode=a}\nYi.prototype.render=function(a,b){var c=this._internalRoot,d=new Xi;b=void 0===b?null:b;null!==b&&d.then(b);Ti(a,c,null,d._onCommit);return d};Yi.prototype.unmount=function(a){var b=this._internalRoot,c=new Xi;a=void 0===a?null:a;null!==a&&c.then(a);Ti(null,b,null,c._onCommit);return c};Yi.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new Xi;c=void 0===c?null:c;null!==c&&e.then(c);Ti(b,d,a,e._onCommit);return e};\nYi.prototype.createBatch=function(){var a=new Wi(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Zi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Jb=Pi;Kb=Ri;Lb=function(){W||0===ni||(Li(ni,!1),ni=0)};\nfunction $i(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Yi(a,!1,b)}\nfunction aj(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Ui(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=$i(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Ui(f._internalRoot);h.call(a)}}Qi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Ui(f._internalRoot)}\nfunction bj(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;Zi(b)?void 0:t(\"200\");return Vi(a,b,null,c)}\nvar fj={createPortal:bj,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&(\"function\"===typeof a.render?t(\"188\"):t(\"268\",Object.keys(a)));a=nd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Zi(b)?void 0:t(\"200\");return aj(null,a,b,!0,c)},render:function(a,b,c){Zi(b)?void 0:t(\"200\");return aj(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Zi(c)?void 0:t(\"200\");null==a||void 0===a._reactInternalFiber?\nt(\"38\"):void 0;return aj(a,b,c,!1,d)},unmountComponentAtNode:function(a){Zi(a)?void 0:t(\"40\");return a._reactRootContainer?(Qi(function(){aj(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return bj.apply(void 0,arguments)},unstable_batchedUpdates:Pi,unstable_interactiveUpdates:Ri,flushSync:function(a,b){W?t(\"187\"):void 0;var c=Z;Z=!0;try{return ri(a,b)}finally{Z=c,Li(1073741823,!1)}},unstable_createRoot:cj,unstable_flushControlled:function(a){var b=\nZ;Z=!0;try{ri(a)}finally{(Z=b)||W||Li(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ka,La,Ma,Da.injectEventPluginsByName,ra,Sa,function(a){Aa(a,Ra)},Hb,Ib,Jd,Fa]}};function cj(a,b){Zi(a)?void 0:t(\"299\",\"unstable_createRoot\");return new Yi(a,!0,null!=b&&!0===b.hydrate)}\n(function(a){var b=a.findFiberByHostInstance;return Ye(p({},a,{overrideProps:null,currentDispatcherRef:Xb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=nd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ja,bundleType:0,version:\"16.8.0\",rendererPackageName:\"react-dom\"});var gj={default:fj},hj=gj&&fj||gj;module.exports=hj.default||hj;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.13.6\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if(\"function\"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('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 error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// copied from https://github.com/d3fc/d3fc-rebind/blob/master/src/rebind.js\n\nfunction createReboundMethod(target, source, name) {\n\tconst method = source[name];\n\tif (typeof method !== \"function\") {\n\t\tthrow new Error(`Attempt to rebind ${name} which isn't a function on the source object`);\n\t}\n\treturn (...args) => {\n\t\tconst value = method.apply(source, args);\n\t\treturn value === source ? target : value;\n\t};\n}\n\nexport default function rebind(target, source, ...names) {\n\tfor (const name of names) {\n\t\ttarget[name] = createReboundMethod(target, source, name);\n\t}\n\treturn target;\n}\n","/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/merge.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport identity from \"./identity\";\nimport zipper from \"./zipper\";\nimport noop from \"./noop\";\n\nimport { isNotDefined } from \"./index\";\n\n// applies an algorithm to an array, merging the result back into\n// the source array using the given merge function.\nexport default function() {\n\n\tlet algorithm = identity,\n\t\tskipUndefined = true,\n\t\tmerge = noop;\n\n\tfunction mergeCompute(data) {\n\t\tconst zip = zipper()\n\t\t\t.combine((datum, indicator) => {\n\t\t\t\tconst result = (skipUndefined && isNotDefined(indicator))\n\t\t\t\t\t? datum\n\t\t\t\t\t: merge(datum, indicator);\n\t\t\t\treturn isNotDefined(result) ? datum : result;\n\t\t\t});\n\n\t\t// console.log(data);\n\t\treturn zip(data, algorithm(data));\n\t}\n\n\tmergeCompute.algorithm = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn algorithm;\n\t\t}\n\t\talgorithm = x;\n\t\treturn mergeCompute;\n\t};\n\n\tmergeCompute.merge = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn merge;\n\t\t}\n\t\tmerge = x;\n\t\treturn mergeCompute;\n\t};\n\tmergeCompute.skipUndefined = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn skipUndefined;\n\t\t}\n\t\tskipUndefined = x;\n\t\treturn mergeCompute;\n\t};\n\n\treturn mergeCompute;\n}","\n\n/*\n\nTaken from https://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/slidingWindow.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nimport noop from \"./noop\";\nimport { path, functor } from \"./index\";\n\nexport default function() {\n\n\tlet undefinedValue = undefined,\n\t\twindowSize = 10,\n\t\taccumulator = noop,\n\t\tsourcePath,\n\t\tsource,\n\t\tskipInitial = 0,\n\t\tmisc;\n\n\t// eslint-disable-next-line prefer-const\n\tlet slidingWindow = function(data) {\n\t\tconst sourceFunction = source || path(sourcePath);\n\n\t\tconst size = functor(windowSize).apply(this, arguments);\n\t\tconst windowData = data.slice(skipInitial, size + skipInitial).map(sourceFunction);\n\t\tlet accumulatorIdx = 0;\n\t\tconst undef = functor(undefinedValue);\n\t\t// console.log(skipInitial, size, data.length, windowData.length);\n\t\treturn data.map(function(d, i) {\n\t\t\t// console.log(d, i);\n\t\t\tif (i < (skipInitial + size - 1)) {\n\t\t\t\treturn undef(sourceFunction(d), i, misc);\n\t\t\t}\n\t\t\tif (i >= (skipInitial + size)) {\n\t\t\t\t// Treat windowData as FIFO rolling buffer\n\t\t\t\twindowData.shift();\n\t\t\t\twindowData.push(sourceFunction(d, i));\n\t\t\t}\n\t\t\treturn accumulator(windowData, i, accumulatorIdx++, misc);\n\t\t});\n\t};\n\n\tslidingWindow.undefinedValue = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn undefinedValue;\n\t\t}\n\t\tundefinedValue = x;\n\t\treturn slidingWindow;\n\t};\n\tslidingWindow.windowSize = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn windowSize;\n\t\t}\n\t\twindowSize = x;\n\t\treturn slidingWindow;\n\t};\n\tslidingWindow.misc = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn misc;\n\t\t}\n\t\tmisc = x;\n\t\treturn slidingWindow;\n\t};\n\tslidingWindow.accumulator = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn accumulator;\n\t\t}\n\t\taccumulator = x;\n\t\treturn slidingWindow;\n\t};\n\tslidingWindow.skipInitial = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn skipInitial;\n\t\t}\n\t\tskipInitial = x;\n\t\treturn slidingWindow;\n\t};\n\tslidingWindow.sourcePath = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn sourcePath;\n\t\t}\n\t\tsourcePath = x;\n\t\treturn slidingWindow;\n\t};\n\tslidingWindow.source = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn source;\n\t\t}\n\t\tsource = x;\n\t\treturn slidingWindow;\n\t};\n\n\treturn slidingWindow;\n}\n","\n\nimport noop from \"./noop\";\nimport identity from \"./identity\";\nimport { functor } from \"./index\";\n\nexport default function() {\n\n\tlet undefinedValue = undefined,\n\t\twindowSize = 10,\n\t\taccumulator = noop,\n\t\tsource = identity,\n\t\tskipInitial = 0;\n\n\t// eslint-disable-next-line prefer-const\n\tlet mappedSlidingWindow = function(data) {\n\t\tconst size = functor(windowSize).apply(this, arguments);\n\t\tconst windowData = [];\n\t\tlet accumulatorIdx = 0;\n\t\tconst undef = functor(undefinedValue);\n\t\t// console.log(skipInitial, size, data.length, windowData.length);\n\t\tconst result = [];\n\t\tdata.forEach(function(d, i) {\n\t\t\t// console.log(d, i, windowData.length);\n\t\t\tlet mapped;\n\t\t\tif (i < (skipInitial + size - 1)) {\n\t\t\t\tmapped = undef(d, i);\n\t\t\t\tresult.push(mapped);\n\t\t\t\twindowData.push(mapped);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (i >= (skipInitial + size)) {\n\t\t\t\t// Treat windowData as FIFO rolling buffer\n\t\t\t\twindowData.shift();\n\t\t\t}\n\t\t\twindowData.push(source(d, i));\n\t\t\tmapped = accumulator(windowData, i, accumulatorIdx++);\n\t\t\tresult.push(mapped);\n\t\t\twindowData.pop();\n\t\t\twindowData.push(mapped);\n\t\t\treturn;\n\t\t});\n\t\treturn result;\n\t};\n\n\tmappedSlidingWindow.undefinedValue = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn undefinedValue;\n\t\t}\n\t\tundefinedValue = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.windowSize = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn windowSize;\n\t\t}\n\t\twindowSize = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.accumulator = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn accumulator;\n\t\t}\n\t\taccumulator = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.skipInitial = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn skipInitial;\n\t\t}\n\t\tskipInitial = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\tmappedSlidingWindow.source = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn source;\n\t\t}\n\t\tsource = x;\n\t\treturn mappedSlidingWindow;\n\t};\n\n\treturn mappedSlidingWindow;\n}","\n\n/*\n\nTaken from https://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/slidingWindow.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nimport noop from \"./noop\";\nimport identity from \"./identity\";\nimport { functor } from \"./index\";\n\nexport default function() {\n\n\tlet accumulateTill = functor(false),\n\t\taccumulator = noop,\n\t\tvalue = identity,\n\t\tdiscardTillStart = false,\n\t\tdiscardTillEnd = false;\n\n\t// eslint-disable-next-line prefer-const\n\tlet accumulatingWindow = function(data) {\n\t\tlet accumulatedWindow = discardTillStart ? undefined : [];\n\t\tconst response = [];\n\t\tlet accumulatorIdx = 0;\n\t\tlet i = 0;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tconst d = data[i];\n\t\t\t// console.log(d, accumulateTill(d));\n\t\t\tif (accumulateTill(d, i, (accumulatedWindow || []))) {\n\t\t\t\tif (accumulatedWindow && accumulatedWindow.length > 0) response.push(accumulator(accumulatedWindow, i, accumulatorIdx++));\n\t\t\t\taccumulatedWindow = [value(d)];\n\t\t\t} else {\n\t\t\t\tif (accumulatedWindow) accumulatedWindow.push(value(d));\n\t\t\t}\n\t\t}\n\t\tif (!discardTillEnd) response.push(accumulator(accumulatedWindow, i, accumulatorIdx));\n\t\treturn response;\n\t};\n\n\taccumulatingWindow.accumulateTill = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn accumulateTill;\n\t\t}\n\t\taccumulateTill = functor(x);\n\t\treturn accumulatingWindow;\n\t};\n\taccumulatingWindow.accumulator = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn accumulator;\n\t\t}\n\t\taccumulator = x;\n\t\treturn accumulatingWindow;\n\t};\n\taccumulatingWindow.value = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn value;\n\t\t}\n\t\tvalue = x;\n\t\treturn accumulatingWindow;\n\t};\n\taccumulatingWindow.discardTillStart = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn discardTillStart;\n\t\t}\n\t\tdiscardTillStart = x;\n\t\treturn accumulatingWindow;\n\t};\n\taccumulatingWindow.discardTillEnd = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn discardTillEnd;\n\t\t}\n\t\tdiscardTillEnd = x;\n\t\treturn accumulatingWindow;\n\t};\n\treturn accumulatingWindow;\n}","\n\nimport React from \"react\";\nimport shallowEqual from \"./shallowEqual\";\n\nclass PureComponent extends React.Component {\n\tshouldComponentUpdate(nextProps, nextState, nextContext) {\n\t\treturn !shallowEqual(this.props, nextProps)\n\t\t\t|| !shallowEqual(this.state, nextState)\n\t\t\t|| !shallowEqual(this.context, nextContext);\n\t}\n}\n\nexport default PureComponent;\n","\n\nimport { head } from \"../utils\";\n\n/**\n * Bar width is based on the amount of items in the plot data and the distance between the first and last of those\n * items.\n * @param props the props passed to the series.\n * @param moreProps an object holding the xScale, xAccessor and plotData.\n * @return {number} the bar width.\n */\nexport function plotDataLengthBarWidth(props, moreProps) {\n\tconst { widthRatio } = props;\n\tconst { xScale } = moreProps;\n\n\tconst [l, r] = xScale.range();\n\n\tconst totalWidth = Math.abs(r - l);\n\tif (xScale.invert != null) {\n\t\tconst [dl, dr] = xScale.domain();\n\t\tconst width = totalWidth / Math.abs(dl - dr);\n\t\treturn width * widthRatio;\n\t} else {\n\t\tconst width = totalWidth / xScale.domain().length;\n\t\treturn width * widthRatio;\n\t}\n}\n\n/**\n * Generates a width function that calculates the bar width based on the given time interval.\n * @param interval a d3-time time interval.\n * @return {Function} the width function.\n */\nexport function timeIntervalBarWidth(interval) {\n\treturn function(props, moreProps) {\n\t\tconst { widthRatio } = props;\n\t\tconst { xScale, xAccessor, plotData } = moreProps;\n\n\t\tconst first = xAccessor(head(plotData));\n\t\treturn Math.abs(xScale(interval.offset(first, 1)) - xScale(first)) * widthRatio;\n\t};\n}\n","export const strokeDashTypes = [\n\t\"Solid\",\n\t\"ShortDash\",\n\t\"ShortDash2\",\n\t\"ShortDot\",\n\t\"ShortDashDot\",\n\t\"ShortDashDotDot\",\n\t\"Dot\",\n\t\"Dash\",\n\t\"LongDash\",\n\t\"DashDot\",\n\t\"LongDashDot\",\n\t\"LongDashDotDot\",\n];\n\nexport function getStrokeDasharrayCanvas(type) {\n\tconst a = getStrokeDasharray(type).split(\",\");\n\n\tif (a.length === 1) return [];\n\n\treturn a.map(d => Number(d));\n\n}\nexport const getStrokeDasharray = (type) => {\n\tswitch (type) {\n\t\tdefault:\n\t\tcase \"Solid\":\n\t\t\treturn \"none\";\n\t\tcase \"ShortDash\":\n\t\t\treturn \"6, 2\";\n\t\tcase \"ShortDash2\":\n\t\t\treturn \"6, 3\";\n\t\tcase \"ShortDot\":\n\t\t\treturn \"2, 2\";\n\t\tcase \"ShortDashDot\":\n\t\t\treturn \"6, 2, 2, 2\";\n\t\tcase \"ShortDashDotDot\":\n\t\t\treturn \"6, 2, 2, 2, 2, 2\";\n\t\tcase \"Dot\":\n\t\t\treturn \"2, 6\";\n\t\tcase \"Dash\":\n\t\t\treturn \"8, 6\";\n\t\tcase \"LongDash\":\n\t\t\treturn \"16, 6\";\n\t\tcase \"DashDot\":\n\t\t\treturn \"8, 6, 2, 6\";\n\t\tcase \"LongDashDot\":\n\t\t\treturn \"16, 6, 2, 6\";\n\t\tcase \"LongDashDotDot\":\n\t\t\treturn \"16, 6, 2, 6, 2, 6\";\n\t}\n};\n","\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport AreaSeries from \"./AreaSeries\";\nimport SVGComponent from \"./SVGComponent\";\nimport { strokeDashTypes } from \"../utils\";\n\nclass AlternatingFillAreaSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderClip = this.renderClip.bind(this);\n\t\tthis.topClip = this.topClip.bind(this);\n\t\tthis.bottomClip = this.bottomClip.bind(this);\n\t\tthis.baseAt = this.baseAt.bind(this);\n\n\t\tconst id1 = String(Math.round(Math.random() * 10000 * 10000));\n\t\tthis.clipPathId1 = `alternating-area-clip-${id1}`;\n\n\t\tconst id2 = String(Math.round(Math.random() * 10000 * 10000));\n\t\tthis.clipPathId2 = `alternating-area-clip-${id2}`;\n\t}\n\ttopClip(ctx, moreProps) {\n\t\tconst { chartConfig } = moreProps;\n\t\tconst { baseAt } = this.props;\n\t\tconst { yScale, width } = chartConfig;\n\n\t\tctx.beginPath();\n\t\tctx.rect(\n\t\t\t0,\n\t\t\t0,\n\t\t\twidth,\n\t\t\tyScale(baseAt)\n\t\t);\n\t\tctx.clip();\n\t}\n\tbottomClip(ctx, moreProps) {\n\t\tconst { chartConfig } = moreProps;\n\t\tconst { baseAt } = this.props;\n\t\tconst { yScale, width, height } = chartConfig;\n\n\t\tctx.beginPath();\n\t\tctx.rect(\n\t\t\t0,\n\t\t\tyScale(baseAt),\n\t\t\twidth,\n\t\t\theight - yScale(baseAt)\n\t\t);\n\t\tctx.clip();\n\t}\n\trenderClip(moreProps) {\n\t\tconst { chartConfig } = moreProps;\n\t\tconst { baseAt } = this.props;\n\t\tconst { yScale, width, height } = chartConfig;\n\n\t\treturn (\n\t\t\t<defs>\n\t\t\t\t<clipPath id={this.clipPathId1}>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx={0}\n\t\t\t\t\t\ty={0}\n\t\t\t\t\t\twidth={width}\n\t\t\t\t\t\theight={yScale(baseAt)}\n\t\t\t\t\t/>\n\t\t\t\t</clipPath>\n\t\t\t\t<clipPath id={this.clipPathId2}>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx={0}\n\t\t\t\t\t\ty={yScale(baseAt)}\n\t\t\t\t\t\twidth={width}\n\t\t\t\t\t\theight={height - yScale(baseAt)}\n\t\t\t\t\t/>\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t);\n\t}\n\tbaseAt(yScale) {\n\t\treturn yScale(this.props.baseAt);\n\t}\n\trender() {\n\t\tconst { className, yAccessor, interpolation } = this.props;\n\t\tconst {\n\t\t\tstroke,\n\t\t\tstrokeWidth,\n\t\t\tstrokeOpacity,\n\t\t\tstrokeDasharray,\n\n\t\t\tfill,\n\t\t\tfillOpacity,\n\t\t} = this.props;\n\n\t\tconst style1 = { \"clipPath\": `url(#${this.clipPathId1})` };\n\t\tconst style2 = { \"clipPath\": `url(#${this.clipPathId2})` };\n\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t<SVGComponent>\n\t\t\t\t\t{this.renderClip}\n\t\t\t\t</SVGComponent>\n\t\t\t\t<AreaSeries\n\t\t\t\t\tstyle={style1}\n\t\t\t\t\tcanvasClip={this.topClip}\n\n\t\t\t\t\tyAccessor={yAccessor}\n\t\t\t\t\tinterpolation={interpolation}\n\t\t\t\t\tbaseAt={this.baseAt}\n\n\t\t\t\t\tfill={fill.top}\n\t\t\t\t\topacity={fillOpacity.top}\n\t\t\t\t\tstroke={stroke.top}\n\t\t\t\t\tstrokeOpacity={strokeOpacity.top}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.top}\n\t\t\t\t\tstrokeWidth={strokeWidth.top}\n\t\t\t\t/>\n\t\t\t\t<AreaSeries\n\t\t\t\t\tstyle={style2}\n\t\t\t\t\tcanvasClip={this.bottomClip}\n\n\t\t\t\t\tyAccessor={yAccessor}\n\t\t\t\t\tinterpolation={interpolation}\n\t\t\t\t\tbaseAt={this.baseAt}\n\n\t\t\t\t\tfill={fill.bottom}\n\t\t\t\t\topacity={fillOpacity.bottom}\n\t\t\t\t\tstroke={stroke.bottom}\n\t\t\t\t\tstrokeOpacity={strokeOpacity.bottom}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.bottom}\n\t\t\t\t\tstrokeWidth={strokeWidth.bottom}\n\t\t\t\t/>\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nAlternatingFillAreaSeries.propTypes = {\n\tstroke: PropTypes.shape({\n\t\ttop: PropTypes.string,\n\t\tbottom: PropTypes.string,\n\t}),\n\n\tstrokeWidth: PropTypes.shape({\n\t\ttop: PropTypes.number,\n\t\tbottom: PropTypes.number,\n\t}),\n\tstrokeOpacity: PropTypes.shape({\n\t\ttop: PropTypes.number,\n\t\tbottom: PropTypes.number,\n\t}),\n\tfill: PropTypes.shape({\n\t\ttop: PropTypes.string,\n\t\tbottom: PropTypes.string,\n\t}),\n\tfillOpacity: PropTypes.shape({\n\t\ttop: PropTypes.number,\n\t\tbottom: PropTypes.number,\n\t}),\n\tstrokeDasharray: PropTypes.shape({\n\t\ttop: PropTypes.oneOf(strokeDashTypes),\n\t\tbottom: PropTypes.oneOf(strokeDashTypes),\n\t}).isRequired,\n\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\n\tbaseAt: PropTypes.number.isRequired,\n\n\tinterpolation: PropTypes.func,\n};\n\nAlternatingFillAreaSeries.defaultProps = {\n\tstroke: {\n\t\ttop: \"#38C172\",\n\t\tbottom: \"#E3342F\"\n\t},\n\tstrokeWidth: {\n\t\ttop: 2,\n\t\tbottom: 2,\n\t},\n\tstrokeOpacity: {\n\t\ttop: 1,\n\t\tbottom: 1,\n\t},\n\tfill: {\n\t\ttop: \"#A2F5BF\",\n\t\tbottom: \"#EF5753\",\n\t},\n\tfillOpacity: {\n\t\ttop: 0.5,\n\t\tbottom: 0.5,\n\t},\n\tstrokeDasharray: {\n\t\ttop: \"Solid\",\n\t\tbottom: \"Solid\",\n\t},\n\tclassName: \"react-stockcharts-alternating-area\",\n};\n\nexport default AlternatingFillAreaSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { nest as d3Nest } from \"d3-collection\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { hexToRGBA, functor } from \"../utils\";\n\nclass ScatterSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst points = helper(this.props, moreProps, xAccessor);\n\n\t\tdrawOnCanvas(ctx, this.props, points);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, markerProps } = this.props;\n\t\tconst { xAccessor } = moreProps;\n\n\t\tconst points = helper(this.props, moreProps, xAccessor);\n\n\t\treturn <g className={className}>\n\t\t\t{points.map((point, idx) => {\n\t\t\t\tconst { marker: Marker } = point;\n\t\t\t\treturn <Marker key={idx} {...markerProps} point={point} />;\n\t\t\t})}\n\t\t</g>;\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nScatterSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\tmarker: PropTypes.func,\n\tmarkerProvider: PropTypes.func,\n\tmarkerProps: PropTypes.object,\n};\n\nScatterSeries.defaultProps = {\n\tclassName: \"react-stockcharts-scatter\",\n};\n\nfunction helper(props, moreProps, xAccessor) {\n\tconst { yAccessor, markerProvider, markerProps } = props;\n\tlet { marker: Marker } = props;\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tif (!(markerProvider || Marker)) throw new Error(\"required prop, either marker or markerProvider missing\");\n\n\treturn plotData.map(d => {\n\n\t\tif (markerProvider) Marker = markerProvider(d);\n\n\t\tconst mProps = { ...Marker.defaultProps, ...markerProps };\n\n\t\tconst fill = functor(mProps.fill);\n\t\tconst stroke = functor(mProps.stroke);\n\n\t\treturn {\n\t\t\tx: xScale(xAccessor(d)),\n\t\t\ty: yScale(yAccessor(d)),\n\t\t\tfill: hexToRGBA(fill(d), mProps.opacity),\n\t\t\tstroke: stroke(d),\n\t\t\tdatum: d,\n\t\t\tmarker: Marker,\n\t\t};\n\t});\n}\n\nfunction drawOnCanvas(ctx, props, points) {\n\n\tconst { markerProps } = props;\n\n\tconst nest = d3Nest()\n\t\t.key(d => d.fill)\n\t\t.key(d => d.stroke)\n\t\t.entries(points);\n\n\tnest.forEach(fillGroup => {\n\t\tconst { key: fillKey, values: fillValues } = fillGroup;\n\n\t\tif (fillKey !== \"none\") {\n\t\t\tctx.fillStyle = fillKey;\n\t\t}\n\n\t\tfillValues.forEach(strokeGroup => {\n\t\t\t// var { key: strokeKey, values: strokeValues } = strokeGroup;\n\t\t\tconst { values: strokeValues } = strokeGroup;\n\n\t\t\tstrokeValues.forEach(point => {\n\t\t\t\tconst { marker } = point;\n\t\t\t\tmarker.drawOnCanvas({ ...marker.defaultProps, ...markerProps, fill: fillKey }, point, ctx);\n\t\t\t});\n\t\t});\n\t});\n}\n\nexport default ScatterSeries;\n","\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { hexToRGBA, functor } from \"../utils\";\n\nfunction Circle(props) {\n\tconst { className, stroke, strokeWidth, opacity, fill, point, r } = props;\n\tconst radius = functor(r)(point.datum);\n\treturn (\n\t\t<circle className={className}\n\t\t\tcx={point.x} cy={point.y}\n\t\t\tstroke={stroke} strokeWidth={strokeWidth}\n\t\t\tfillOpacity={opacity} fill={fill} r={radius} />\n\t);\n}\n\nCircle.propTypes = {\n\tstroke: PropTypes.string,\n\tfill: PropTypes.string.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tpoint: PropTypes.shape({\n\t\tx: PropTypes.number.isRequired,\n\t\ty: PropTypes.number.isRequired,\n\t\tdatum: PropTypes.object.isRequired,\n\t}).isRequired,\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\tr: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired\n};\n\nCircle.defaultProps = {\n\tstroke: \"#4682B4\",\n\tstrokeWidth: 1,\n\topacity: 0.5,\n\tfill: \"#4682B4\",\n\tclassName: \"react-stockcharts-marker-circle\",\n};\n\nCircle.drawOnCanvas = (props, point, ctx) => {\n\n\tconst { stroke, fill, opacity, strokeWidth } = props;\n\n\tctx.strokeStyle = stroke;\n\tctx.lineWidth = strokeWidth;\n\n\tif (fill !== \"none\") {\n\t\tctx.fillStyle = hexToRGBA(fill, opacity);\n\t}\n\n\tCircle.drawOnCanvasWithNoStateChange(props, point, ctx);\n};\n\n\nCircle.drawOnCanvasWithNoStateChange = (props, point, ctx) => {\n\n\tconst { r } = props;\n\tconst radius = functor(r)(point.datum);\n\n\tctx.moveTo(point.x, point.y);\n\tctx.beginPath();\n\tctx.arc(point.x, point.y, radius, 0, 2 * Math.PI, false);\n\tctx.stroke();\n\tctx.fill();\n};\n\nexport default Circle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { hexToRGBA, functor } from \"../utils\";\n\nfunction Triangle(props) {\n\n\tconst {\n\t\tclassName, strokeWidth,\n\t\topacity, point, width\n\t} = props;\n\n\tconst rotation = getRotationInDegrees(props, point);\n\tif (rotation == null) return null;\n\n\tconst fillColor = getFillColor(props);\n\tconst strokeColor = getStrokeColor(props);\n\n\tconst w = functor(width)(point.datum);\n\tconst { x, y } = point;\n\tconst { innerOpposite, innerHypotenuse } = getTrianglePoints(w);\n\tconst points = `\n\t\t${x} ${y - innerHypotenuse},\n\t\t${x + (w / 2)} ${y + innerOpposite},\n\t\t${x - (w / 2)} ${y + innerOpposite}\n\t`;\n\n\treturn (\n\t\t<polygon\n\t\t\tclassName={className}\n\t\t\tpoints={points}\n\t\t\tstroke={strokeColor}\n\t\t\tstrokeWidth={strokeWidth}\n\t\t\tfillOpacity={opacity}\n\t\t\tfill={fillColor}\n\t\t\ttransform={rotation !== 0 ? `rotate(${ rotation }, ${ x }, ${ y })` : null}\n\t\t/>\n\t);\n}\nTriangle.propTypes = {\n\tdirection: PropTypes.oneOfType( [\n\t\tPropTypes.oneOf( [\n\t\t\t\"top\",\n\t\t\t\"bottom\",\n\t\t\t\"left\",\n\t\t\t\"right\",\n\t\t\t\"hide\"] ),\n\t\tPropTypes.func\n\t] ).isRequired,\n\tstroke: PropTypes.oneOfType( [\n\t\tPropTypes.string,\n\t\tPropTypes.func\n\t] ).isRequired,\n\tfill: PropTypes.oneOfType( [\n\t\tPropTypes.string,\n\t\tPropTypes.func\n\t] ).isRequired,\n\topacity: PropTypes.number.isRequired,\n\tpoint: PropTypes.shape({\n\t\tx: PropTypes.number.isRequired,\n\t\ty: PropTypes.number.isRequired,\n\t\tdatum: PropTypes.object.isRequired,\n\t}).isRequired,\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired\n};\nTriangle.defaultProps = {\n\tdirection: \"top\",\n\tstroke: \"#4682B4\",\n\tstrokeWidth: 1,\n\topacity: 0.5,\n\tfill: \"#4682B4\",\n\tclassName: \"react-stockcharts-marker-triangle\",\n};\nTriangle.drawOnCanvas = (props, point, ctx) => {\n\tconst { stroke, fill, opacity, strokeWidth } = props;\n\tctx.strokeStyle = stroke;\n\tctx.lineWidth = strokeWidth;\n\tif (fill !== \"none\") {\n\t\tctx.fillStyle = hexToRGBA(fill, opacity);\n\t}\n\tTriangle.drawOnCanvasWithNoStateChange(props, point, ctx);\n};\nTriangle.drawOnCanvasWithNoStateChange = (props, point, ctx) => {\n\n\tconst { width } = props;\n\tconst w = functor(width)(point.datum);\n\tconst { x, y } = point;\n\tconst { innerOpposite, innerHypotenuse } = getTrianglePoints(w);\n\tconst rotationDeg = getRotationInDegrees(props, point);\n\n\tctx.beginPath();\n\tctx.moveTo(x, y - innerHypotenuse);\n\tctx.lineTo(x + (w / 2), y + innerOpposite);\n\tctx.lineTo(x - (w / 2), y + innerOpposite);\n\tctx.stroke();\n\n\t// TODO: rotation does not work\n\t// example: https://gist.github.com/geoffb/6392450\n\tif ( rotationDeg !== null && rotationDeg !== 0 ) {\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotationDeg * Math.PI / 180); // 45 degrees\n\t\tctx.fill();\n\t\tctx.restore();\n\t}\n\tctx.fill();\n};\nexport default Triangle;\n\nfunction getTrianglePoints(width) {\n\tconst innerHypotenuse = (width / 2) * (1 / Math.cos(30 * Math.PI / 180));\n\tconst innerOpposite = (width / 2) * (1 / Math.tan(60 * Math.PI / 180));\n\treturn {\n\t\tinnerOpposite,\n\t\tinnerHypotenuse\n\t};\n}\n\nfunction getFillColor( props ) {\n\tconst { fill, point } = props;\n\treturn fill instanceof Function ? fill( point.datum ) : fill;\n}\n\nfunction getStrokeColor( props ) {\n\tconst { stroke, point } = props;\n\treturn stroke instanceof Function ? stroke( point.datum ) : stroke;\n}\n\nfunction getRotationInDegrees( props, point ) {\n\tconst { direction } = props;\n\tconst directionVal = direction instanceof Function ? direction( point.datum ) : direction;\n\tif ( directionVal === \"hide\" ) return null;\n\n\tlet rotate = 0;\n\tswitch ( directionVal ) {\n\t\tcase \"bottom\":\n\t\t\trotate = 180;\n\t\t\tbreak;\n\t\tcase \"left\":\n\t\t\trotate = -90;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\trotate = 90;\n\t\t\tbreak;\n\t}\n\treturn rotate;\n}\n","\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { hexToRGBA, functor } from \"../utils\";\n\nfunction Square(props) {\n\tconst {\n\t\tclassName, stroke, strokeWidth,\n\t\topacity, fill, point, width\n\t} = props;\n\tconst w = functor(width)(point.datum);\n\tconst x = point.x - (w / 2);\n\tconst y = point.y - (w / 2);\n\treturn (\n\t\t<rect\n\t\t\tclassName={className}\n\t\t\tx={x}\n\t\t\ty={y}\n\t\t\tstroke={stroke}\n\t\t\tstrokeWidth={strokeWidth}\n\t\t\tfillOpacity={opacity}\n\t\t\tfill={fill}\n\t\t\twidth={w}\n\t\t\theight={w}\n\t\t/>\n\t);\n}\nSquare.propTypes = {\n\tstroke: PropTypes.string,\n\tfill: PropTypes.string.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tpoint: PropTypes.shape({\n\t\tx: PropTypes.number.isRequired,\n\t\ty: PropTypes.number.isRequired,\n\t\tdatum: PropTypes.object.isRequired,\n\t}).isRequired,\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]).isRequired\n};\nSquare.defaultProps = {\n\tstroke: \"#4682B4\",\n\tstrokeWidth: 1,\n\topacity: 0.5,\n\tfill: \"#4682B4\",\n\tclassName: \"react-stockcharts-marker-rect\",\n};\nSquare.drawOnCanvas = (props, point, ctx) => {\n\tconst { stroke, fill, opacity, strokeWidth } = props;\n\tctx.strokeStyle = stroke;\n\tctx.lineWidth = strokeWidth;\n\tif (fill !== \"none\") {\n\t\tctx.fillStyle = hexToRGBA(fill, opacity);\n\t}\n\tSquare.drawOnCanvasWithNoStateChange(props, point, ctx);\n};\nSquare.drawOnCanvasWithNoStateChange = (props, point, ctx) => {\n\tconst { width } = props;\n\tconst w = functor(width)(point.datum);\n\tconst x = point.x - (w / 2);\n\tconst y = point.y - (w / 2);\n\tctx.beginPath();\n\tctx.rect(x, y, w, w);\n\tctx.stroke();\n\tctx.fill();\n};\nexport default Square;\n","\n\nimport { nest } from \"d3-collection\";\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport {\n\thexToRGBA, isDefined, functor, plotDataLengthBarWidth, head\n} from \"../utils\";\n\nclass CandlestickSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tdrawOnCanvas(ctx, this.props, moreProps);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, wickClassName, candleClassName } = this.props;\n\t\tconst { xScale, chartConfig: { yScale }, plotData, xAccessor } = moreProps;\n\n\t\tconst candleData = getCandleData(this.props, xAccessor, xScale, yScale, plotData);\n\n\t\treturn <g className={className}>\n\t\t\t<g className={wickClassName} key=\"wicks\">\n\t\t\t\t{getWicksSVG(candleData)}\n\t\t\t</g>\n\t\t\t<g className={candleClassName} key=\"candles\">\n\t\t\t\t{getCandlesSVG(this.props, candleData)}\n\t\t\t</g>\n\t\t</g>;\n\t}\n\n\trender() {\n\t\tconst { clip } = this.props;\n\t\treturn <GenericChartComponent\n\t\t\tclip={clip}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nCandlestickSeries.propTypes = {\n\tclassName: PropTypes.string,\n\twickClassName: PropTypes.string,\n\tcandleClassName: PropTypes.string,\n\twidthRatio: PropTypes.number,\n\twidth: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func\n\t]),\n\tclassNames: PropTypes.oneOfType([\n\t\tPropTypes.func,\n\t\tPropTypes.string\n\t]),\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func,\n\t\tPropTypes.string\n\t]),\n\tstroke: PropTypes.oneOfType([\n\t\tPropTypes.func,\n\t\tPropTypes.string\n\t]),\n\twickStroke: PropTypes.oneOfType([\n\t\tPropTypes.func,\n\t\tPropTypes.string\n\t]),\n\tyAccessor: PropTypes.func,\n\tclip: PropTypes.bool,\n};\n\nCandlestickSeries.defaultProps = {\n\tclassName: \"react-stockcharts-candlestick\",\n\twickClassName: \"react-stockcharts-candlestick-wick\",\n\tcandleClassName: \"react-stockcharts-candlestick-candle\",\n\tyAccessor: d => ({ open: d.open, high: d.high, low: d.low, close: d.close }),\n\tclassNames: d => d.close > d.open ? \"up\" : \"down\",\n\twidth: plotDataLengthBarWidth,\n\twickStroke: \"#000000\",\n\t// wickStroke: d => d.close > d.open ? \"#6BA583\" : \"#FF0000\",\n\tfill: d => d.close > d.open ? \"#6BA583\" : \"#FF0000\",\n\t// stroke: d => d.close > d.open ? \"#6BA583\" : \"#FF0000\",\n\tstroke: \"#000000\",\n\tcandleStrokeWidth: 0.5,\n\t// stroke: \"none\",\n\twidthRatio: 0.8,\n\topacity: 0.5,\n\tclip: true,\n};\n\nfunction getWicksSVG(candleData) {\n\n\tconst wicks = candleData\n\t\t.map((each, idx) => {\n\t\t\tconst d = each.wick;\n\t\t\treturn <path key={idx}\n\t\t\t\tclassName={each.className}\n\t\t\t\tstroke={d.stroke}\n\t\t\t\td={`M${d.x},${d.y1} L${d.x},${d.y2} M${d.x},${d.y3} L${d.x},${d.y4}`} />;\n\t\t});\n\n\treturn wicks;\n}\n\nfunction getCandlesSVG(props, candleData) {\n\n\t/* eslint-disable react/prop-types */\n\tconst { opacity, candleStrokeWidth } = props;\n\t/* eslint-enable react/prop-types */\n\n\tconst candles = candleData.map((d, idx) => {\n\t\tif (d.width <= 1)\n\t\t\treturn (\n\t\t\t\t<line className={d.className} key={idx}\n\t\t\t\t\tx1={d.x} y1={d.y} x2={d.x} y2={d.y + d.height}\n\t\t\t\t\tstroke={d.fill} />\n\t\t\t);\n\t\telse if (d.height === 0)\n\t\t\treturn (\n\t\t\t\t<line key={idx}\n\t\t\t\t\tx1={d.x} y1={d.y} x2={d.x + d.width} y2={d.y + d.height}\n\t\t\t\t\tstroke={d.fill} />\n\t\t\t);\n\t\treturn (\n\t\t\t<rect key={idx} className={d.className}\n\t\t\t\tfillOpacity={opacity}\n\t\t\t\tx={d.x} y={d.y} width={d.width} height={d.height}\n\t\t\t\tfill={d.fill} stroke={d.stroke} strokeWidth={candleStrokeWidth} />\n\t\t);\n\t});\n\treturn candles;\n}\n\nfunction drawOnCanvas(ctx, props, moreProps) {\n\tconst { opacity, candleStrokeWidth } = props;\n\tconst { xScale, chartConfig: { yScale }, plotData, xAccessor } = moreProps;\n\n\t// const wickData = getWickData(props, xAccessor, xScale, yScale, plotData);\n\tconst candleData = getCandleData(props, xAccessor, xScale, yScale, plotData);\n\n\tconst wickNest = nest()\n\t\t.key(d => d.wick.stroke)\n\t\t.entries(candleData);\n\n\twickNest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tctx.strokeStyle = key;\n\t\tctx.fillStyle = key;\n\t\tvalues.forEach(each => {\n\t\t\t/*\n\t\t\tctx.moveTo(d.x, d.y1);\n\t\t\tctx.lineTo(d.x, d.y2);\n\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(d.x, d.y3);\n\t\t\tctx.lineTo(d.x, d.y4);\n\t\t\tctx.stroke(); */\n\t\t\tconst d = each.wick;\n\n\t\t\tctx.fillRect(d.x - 0.5, d.y1, 1, d.y2 - d.y1);\n\t\t\tctx.fillRect(d.x - 0.5, d.y3, 1, d.y4 - d.y3);\n\t\t});\n\t});\n\n\t// const candleData = getCandleData(props, xAccessor, xScale, yScale, plotData);\n\n\tconst candleNest = nest()\n\t\t.key(d => d.stroke)\n\t\t.key(d => d.fill)\n\t\t.entries(candleData);\n\n\n\tcandleNest.forEach(outer => {\n\t\tconst { key: strokeKey, values: strokeValues } = outer;\n\t\tif (strokeKey !== \"none\") {\n\t\t\tctx.strokeStyle = strokeKey;\n\t\t\tctx.lineWidth = candleStrokeWidth;\n\t\t}\n\t\tstrokeValues.forEach(inner => {\n\t\t\tconst { key, values } = inner;\n\t\t\tconst fillStyle = head(values).width <= 1\n\t\t\t\t? key\n\t\t\t\t: hexToRGBA(key, opacity);\n\t\t\tctx.fillStyle = fillStyle;\n\n\t\t\tvalues.forEach(d => {\n\t\t\t\tif (d.width <= 1) {\n\t\t\t\t\t// <line className={d.className} key={idx} x1={d.x} y1={d.y} x2={d.x} y2={d.y + d.height}/>\n\t\t\t\t\t/*\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\t\tctx.lineTo(d.x, d.y + d.height);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t\t*/\n\t\t\t\t\tctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n\t\t\t\t} else if (d.height === 0) {\n\t\t\t\t\t// <line key={idx} x1={d.x} y1={d.y} x2={d.x + d.width} y2={d.y + d.height} />\n\t\t\t\t\t/*\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(d.x, d.y);\n\t\t\t\t\tctx.lineTo(d.x + d.width, d.y + d.height);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t\t*/\n\t\t\t\t\tctx.fillRect(d.x, d.y - 0.5, d.width, 1);\n\t\t\t\t} else {\n\t\t\t\t\t/*\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tif (strokeKey !== \"none\") ctx.stroke();\n\t\t\t\t\t*/\n\t\t\t\t\tctx.fillRect(d.x, d.y, d.width, d.height);\n\t\t\t\t\tif (strokeKey !== \"none\") ctx.strokeRect(d.x, d.y, d.width, d.height);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n}\n/*\nfunction getWickData(props, xAccessor, xScale, yScale, plotData) {\n\n\tconst { classNames: classNameProp, wickStroke: wickStrokeProp, yAccessor } = props;\n\tconst wickStroke = functor(wickStrokeProp);\n\tconst className = functor(classNameProp);\n\tconst wickData = plotData\n\t\t\t.filter(d => isDefined(yAccessor(d).close))\n\t\t\t.map(d => {\n\t\t\t\t// console.log(yAccessor);\n\t\t\t\tconst ohlc = yAccessor(d);\n\n\t\t\t\tconst x = Math.round(xScale(xAccessor(d))),\n\t\t\t\t\ty1 = yScale(ohlc.high),\n\t\t\t\t\ty2 = yScale(Math.max(ohlc.open, ohlc.close)),\n\t\t\t\t\ty3 = yScale(Math.min(ohlc.open, ohlc.close)),\n\t\t\t\t\ty4 = yScale(ohlc.low);\n\n\t\t\t\treturn {\n\t\t\t\t\tx,\n\t\t\t\t\ty1,\n\t\t\t\t\ty2,\n\t\t\t\t\ty3,\n\t\t\t\t\ty4,\n\t\t\t\t\tclassName: className(ohlc),\n\t\t\t\t\tdirection: (ohlc.close - ohlc.open),\n\t\t\t\t\tstroke: wickStroke(ohlc),\n\t\t\t\t};\n\t\t\t});\n\treturn wickData;\n}\n*/\n\nfunction getCandleData(props, xAccessor, xScale, yScale, plotData) {\n\n\tconst { wickStroke: wickStrokeProp } = props;\n\tconst wickStroke = functor(wickStrokeProp);\n\n\tconst { classNames, fill: fillProp, stroke: strokeProp, yAccessor } = props;\n\tconst className = functor(classNames);\n\n\tconst fill = functor(fillProp);\n\tconst stroke = functor(strokeProp);\n\n\tconst widthFunctor = functor(props.width);\n\tconst width = widthFunctor(props, {\n\t\txScale,\n\t\txAccessor,\n\t\tplotData\n\t});\n\n\t/*\n\tconst candleWidth = Math.round(width);\n\tconst offset = Math.round(candleWidth === 1 ? 0 : 0.5 * width);\n\t*/\n\tconst trueOffset = 0.5 * width;\n\tconst offset = trueOffset > 0.7\n\t\t? Math.round(trueOffset)\n\t\t: Math.floor(trueOffset);\n\n\t// eslint-disable-next-line prefer-const\n\tlet candles = [];\n\n\tfor (let i = 0; i < plotData.length; i++) {\n\t\tconst d = plotData[i];\n\t\tif (isDefined(yAccessor(d).close)) {\n\t\t\tconst x = Math.round(xScale(xAccessor(d)));\n\t\t\t// const x = Math.round(xScale(xAccessor(d)) - offset);\n\n\t\t\tconst ohlc = yAccessor(d);\n\t\t\tconst y = Math.round(yScale(Math.max(ohlc.open, ohlc.close)));\n\t\t\tconst height = Math.round(Math.abs(yScale(ohlc.open) - yScale(ohlc.close)));\n\n\t\t\tcandles.push({\n\t\t\t\t// type: \"line\"\n\t\t\t\tx: x - offset,\n\t\t\t\ty: y,\n\t\t\t\twick: {\n\t\t\t\t\tstroke: wickStroke(ohlc),\n\t\t\t\t\tx: x,\n\t\t\t\t\ty1: Math.round(yScale(ohlc.high)),\n\t\t\t\t\ty2: y,\n\t\t\t\t\ty3: y + height, // Math.round(yScale(Math.min(ohlc.open, ohlc.close))),\n\t\t\t\t\ty4: Math.round(yScale(ohlc.low)),\n\t\t\t\t},\n\t\t\t\theight: height,\n\t\t\t\twidth: offset * 2,\n\t\t\t\tclassName: className(ohlc),\n\t\t\t\tfill: fill(ohlc),\n\t\t\t\tstroke: stroke(ohlc),\n\t\t\t\tdirection: (ohlc.close - ohlc.open),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn candles;\n}\n\nexport default CandlestickSeries;\n","\n\nimport { nest } from \"d3-collection\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { isDefined, functor } from \"../utils\";\n\nclass OHLCSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor } = this.props;\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tconst barData = getOHLCBars(this.props, xAccessor, yAccessor, xScale, yScale, plotData);\n\t\tdrawOnCanvas(ctx, barData);\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tclip={clip}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, yAccessor } = this.props;\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\n\t\tconst barData = getOHLCBars(this.props, xAccessor, yAccessor, xScale, yScale, plotData);\n\n\t\tconst { strokeWidth, bars } = barData;\n\n\t\treturn <g className={className}>\n\t\t\t{bars.map((d, idx) => <path key={idx}\n\t\t\t\tclassName={d.className} stroke={d.stroke} strokeWidth={strokeWidth}\n\t\t\t\td={`M${d.openX1} ${d.openY} L${d.openX2} ${d.openY} M${d.x} ${d.y1} L${d.x} ${d.y2} M${d.closeX1} ${d.closeY} L${d.closeX2} ${d.closeY}`}/>)}\n\t\t</g>;\n\t}\n}\n\nOHLCSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tclassNames: PropTypes.oneOfType([\n\t\tPropTypes.func,\n\t\tPropTypes.string\n\t]).isRequired,\n\tstroke: PropTypes.oneOfType([\n\t\tPropTypes.func,\n\t\tPropTypes.string\n\t]).isRequired,\n\tyAccessor: PropTypes.func.isRequired,\n\tclip: PropTypes.bool.isRequired,\n};\n\nOHLCSeries.defaultProps = {\n\tclassName: \"react-stockcharts-ohlc\",\n\tyAccessor: (d) => ({ open: d.open, high: d.high, low: d.low, close: d.close }),\n\tclassNames: d => isDefined(d.absoluteChange) ? (d.absoluteChange > 0 ? \"up\" : \"down\") : \"firstbar\",\n\tstroke: d => isDefined(d.absoluteChange) ? (d.absoluteChange > 0 ? \"#6BA583\" : \"#FF0000\") : \"#000000\",\n\tclip: true,\n};\n\nfunction drawOnCanvas(ctx, barData) {\n\n\tconst { strokeWidth, bars } = barData;\n\n\tconst wickNest = nest()\n\t\t.key(d => d.stroke)\n\t\t.entries(bars);\n\n\tctx.lineWidth = strokeWidth;\n\n\twickNest.forEach(outer => {\n\t\tconst { key, values } = outer;\n\t\tctx.strokeStyle = key;\n\t\tvalues.forEach(d => {\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(d.x, d.y1);\n\t\t\tctx.lineTo(d.x, d.y2);\n\n\t\t\tctx.moveTo(d.openX1, d.openY);\n\t\t\tctx.lineTo(d.openX2, d.openY);\n\n\t\t\tctx.moveTo(d.closeX1, d.closeY);\n\t\t\tctx.lineTo(d.closeX2, d.closeY);\n\n\t\t\tctx.stroke();\n\t\t});\n\t});\n}\n\nfunction getOHLCBars(props, xAccessor, yAccessor, xScale, yScale, plotData) {\n\tconst { classNames: classNamesProp, stroke: strokeProp } = props;\n\n\tconst strokeFunc = functor(strokeProp);\n\tconst classNameFunc = functor(classNamesProp);\n\n\tconst width = xScale(xAccessor(plotData[plotData.length - 1]))\n\t\t- xScale(xAccessor(plotData[0]));\n\n\tconst barWidth = Math.max(1, Math.round(width / (plotData.length - 1) / 2) - 1.5);\n\tconst strokeWidth = Math.min(barWidth, 6);\n\n\tconst bars = plotData\n\t\t.filter(d => isDefined(yAccessor(d).close))\n\t\t.map(d => {\n\t\t\tconst ohlc = yAccessor(d),\n\t\t\t\tx = Math.round(xScale(xAccessor(d))),\n\t\t\t\ty1 = yScale(ohlc.high),\n\t\t\t\ty2 = yScale(ohlc.low),\n\t\t\t\topenX1 = x - barWidth,\n\t\t\t\topenX2 = x + strokeWidth / 2,\n\t\t\t\topenY = yScale(ohlc.open),\n\t\t\t\tcloseX1 = x - strokeWidth / 2,\n\t\t\t\tcloseX2 = x + barWidth,\n\t\t\t\tcloseY = yScale(ohlc.close),\n\t\t\t\tclassName = classNameFunc(d),\n\t\t\t\tstroke = strokeFunc(d);\n\n\t\t\treturn { x, y1, y2, openX1, openX2, openY, closeX1, closeX2, closeY, stroke, className };\n\t\t});\n\treturn { barWidth, strokeWidth, bars };\n}\n\nexport default OHLCSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport StackedBarSeries, { drawOnCanvasHelper, svgHelper, identityStack } from \"./StackedBarSeries\";\n\nclass GroupedBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\tdrawOnCanvasHelper(ctx, this.props, moreProps, xAccessor, identityStack, postProcessor);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\treturn <g className=\"react-stockcharts-grouped-bar-series\">\n\t\t\t{svgHelper(this.props, moreProps, xAccessor, identityStack, postProcessor)}\n\t\t</g>;\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nGroupedBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidthRatio: PropTypes.number.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tyAccessor: PropTypes.arrayOf(PropTypes.func),\n};\n\nGroupedBarSeries.defaultProps = {\n\t...StackedBarSeries.defaultProps,\n\twidthRatio: 0.8,\n\tspaceBetweenBar: 5,\n};\n\nfunction postProcessor(array) {\n\treturn array.map(each => {\n\t\treturn {\n\t\t\t...each,\n\t\t\tx: each.x + each.offset - each.groupOffset,\n\t\t\twidth: each.groupWidth,\n\t\t};\n\t});\n}\n\nexport default GroupedBarSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { line, curveStepBefore } from \"d3-shape\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport { isDefined, isNotDefined } from \"../utils\";\n\nclass KagiSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\n\t\tdrawOnCanvas(ctx, this.props, moreProps, xAccessor);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tconst { className, stroke, fill, strokeWidth } = this.props;\n\n\t\tconst paths = helper(plotData, xAccessor).map((each, i) => {\n\t\t\tconst dataSeries = line()\n\t\t\t\t.x((item) => xScale(item[0]))\n\t\t\t\t.y((item) => yScale(item[1]))\n\t\t\t\t.curve(curveStepBefore);\n\n\t\t\tdataSeries(each.plot);\n\n\t\t\treturn (<path key={i} d={dataSeries(each.plot)} className={each.type}\n\t\t\t\tstroke={stroke[each.type]} fill={fill[each.type]} strokeWidth={strokeWidth} />);\n\t\t});\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t{paths}\n\t\t\t</g>\n\t\t);\n\t}\n}\nKagiSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstroke: PropTypes.object,\n\tfill: PropTypes.object,\n\tstrokeWidth: PropTypes.number.isRequired,\n};\n\nKagiSeries.defaultProps = {\n\tclassName: \"react-stockcharts-kagi\",\n\tstrokeWidth: 2,\n\tstroke: {\n\t\tyang: \"#6BA583\",\n\t\tyin: \"#E60000\"\n\t},\n\tfill: {\n\t\tyang: \"none\",\n\t\tyin: \"none\"\n\t},\n\tcurrentValueStroke: \"#000000\",\n};\n\nfunction drawOnCanvas(ctx, props, moreProps, xAccessor) {\n\tconst { stroke, strokeWidth, currentValueStroke } = props;\n\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst paths = helper(plotData, xAccessor);\n\n\tlet begin = true;\n\n\tpaths.forEach((each) => {\n\t\tctx.strokeStyle = stroke[each.type];\n\t\tctx.lineWidth = strokeWidth;\n\n\t\tctx.beginPath();\n\t\tlet prevX;\n\t\teach.plot.forEach(d => {\n\t\t\tconst [x, y] = [xScale(d[0]), yScale(d[1])];\n\t\t\tif (begin) {\n\t\t\t\tctx.moveTo(x, y);\n\t\t\t\tbegin = false;\n\t\t\t} else {\n\t\t\t\tif (isDefined(prevX)) {\n\t\t\t\t\tctx.lineTo(prevX, y);\n\t\t\t\t}\n\t\t\t\tctx.lineTo(x, y);\n\t\t\t}\n\t\t\tprevX = x;\n\t\t\t// console.log(d);\n\n\t\t});\n\t\tctx.stroke();\n\t});\n\tconst lastPlot = paths[paths.length - 1].plot;\n\tconst last = lastPlot[lastPlot.length - 1];\n\tctx.beginPath();\n\t// ctx.strokeStyle = \"black\";\n\tctx.lineWidth = 1;\n\n\tconst [x, y1, y2] = [xScale(last[0]), yScale(last[2]), yScale(last[3])];\n\t// console.log(last, x, y);\n\tctx.moveTo(x, y1);\n\tctx.lineTo(x + 10, y1);\n\tctx.stroke();\n\n\tctx.beginPath();\n\tctx.strokeStyle = currentValueStroke;\n\tctx.moveTo(x - 10, y2);\n\tctx.lineTo(x, y2);\n\tctx.stroke();\n}\n\nfunction helper(plotData, xAccessor) {\n\tconst kagiLine = [];\n\tlet kagi = {};\n\tlet d = plotData[0];\n\tlet idx = xAccessor(d);\n\n\tfor (let i = 0; i < plotData.length; i++) {\n\t\td = plotData[i];\n\n\t\tif (isNotDefined(d.close)) continue;\n\t\tif (isNotDefined(kagi.type)) kagi.type = d.startAs;\n\t\tif (isNotDefined(kagi.plot)) kagi.plot = [];\n\n\t\tidx = xAccessor(d);\n\t\tkagi.plot.push([idx, d.open]);\n\n\t\tif (isDefined(d.changeTo)) {\n\t\t\tkagi.plot.push([idx, d.changePoint]);\n\t\t\tkagi.added = true;\n\t\t\tkagiLine.push(kagi);\n\n\t\t\tkagi = {\n\t\t\t\ttype: d.changeTo,\n\t\t\t\tplot: [],\n\t\t\t\tadded: false,\n\t\t\t};\n\t\t\tkagi.plot.push([idx, d.changePoint]);\n\t\t}\n\t}\n\n\tif (!kagi.added) {\n\t\tkagi.plot.push([idx, d.close, d.current, d.reverseAt]);\n\t\tkagiLine.push(kagi);\n\t}\n\n\t// console.log(d.reverseAt);\n\n\treturn kagiLine;\n}\n\nexport default KagiSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { isDefined, isNotDefined } from \"../utils\";\n\nclass PointAndFigureSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\t\tconst columns = getColumns(xScale, xAccessor, yScale, plotData);\n\n\t\tdrawOnCanvas(ctx, this.props, columns);\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn <GenericChartComponent\n\t\t\tclip={clip}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tconst { stroke, fill, strokeWidth, className } = this.props;\n\n\t\tconst columns = getColumns(xScale, xAccessor, yScale, plotData);\n\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t{columns.map((col, idx) => (\n\t\t\t\t\t<g key={idx} className={col.className} transform={`translate(${ col.offset[0] }, ${ col.offset[1] })`}>\n\t\t\t\t\t\t{col.boxes.map((box, i) => {\n\t\t\t\t\t\t\tif (col.direction > 0) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<g key={`${ idx }-${ i }`}>\n\t\t\t\t\t\t\t\t\t\t<line className=\"up\" strokeWidth={strokeWidth} stroke={stroke.up} fill={fill.up}\n\t\t\t\t\t\t\t\t\t\t\tx1={0} y1={box.open} x2={box.columnWidth} y2={box.close} />\n\t\t\t\t\t\t\t\t\t\t<line className=\"up\" strokeWidth={strokeWidth} stroke={stroke.up} fill={fill.up}\n\t\t\t\t\t\t\t\t\t\t\tx1={0} y1={box.close} x2={box.columnWidth} y2={box.open} />\n\t\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ellipse key={`${ idx }-${ i }`}\n\t\t\t\t\t\t\t\t\tclassName=\"down\" strokeWidth={strokeWidth} stroke={stroke.down} fill={fill.down}\n\t\t\t\t\t\t\t\t\tcx={box.columnWidth / 2} cy={(box.open + box.close) / 2}\n\t\t\t\t\t\t\t\t\trx={box.columnWidth / 2} ry={box.boxHeight / 2} />\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</g>\n\t\t\t\t))}\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nPointAndFigureSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeWidth: PropTypes.number.isRequired,\n\tstroke: PropTypes.object.isRequired,\n\tfill: PropTypes.object.isRequired,\n\tclip: PropTypes.bool.isRequired,\n};\n\nPointAndFigureSeries.defaultProps = {\n\tclassName: \"react-stockcharts-point-and-figure\",\n\tstrokeWidth: 1,\n\tstroke: {\n\t\tup: \"#6BA583\",\n\t\tdown: \"#FF0000\"\n\t},\n\tfill: {\n\t\tup: \"none\",\n\t\tdown: \"none\"\n\t},\n\tclip: true,\n};\n\nfunction drawOnCanvas(ctx, props, columns) {\n\tconst { stroke, fill, strokeWidth } = props;\n\n\tctx.lineWidth = strokeWidth;\n\n\tcolumns.forEach(col => {\n\t\tconst [offsetX, offsetY] = col.offset;\n\t\tcol.boxes.forEach(box => {\n\t\t\tif (col.direction > 0) {\n\t\t\t\tctx.fillStyle = fill.up;\n\t\t\t\tctx.strokeStyle = stroke.up;\n\n\t\t\t\tctx.beginPath();\n\n\t\t\t\tctx.moveTo(offsetX, offsetY + box.open);\n\t\t\t\tctx.lineTo(offsetX + box.columnWidth, offsetY + box.close);\n\t\t\t\tctx.moveTo(offsetX, offsetY + box.close);\n\t\t\t\tctx.lineTo(offsetX + box.columnWidth, offsetY + box.open);\n\n\t\t\t\tctx.stroke();\n\t\t\t} else {\n\t\t\t\tctx.fillStyle = fill.down;\n\t\t\t\tctx.strokeStyle = stroke.down;\n\n\t\t\t\tctx.beginPath();\n\n\t\t\t\tconst [x, y] = [offsetX + box.columnWidth / 2, offsetY + box.open + box.boxHeight / 2];\n\t\t\t\tconst [rx, ry] = [box.columnWidth / 2, box.boxHeight / 2];\n\n\t\t\t\tctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t});\n\t});\n\n\tctx.stroke();\n}\n\nfunction getColumns(xScale, xAccessor, yScale, plotData) {\n\n\tconst width = xScale(xAccessor(plotData[plotData.length - 1]))\n\t\t- xScale(xAccessor(plotData[0]));\n\n\tconst columnWidth = (width / (plotData.length - 1));\n\n\tlet anyBox, j = 0;\n\twhile (isNotDefined(anyBox)) {\n\t\tif (isDefined(plotData[j].close)) {\n\t\t\tanyBox = plotData[j].boxes[0];\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t\tj++;\n\t}\n\n\tconst boxHeight = Math.abs(yScale(anyBox.open) - yScale(anyBox.close));\n\n\tconst columns = plotData\n\t\t.filter(d => isDefined(d.close))\n\t\t.map(d => {\n\t\t\tconst boxes = d.boxes.map((box) => ({\n\t\t\t\tcolumnWidth: columnWidth,\n\t\t\t\tboxHeight: boxHeight,\n\t\t\t\topen: yScale(box.open),\n\t\t\t\tclose: yScale(box.close),\n\t\t\t}));\n\n\t\t\tconst xOffset = (xScale(xAccessor(d)) - (columnWidth / 2));\n\t\t\treturn {\n\t\t\t\tboxes: boxes,\n\t\t\t\tdirection: d.direction,\n\t\t\t\toffset: [xOffset, 0],\n\t\t\t};\n\t\t});\n\treturn columns;\n}\n\nexport default PointAndFigureSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { isDefined } from \"../utils\";\n\nclass RenkoSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tconst { yAccessor } = this.props;\n\n\t\tconst candles = getRenko(this.props, plotData, xScale, xAccessor, yScale, yAccessor);\n\n\t\tdrawOnCanvas(ctx, candles);\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn <GenericChartComponent\n\t\t\tclip={clip}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { xAccessor } = moreProps;\n\t\tconst { xScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\t\tconst { yAccessor } = this.props;\n\n\t\tconst candles = getRenko(this.props, plotData, xScale, xAccessor, yScale, yAccessor)\n\t\t\t.map((each, idx) => (<rect key={idx} className={each.className}\n\t\t\t\tfill={each.fill}\n\t\t\t\tx={each.x}\n\t\t\t\ty={each.y}\n\t\t\t\twidth={each.width}\n\t\t\t\theight={each.height} />));\n\n\t\treturn (\n\t\t\t<g>\n\t\t\t\t<g className=\"candle\">\n\t\t\t\t\t{candles}\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nRenkoSeries.propTypes = {\n\tclassNames: PropTypes.shape({\n\t\tup: PropTypes.string,\n\t\tdown: PropTypes.string\n\t}),\n\tstroke: PropTypes.shape({\n\t\tup: PropTypes.string,\n\t\tdown: PropTypes.string\n\t}),\n\tfill: PropTypes.shape({\n\t\tup: PropTypes.string,\n\t\tdown: PropTypes.string,\n\t\tpartial: PropTypes.string\n\t}),\n\tyAccessor: PropTypes.func.isRequired,\n\tclip: PropTypes.bool.isRequired,\n};\n\nRenkoSeries.defaultProps = {\n\tclassNames: {\n\t\tup: \"up\",\n\t\tdown: \"down\"\n\t},\n\tstroke: {\n\t\tup: \"none\",\n\t\tdown: \"none\"\n\t},\n\tfill: {\n\t\tup: \"#6BA583\",\n\t\tdown: \"#E60000\",\n\t\tpartial: \"#4682B4\",\n\t},\n\tyAccessor: d => ({ open: d.open, high: d.high, low: d.low, close: d.close }),\n\tclip: true,\n};\n\nfunction drawOnCanvas(ctx, renko) {\n\trenko.forEach(d => {\n\t\tctx.beginPath();\n\n\t\tctx.strokeStyle = d.stroke;\n\t\tctx.fillStyle = d.fill;\n\n\t\tctx.rect(d.x, d.y, d.width, d.height);\n\t\tctx.closePath();\n\t\tctx.fill();\n\t});\n}\n\nfunction getRenko(props, plotData, xScale, xAccessor, yScale, yAccessor) {\n\tconst { classNames, fill } = props;\n\tconst width = xScale(xAccessor(plotData[plotData.length - 1]))\n\t\t- xScale(xAccessor(plotData[0]));\n\n\tconst candleWidth = (width / (plotData.length - 1));\n\tconst candles = plotData\n\t\t.filter(d => isDefined(yAccessor(d).close))\n\t\t.map(d => {\n\t\t\tconst ohlc = yAccessor(d);\n\t\t\tconst x = xScale(xAccessor(d)) - 0.5 * candleWidth,\n\t\t\t\ty = yScale(Math.max(ohlc.open, ohlc.close)),\n\t\t\t\theight = Math.abs(yScale(ohlc.open) - yScale(ohlc.close)),\n\t\t\t\tclassName = (ohlc.open <= ohlc.close) ? classNames.up : classNames.down;\n\n\t\t\tconst svgfill = d.fullyFormed\n\t\t\t\t? (ohlc.open <= ohlc.close ? fill.up : fill.down)\n\t\t\t\t: fill.partial;\n\n\t\t\treturn {\n\t\t\t\tclassName: className,\n\t\t\t\tfill: svgfill,\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\theight: height,\n\t\t\t\twidth: candleWidth,\n\t\t\t};\n\t\t});\n\treturn candles;\n}\n\nexport default RenkoSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport BarSeries from \"./BarSeries\";\nimport LineSeries from \"./LineSeries\";\nimport StraightLine from \"./StraightLine\";\n\nclass MACDSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.yAccessorForMACD = this.yAccessorForMACD.bind(this);\n\t\tthis.yAccessorForSignal = this.yAccessorForSignal.bind(this);\n\t\tthis.yAccessorForDivergence = this.yAccessorForDivergence.bind(this);\n\t\tthis.yAccessorForDivergenceBase = this.yAccessorForDivergenceBase.bind(this);\n\t}\n\tyAccessorForMACD(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).macd;\n\t}\n\tyAccessorForSignal(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).signal;\n\t}\n\tyAccessorForDivergence(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).divergence;\n\t}\n\tyAccessorForDivergenceBase(xScale, yScale/* , d */) {\n\t\treturn yScale(0);\n\t}\n\trender() {\n\t\tconst { className, opacity, divergenceStroke, widthRatio, width } = this.props;\n\t\tconst { stroke, fill } = this.props;\n\n\t\tconst { clip } = this.props;\n\t\tconst { zeroLineStroke, zeroLineOpacity } = this.props;\n\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t<BarSeries\n\t\t\t\t\tbaseAt={this.yAccessorForDivergenceBase}\n\t\t\t\t\tclassName=\"macd-divergence\"\n\t\t\t\t\twidth={width}\n\t\t\t\t\twidthRatio={widthRatio}\n\t\t\t\t\tstroke={divergenceStroke}\n\t\t\t\t\tfill={fill.divergence}\n\t\t\t\t\topacity={opacity}\n\t\t\t\t\tclip={clip}\n\t\t\t\t\tyAccessor={this.yAccessorForDivergence} />\n\t\t\t\t<LineSeries\n\t\t\t\t\tyAccessor={this.yAccessorForMACD}\n\t\t\t\t\tstroke={stroke.macd}\n\t\t\t\t\tfill=\"none\" />\n\t\t\t\t<LineSeries\n\t\t\t\t\tyAccessor={this.yAccessorForSignal}\n\t\t\t\t\tstroke={stroke.signal}\n\t\t\t\t\tfill=\"none\" />\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={zeroLineStroke}\n\t\t\t\t\topacity={zeroLineOpacity}\n\t\t\t\t\tyValue={0} />\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nMACDSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number,\n\tdivergenceStroke: PropTypes.bool,\n\tzeroLineStroke: PropTypes.string,\n\tzeroLineOpacity: PropTypes.number,\n\tclip: PropTypes.bool.isRequired,\n\tstroke: PropTypes.shape({\n\t\tmacd: PropTypes.string.isRequired,\n\t\tsignal: PropTypes.string.isRequired,\n\t}).isRequired,\n\tfill: PropTypes.shape({\n\t\tdivergence: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,\n\t}).isRequired,\n\twidthRatio: PropTypes.number,\n\twidth: BarSeries.propTypes.width,\n};\n\nMACDSeries.defaultProps = {\n\tclassName: \"react-stockcharts-macd-series\",\n\tzeroLineStroke: \"#000000\",\n\tzeroLineOpacity: 0.3,\n\topacity: 0.6,\n\tdivergenceStroke: false,\n\tclip: true,\n\twidthRatio: 0.5,\n\twidth: BarSeries.defaultProps.width,\n};\n\nexport default MACDSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport LineSeries from \"./LineSeries\";\nimport AreaOnlySeries from \"./AreaOnlySeries\";\n\nclass BollingerSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.yAccessorForTop = this.yAccessorForTop.bind(this);\n\t\tthis.yAccessorForMiddle = this.yAccessorForMiddle.bind(this);\n\t\tthis.yAccessorForBottom = this.yAccessorForBottom.bind(this);\n\t\tthis.yAccessorForScalledBottom = this.yAccessorForScalledBottom.bind(this);\n\t}\n\tyAccessorForTop(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).top;\n\t}\n\tyAccessorForMiddle(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).middle;\n\t}\n\tyAccessorForBottom(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).bottom;\n\t}\n\tyAccessorForScalledBottom(scale, d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn scale(yAccessor(d) && yAccessor(d).bottom);\n\t}\n\trender() {\n\t\tconst { areaClassName, className, opacity } = this.props;\n\t\tconst { stroke, fill } = this.props;\n\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t<LineSeries yAccessor={this.yAccessorForTop}\n\t\t\t\t\tstroke={stroke.top} fill=\"none\" />\n\t\t\t\t<LineSeries yAccessor={this.yAccessorForMiddle}\n\t\t\t\t\tstroke={stroke.middle} fill=\"none\" />\n\t\t\t\t<LineSeries yAccessor={this.yAccessorForBottom}\n\t\t\t\t\tstroke={stroke.bottom} fill=\"none\" />\n\t\t\t\t<AreaOnlySeries className={areaClassName}\n\t\t\t\t\tyAccessor={this.yAccessorForTop}\n\t\t\t\t\tbase={this.yAccessorForScalledBottom}\n\t\t\t\t\tstroke=\"none\" fill={fill}\n\t\t\t\t\topacity={opacity} />\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nBollingerSeries.propTypes = {\n\tyAccessor: PropTypes.func.isRequired,\n\tclassName: PropTypes.string,\n\tareaClassName: PropTypes.string,\n\topacity: PropTypes.number,\n\ttype: PropTypes.string,\n\tstroke: PropTypes.shape({\n\t\ttop: PropTypes.string.isRequired,\n\t\tmiddle: PropTypes.string.isRequired,\n\t\tbottom: PropTypes.string.isRequired,\n\t}).isRequired,\n\tfill: PropTypes.string.isRequired,\n};\n\nBollingerSeries.defaultProps = {\n\tclassName: \"react-stockcharts-bollinger-band-series\",\n\tareaClassName: \"react-stockcharts-bollinger-band-series-area\",\n\topacity: 0.2\n};\n\nexport default BollingerSeries;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport LineSeries from \"./LineSeries\";\n// import AreaSeries from \"./AreaSeries\";\nimport StraightLine from \"./StraightLine\";\nimport SVGComponent from \"./SVGComponent\";\nimport {\n\tstrokeDashTypes,\n} from \"../utils\";\n\nclass RSISeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderClip = this.renderClip.bind(this);\n\t\tthis.topAndBottomClip = this.topAndBottomClip.bind(this);\n\t\tthis.mainClip = this.mainClip.bind(this);\n\n\t\tconst id1 = String(Math.round(Math.random() * 10000 * 10000));\n\t\tthis.clipPathId1 = `rsi-clip-${id1}`;\n\n\t\tconst id2 = String(Math.round(Math.random() * 10000 * 10000));\n\t\tthis.clipPathId2 = `rsi-clip-${id2}`;\n\t}\n\ttopAndBottomClip(ctx, moreProps) {\n\t\tconst { chartConfig } = moreProps;\n\t\tconst { overSold, overBought } = this.props;\n\t\tconst { yScale, width } = chartConfig;\n\n\t\tctx.beginPath();\n\t\tctx.rect(\n\t\t\t0,\n\t\t\tyScale(overSold),\n\t\t\twidth,\n\t\t\tyScale(overBought) - yScale(overSold)\n\t\t);\n\t\tctx.clip();\n\t}\n\tmainClip(ctx, moreProps) {\n\t\tconst { chartConfig } = moreProps;\n\t\tconst { overSold, overBought } = this.props;\n\t\tconst { yScale, width, height } = chartConfig;\n\n\t\tctx.beginPath();\n\t\tctx.rect(\n\t\t\t0,\n\t\t\t0,\n\t\t\twidth,\n\t\t\tyScale(overSold)\n\t\t);\n\t\tctx.rect(\n\t\t\t0,\n\t\t\tyScale(overBought),\n\t\t\twidth,\n\t\t\theight - yScale(overBought)\n\t\t);\n\t\tctx.clip();\n\t}\n\trenderClip(moreProps) {\n\t\tconst { chartConfig } = moreProps;\n\t\tconst { overSold, overBought } = this.props;\n\t\tconst { yScale, width, height } = chartConfig;\n\n\t\treturn (\n\t\t\t<defs>\n\t\t\t\t<clipPath id={this.clipPathId1}>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx={0}\n\t\t\t\t\t\ty={yScale(overSold)}\n\t\t\t\t\t\twidth={width}\n\t\t\t\t\t\theight={yScale(overBought) - yScale(overSold)}\n\t\t\t\t\t/>\n\t\t\t\t</clipPath>\n\t\t\t\t<clipPath id={this.clipPathId2}>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx={0}\n\t\t\t\t\t\ty={0}\n\t\t\t\t\t\twidth={width}\n\t\t\t\t\t\theight={yScale(overSold)}\n\t\t\t\t\t/>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx={0}\n\t\t\t\t\t\ty={yScale(overBought)}\n\t\t\t\t\t\twidth={width}\n\t\t\t\t\t\theight={height - yScale(overBought)}\n\t\t\t\t\t/>\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t);\n\t}\n\trender() {\n\t\tconst { className, stroke, opacity, strokeDasharray, strokeWidth } = this.props;\n\t\tconst { yAccessor } = this.props;\n\t\tconst { overSold, middle, overBought } = this.props;\n\n\t\tconst style1 = { \"clipPath\": `url(#${this.clipPathId1})` };\n\t\tconst style2 = { \"clipPath\": `url(#${this.clipPathId2})` };\n\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t<SVGComponent>\n\t\t\t\t\t{this.renderClip}\n\t\t\t\t</SVGComponent>\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={stroke.top}\n\t\t\t\t\topacity={opacity.top}\n\t\t\t\t\tyValue={overSold}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.top}\n\t\t\t\t\tstrokeWidth={strokeWidth.top}\n\t\t\t\t/>\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={stroke.middle}\n\t\t\t\t\topacity={opacity.middle}\n\t\t\t\t\tyValue={middle}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.middle}\n\t\t\t\t\tstrokeWidth={strokeWidth.middle}\n\t\t\t\t/>\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={stroke.bottom}\n\t\t\t\t\topacity={opacity.bottom}\n\t\t\t\t\tyValue={overBought}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.bottom}\n\t\t\t\t\tstrokeWidth={strokeWidth.bottom}\n\t\t\t\t/>\n\t\t\t\t<LineSeries\n\t\t\t\t\tstyle={style1}\n\t\t\t\t\tcanvasClip={this.topAndBottomClip}\n\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tyAccessor={yAccessor}\n\t\t\t\t\tstroke={stroke.insideThreshold || stroke.line}\n\t\t\t\t\tstrokeWidth={strokeWidth.insideThreshold}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.line}\n\t\t\t\t/>\n\t\t\t\t<LineSeries\n\t\t\t\t\tstyle={style2}\n\t\t\t\t\tcanvasClip={this.mainClip}\n\t\t\t\t\t/* baseAt={yScale => yScale(middle)} */\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tyAccessor={yAccessor}\n\t\t\t\t\tstroke={stroke.outsideThreshold || stroke.line}\n\t\t\t\t\tstrokeWidth={strokeWidth.outsideThreshold}\n\t\t\t\t\tstrokeDasharray={strokeDasharray.line}\n\t\t\t\t\t/* fill={stroke.outsideThreshold || stroke.line} */\n\t\t\t\t/>\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nRSISeries.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\tstroke: PropTypes.shape({\n\t\ttop: PropTypes.string.isRequired,\n\t\tmiddle: PropTypes.string.isRequired,\n\t\tbottom: PropTypes.string.isRequired,\n\t\toutsideThreshold: PropTypes.string.isRequired,\n\t\tinsideThreshold: PropTypes.string.isRequired,\n\t}).isRequired,\n\topacity: PropTypes.shape({\n\t\ttop: PropTypes.number.isRequired,\n\t\tmiddle: PropTypes.number.isRequired,\n\t\tbottom: PropTypes.number.isRequired,\n\t}).isRequired,\n\tstrokeDasharray: PropTypes.shape({\n\t\tline: PropTypes.oneOf(strokeDashTypes),\n\t\ttop: PropTypes.oneOf(strokeDashTypes),\n\t\tmiddle: PropTypes.oneOf(strokeDashTypes),\n\t\tbottom: PropTypes.oneOf(strokeDashTypes),\n\t}).isRequired,\n\tstrokeWidth: PropTypes.shape({\n\t\toutsideThreshold: PropTypes.number.isRequired,\n\t\tinsideThreshold: PropTypes.number.isRequired,\n\t\ttop: PropTypes.number.isRequired,\n\t\tmiddle: PropTypes.number.isRequired,\n\t\tbottom: PropTypes.number.isRequired,\n\t}).isRequired,\n\toverSold: PropTypes.number.isRequired,\n\tmiddle: PropTypes.number.isRequired,\n\toverBought: PropTypes.number.isRequired,\n};\n\nRSISeries.defaultProps = {\n\tclassName: \"react-stockcharts-rsi-series\",\n\tstroke: {\n\t\tline: \"#000000\",\n\t\ttop: \"#B8C2CC\",\n\t\tmiddle: \"#8795A1\",\n\t\tbottom: \"#B8C2CC\",\n\t\toutsideThreshold: \"#b300b3\",\n\t\tinsideThreshold: \"#ffccff\",\n\t},\n\topacity: {\n\t\ttop: 1,\n\t\tmiddle: 1,\n\t\tbottom: 1\n\t},\n\tstrokeDasharray: {\n\t\tline: \"Solid\",\n\t\ttop: \"ShortDash\",\n\t\tmiddle: \"ShortDash\",\n\t\tbottom: \"ShortDash\",\n\t},\n\tstrokeWidth: {\n\t\toutsideThreshold: 1,\n\t\tinsideThreshold: 1,\n\t\ttop: 1,\n\t\tmiddle: 1,\n\t\tbottom: 1,\n\t},\n\toverSold: 70,\n\tmiddle: 50,\n\toverBought: 30,\n};\n\nexport default RSISeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport LineSeries from \"./LineSeries\";\nimport StraightLine from \"./StraightLine\";\n\nclass StochasticSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.yAccessorForD = this.yAccessorForD.bind(this);\n\t\tthis.yAccessorForK = this.yAccessorForK.bind(this);\n\t}\n\tyAccessorForD(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).D;\n\t}\n\tyAccessorForK(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && yAccessor(d).K;\n\t}\n\trender() {\n\t\tconst { className, stroke, refLineOpacity } = this.props;\n\t\tconst { overSold, middle, overBought } = this.props;\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t<LineSeries yAccessor={this.yAccessorForD}\n\t\t\t\t\tstroke={stroke.dLine}\n\t\t\t\t\tfill=\"none\" />\n\t\t\t\t<LineSeries yAccessor={this.yAccessorForK}\n\t\t\t\t\tstroke={stroke.kLine}\n\t\t\t\t\tfill=\"none\" />\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={stroke.top}\n\t\t\t\t\topacity={refLineOpacity}\n\t\t\t\t\tyValue={overSold} />\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={stroke.middle}\n\t\t\t\t\topacity={refLineOpacity}\n\t\t\t\t\tyValue={middle} />\n\t\t\t\t<StraightLine\n\t\t\t\t\tstroke={stroke.bottom}\n\t\t\t\t\topacity={refLineOpacity}\n\t\t\t\t\tyValue={overBought} />\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nStochasticSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\tstroke: PropTypes.shape({\n\t\ttop: PropTypes.string.isRequired,\n\t\tmiddle: PropTypes.string.isRequired,\n\t\tbottom: PropTypes.string.isRequired,\n\t\tdLine: PropTypes.string.isRequired,\n\t\tkLine: PropTypes.string.isRequired,\n\t}).isRequired,\n\toverSold: PropTypes.number.isRequired,\n\tmiddle: PropTypes.number.isRequired,\n\toverBought: PropTypes.number.isRequired,\n\trefLineOpacity: PropTypes.number.isRequired,\n};\n\nStochasticSeries.defaultProps = {\n\tclassName: \"react-stockcharts-stochastic-series\",\n\tstroke: {\n\t\ttop: \"#964B00\",\n\t\tmiddle: \"#000000\",\n\t\tbottom: \"#964B00\",\n\t\tdLine: \"#EA2BFF\",\n\t\tkLine: \"#74D400\",\n\t},\n\toverSold: 80,\n\tmiddle: 50,\n\toverBought: 20,\n\trefLineOpacity: 0.3,\n};\n\nexport default StochasticSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport OverlayBarSeries from \"./OverlayBarSeries\";\nimport StraightLine from \"./StraightLine\";\n\nclass ElderRaySeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.fillForEachBar = this.fillForEachBar.bind(this);\n\t\tthis.yAccessorTop = this.yAccessorTop.bind(this);\n\t\tthis.yAccessorBullTop = this.yAccessorBullTop.bind(this);\n\t\tthis.yAccessorBearTop = this.yAccessorBearTop.bind(this);\n\t\tthis.yAccessorBullBottom = this.yAccessorBullBottom.bind(this);\n\t\tthis.yAccessorBearBottom = this.yAccessorBearBottom.bind(this);\n\t\tthis.yAccessorForBarBase = this.yAccessorForBarBase.bind(this);\n\t}\n\tyAccessorTop(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && Math.max(yAccessor(d).bullPower, 0);\n\t}\n\tyAccessorBullTop(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && (yAccessor(d).bullPower > 0 ? yAccessor(d).bullPower : undefined);\n\t}\n\tyAccessorBearTop(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && (yAccessor(d).bearPower > 0 ? yAccessor(d).bearPower : undefined);\n\t}\n\tyAccessorBullBottom(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && (yAccessor(d).bullPower < 0 ? 0 : undefined);\n\t}\n\tyAccessorBearBottom(d) {\n\t\tconst { yAccessor } = this.props;\n\t\treturn yAccessor(d) && (yAccessor(d).bullPower < 0\n\t\t\t\t|| yAccessor(d).bullPower * yAccessor(d).bearPower < 0 // bullPower is +ve and bearPower is -ve\n\t\t\t? Math.min(0, yAccessor(d).bullPower) : undefined);\n\t}\n\tyAccessorForBarBase(xScale, yScale, d) {\n\t\tconst { yAccessor } = this.props;\n\t\tconst y = yAccessor(d) && Math.min(yAccessor(d).bearPower, 0);\n\t\treturn yScale(y);\n\t}\n\tfillForEachBar(d, yAccessorNumber) {\n\t\tconst { bullPowerFill, bearPowerFill } = this.props;\n\t\treturn yAccessorNumber % 2 === 0 ? bullPowerFill : bearPowerFill;\n\t}\n\trender() {\n\t\tconst { className, opacity, stroke,\n\t\t\tstraightLineStroke,\n\t\t\tstraightLineOpacity,\n\t\t\twidthRatio\n\t\t} = this.props;\n\t\tconst { clip } = this.props;\n\n\t\treturn (\n\t\t\t<g className={className}>\n\t\t\t\t<OverlayBarSeries\n\t\t\t\t\tbaseAt={this.yAccessorForBarBase}\n\t\t\t\t\tclassName=\"react-stockcharts-elderray-bar\"\n\t\t\t\t\tstroke={stroke}\n\t\t\t\t\tfill={this.fillForEachBar}\n\t\t\t\t\topacity={opacity}\n\t\t\t\t\twidthRatio={widthRatio}\n\t\t\t\t\tclip={clip}\n\t\t\t\t\tyAccessor={[this.yAccessorBullTop, this.yAccessorBearTop, this.yAccessorBullBottom, this.yAccessorBearBottom]} />\n\t\t\t\t<StraightLine\n\t\t\t\t\tclassName=\"react-stockcharts-elderray-straight-line\"\n\t\t\t\t\tyValue={0}\n\t\t\t\t\tstroke={straightLineStroke}\n\t\t\t\t\topacity={straightLineOpacity} />\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nElderRaySeries.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func,\n\topacity: PropTypes.number,\n\tstroke: PropTypes.bool,\n\tbullPowerFill: PropTypes.string,\n\tbearPowerFill: PropTypes.string,\n\tstraightLineStroke: PropTypes.string,\n\tstraightLineOpacity: PropTypes.number,\n\twidthRatio: PropTypes.number,\n\tclip: PropTypes.bool.isRequired,\n};\n\nElderRaySeries.defaultProps = {\n\tclassName: \"react-stockcharts-elderray-series\",\n\tstraightLineStroke: \"#000000\",\n\tstraightLineOpacity: 0.3,\n\topacity: 0.5,\n\tstroke: true,\n\tbullPowerFill: \"#6BA583\",\n\tbearPowerFill: \"#FF0000\",\n\twidthRatio: 0.8,\n\tclip: true,\n};\n\nexport default ElderRaySeries;\n","\n\nimport { merge } from \"d3-array\";\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { drawOnCanvas2, getBarsSVG2 } from \"./StackedBarSeries\";\nimport { isDefined, isNotDefined, first, functor, plotDataLengthBarWidth } from \"../utils\";\n\nclass OverlayBarSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor } = this.props;\n\t\tconst bars = getBars(this.props, moreProps, yAccessor);\n\n\t\tdrawOnCanvas2(this.props, ctx, bars);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { yAccessor } = this.props;\n\n\t\tconst bars = getBars(this.props, moreProps, yAccessor);\n\t\treturn <g className=\"react-stockcharts-bar-series\">\n\t\t\t{getBarsSVG2(this.props, bars)}\n\t\t</g>;\n\t}\n\trender() {\n\t\tconst { clip } = this.props;\n\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tclip={clip}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nOverlayBarSeries.propTypes = {\n\tbaseAt: PropTypes.oneOfType([\n\t\tPropTypes.number,\n\t\tPropTypes.func,\n\t]).isRequired,\n\tdirection: PropTypes.oneOf([\"up\", \"down\"]).isRequired,\n\tstroke: PropTypes.bool.isRequired,\n\twidthRatio: PropTypes.number.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\tclassName: PropTypes.oneOfType([\n\t\tPropTypes.func, PropTypes.string\n\t]).isRequired,\n\txAccessor: PropTypes.func,\n\tyAccessor: PropTypes.arrayOf(PropTypes.func),\n\txScale: PropTypes.func,\n\tyScale: PropTypes.func,\n\tplotData: PropTypes.array,\n\tclip: PropTypes.bool.isRequired,\n};\n\nOverlayBarSeries.defaultProps = {\n\tbaseAt: (xScale, yScale/* , d*/) => first(yScale.range()),\n\tdirection: \"up\",\n\tclassName: \"bar\",\n\tstroke: false,\n\tfill: \"#4682B4\",\n\topacity: 1,\n\twidthRatio: 0.5,\n\twidth: plotDataLengthBarWidth,\n\tclip: true,\n};\n\nfunction getBars(props, moreProps, yAccessor) {\n\tconst { xScale, xAccessor, chartConfig: { yScale }, plotData } = moreProps;\n\tconst { baseAt, className, fill, stroke } = props;\n\n\tconst getClassName = functor(className);\n\tconst getFill = functor(fill);\n\tconst getBase = functor(baseAt);\n\tconst widthFunctor = functor(props.width);\n\n\tconst width = widthFunctor(props, moreProps);\n\tconst offset = Math.floor(0.5 * width);\n\n\t// console.log(xScale.domain(), yScale.domain());\n\n\tconst bars = plotData\n\t\t.map(d => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet innerBars = yAccessor.map((eachYAccessor, i) => {\n\t\t\t\tconst yValue = eachYAccessor(d);\n\t\t\t\tif (isNotDefined(yValue)) return undefined;\n\n\t\t\t\tconst xValue = xAccessor(d);\n\t\t\t\tconst x = Math.round(xScale(xValue)) - offset;\n\t\t\t\tconst y = yScale(yValue);\n\t\t\t\t// console.log(yValue, y, xValue, x)\n\t\t\t\treturn {\n\t\t\t\t\twidth: offset * 2,\n\t\t\t\t\tx: x,\n\t\t\t\t\ty: y,\n\t\t\t\t\tclassName: getClassName(d, i),\n\t\t\t\t\tstroke: stroke ? getFill(d, i) : \"none\",\n\t\t\t\t\tfill: getFill(d, i),\n\t\t\t\t\ti,\n\t\t\t\t};\n\t\t\t}).filter(yValue => isDefined(yValue));\n\n\t\t\tlet b = getBase(xScale, yScale, d);\n\t\t\tlet h;\n\t\t\tfor (let i = innerBars.length - 1; i >= 0; i--) {\n\t\t\t\th = b - innerBars[i].y;\n\t\t\t\tif (h < 0) {\n\t\t\t\t\tinnerBars[i].y = b;\n\t\t\t\t\th = -1 * h;\n\t\t\t\t}\n\t\t\t\tinnerBars[i].height = h;\n\t\t\t\tb = innerBars[i].y;\n\t\t\t}\n\t\t\treturn innerBars;\n\t\t});\n\n\treturn merge(bars);\n}\n\nexport default OverlayBarSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { ascending, descending, sum, max, merge, zip, histogram as d3Histogram } from \"d3-array\";\nimport { nest } from \"d3-collection\";\nimport { scaleLinear } from \"d3-scale\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { head, last, hexToRGBA, accumulatingWindow, identity, functor } from \"../utils\";\n\nclass VolumeProfileSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { xAccessor, width } = moreProps;\n\t\tconst { rects, sessionBg } = helper(this.props, moreProps, xAccessor, width);\n\n\t\tdrawOnCanvas(ctx, this.props, rects, sessionBg);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, opacity } = this.props;\n\t\tconst { showSessionBackground, sessionBackGround, sessionBackGroundOpacity } = this.props;\n\n\t\tconst { xAccessor, width } = moreProps;\n\t\tconst { rects, sessionBg } = helper(this.props, moreProps, xAccessor, width);\n\n\t\tconst sessionBgSvg = showSessionBackground\n\t\t\t? sessionBg.map((d, idx) => <rect key={idx} {...d} opacity={sessionBackGroundOpacity} fill={sessionBackGround} />)\n\t\t\t: null;\n\n\t\treturn <g className={className}>\n\t\t\t{sessionBgSvg}\n\t\t\t{rects.map((d, i) => <g key={i}>\n\t\t\t\t<rect x={d.x} y={d.y}\n\t\t\t\t\twidth={d.w1} height={d.height}\n\t\t\t\t\tfill={d.fill1} stroke={d.stroke1} fillOpacity={opacity} />\n\t\t\t\t<rect x={d.x + d.w1} y={d.y}\n\t\t\t\t\twidth={d.w2} height={d.height}\n\t\t\t\t\tfill={d.fill2} stroke={d.stroke2} fillOpacity={opacity} />\n\t\t\t</g>)}\n\t\t</g>;\n\t}\n}\n\nVolumeProfileSeries.propTypes = {\n\tclassName: PropTypes.string,\n\topacity: PropTypes.number,\n\tshowSessionBackground: PropTypes.bool,\n\tsessionBackGround: PropTypes.string,\n\tsessionBackGroundOpacity: PropTypes.number,\n};\n\n\nVolumeProfileSeries.defaultProps = {\n\tclassName: \"line \",\n\tbins: 20,\n\topacity: 0.5,\n\tmaxProfileWidthPercent: 50,\n\tfill: ({ type }) => type === \"up\" ? \"#6BA583\" : \"#FF0000\",\n\tstroke: \"#FFFFFF\",\n\tshowSessionBackground: false,\n\tsessionBackGround: \"#4682B4\",\n\tsessionBackGroundOpacity: 0.3,\n\n\tsource: d => d.close,\n\tvolume: d => d.volume,\n\tabsoluteChange: d => d.absoluteChange,\n\tbySession: false,\n\t/* eslint-disable no-unused-vars */\n\tsessionStart: ({ d, i, plotData }) => i > 0 && plotData[i - 1].date.getMonth() !== d.date.getMonth(),\n\t/* eslint-enable no-unused-vars */\n\torient: \"left\",\n\t// // fill: ({ type }) => { var c = type === \"up\" ? \"#6BA583\" : \"#FF0000\"; console.log(type, c); return c },\n\t// stroke: ({ type }) => type === \"up\" ? \"#6BA583\" : \"#FF0000\",\n\t// stroke: \"none\",\n\tpartialStartOK: true,\n\tpartialEndOK: true,\n};\n\nfunction helper(props, moreProps, xAccessor, width) {\n\tconst { xScale: realXScale, chartConfig: { yScale }, plotData } = moreProps;\n\n\tconst { sessionStart, bySession, partialStartOK, partialEndOK } = props;\n\tconst { bins, maxProfileWidthPercent, source, volume, absoluteChange, orient, fill, stroke } = props;\n\n\tconst sessionBuilder = accumulatingWindow()\n\t\t.discardTillStart(!partialStartOK)\n\t\t.discardTillEnd(!partialEndOK)\n\t\t.accumulateTill((d, i) => {\n\t\t\treturn sessionStart({ d, i, ...moreProps });\n\t\t})\n\t\t.accumulator(identity);\n\n\tconst dx = plotData.length > 1 ? realXScale(xAccessor(plotData[1])) - realXScale(xAccessor(head(plotData))) : 0;\n\n\tconst sessions = bySession ? sessionBuilder(plotData) : [plotData];\n\n\tconst allRects = sessions.map(session => {\n\n\t\tconst begin = bySession ? realXScale(xAccessor(head(session))) : 0;\n\t\tconst finish = bySession ? realXScale(xAccessor(last(session))) : width;\n\t\tconst sessionWidth = finish - begin + dx;\n\n\t\t// console.log(session)\n\n\t\t/* var histogram = d3.layout.histogram()\n\t\t\t\t.value(source)\n\t\t\t\t.bins(bins);*/\n\n\t\tconst histogram2 = d3Histogram()\n\t\t\t// .domain(xScale.domain())\n\t\t\t.value(source)\n\t\t\t.thresholds(bins);\n\n\t\t// console.log(bins, histogram(session))\n\t\t// console.log(bins, histogram2(session))\n\t\tconst rollup = nest()\n\t\t\t.key(d => d.direction)\n\t\t\t.sortKeys(orient === \"right\" ? descending : ascending)\n\t\t\t.rollup(leaves => sum(leaves, d => d.volume));\n\n\t\tconst values = histogram2(session);\n\t\t// console.log(\"values\", values)\n\n\t\tconst volumeInBins = values\n\t\t\t.map(arr => arr.map(d => absoluteChange(d) > 0 ? { direction: \"up\", volume: volume(d) } : { direction: \"down\", volume: volume(d) }))\n\t\t\t.map(arr => rollup.entries(arr));\n\n\t\t// console.log(\"volumeInBins\", volumeInBins)\n\t\tconst volumeValues = volumeInBins\n\t\t\t.map(each => sum(each.map(d => d.value)));\n\n\t\t// console.log(\"volumeValues\", volumeValues)\n\t\tconst base = xScale => head(xScale.range());\n\n\t\tconst [start, end] = orient === \"right\"\n\t\t\t? [begin, begin + sessionWidth * maxProfileWidthPercent / 100]\n\t\t\t: [finish, finish - sessionWidth * (100 - maxProfileWidthPercent) / 100];\n\n\t\tconst xScale = scaleLinear()\n\t\t\t.domain([0, max(volumeValues)])\n\t\t\t.range([start, end]);\n\n\t\t// console.log(xScale.domain())\n\n\t\tconst totalVolumes = volumeInBins.map(volumes => {\n\n\t\t\tconst totalVolume = sum(volumes, d => d.value);\n\t\t\tconst totalVolumeX = xScale(totalVolume);\n\t\t\tconst width = base(xScale) - totalVolumeX;\n\t\t\tconst x = width < 0 ? totalVolumeX + width : totalVolumeX;\n\n\t\t\tconst ws = volumes.map(d => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: d.key,\n\t\t\t\t\twidth: d.value * Math.abs(width) / totalVolume,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn { x, ws, totalVolumeX };\n\t\t});\n\t\t// console.log(\"totalVolumes\", totalVolumes)\n\n\t\tconst rects = zip(values, totalVolumes)\n\t\t\t.map(([d, { x, ws }]) => {\n\t\t\t\tconst w1 = ws[0] || { type: \"up\", width: 0 };\n\t\t\t\tconst w2 = ws[1] || { type: \"down\", width: 0 };\n\n\t\t\t\treturn {\n\t\t\t\t\t// y: yScale(d.x + d.dx),\n\t\t\t\t\ty: yScale(d.x1),\n\t\t\t\t\t// height: yScale(d.x - d.dx) - yScale(d.x),\n\t\t\t\t\theight: yScale(d.x1) - yScale(d.x0),\n\t\t\t\t\tx,\n\t\t\t\t\twidth,\n\t\t\t\t\tw1: w1.width,\n\t\t\t\t\tw2: w2.width,\n\t\t\t\t\tstroke1: functor(stroke)(w1),\n\t\t\t\t\tstroke2: functor(stroke)(w2),\n\t\t\t\t\tfill1: functor(fill)(w1),\n\t\t\t\t\tfill2: functor(fill)(w2),\n\t\t\t\t};\n\t\t\t});\n\n\t\t// console.log(\"rects\", rects)\n\n\t\tconst sessionBg = {\n\t\t\tx: begin,\n\t\t\ty: last(rects).y,\n\t\t\theight: head(rects).y - last(rects).y + head(rects).height,\n\t\t\twidth: sessionWidth,\n\t\t};\n\n\t\treturn { rects, sessionBg };\n\t});\n\n\treturn {\n\t\trects: merge(allRects.map(d => d.rects)),\n\t\tsessionBg: allRects.map(d => d.sessionBg),\n\t};\n}\n\n\nfunction drawOnCanvas(ctx, props, rects, sessionBg) {\n\tconst { opacity, sessionBackGround, sessionBackGroundOpacity, showSessionBackground } = props;\n\n\t// var { rects, sessionBg } = helper(props, xScale, yScale, plotData);\n\n\tif (showSessionBackground) {\n\t\tctx.fillStyle = hexToRGBA(sessionBackGround, sessionBackGroundOpacity);\n\n\t\tsessionBg.forEach(each => {\n\t\t\tconst { x, y, height, width } = each;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(x, y, width, height);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t});\n\t}\n\n\trects.forEach(each => {\n\t\tconst { x, y, height, w1, w2, stroke1, stroke2, fill1, fill2 } = each;\n\n\n\t\tif (w1 > 0) {\n\t\t\tctx.fillStyle = hexToRGBA(fill1, opacity);\n\t\t\tif (stroke1 !== \"none\") ctx.strokeStyle = stroke1;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(x, y, w1, height);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\n\t\t\tif (stroke1 !== \"none\") ctx.stroke();\n\t\t}\n\n\t\tif (w2 > 0) {\n\t\t\tctx.fillStyle = hexToRGBA(fill2, opacity);\n\t\t\tif (stroke2 !== \"none\") ctx.strokeStyle = stroke2;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(x + w1, y, w2, height);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\n\t\t\tif (stroke2 !== \"none\") ctx.stroke();\n\t\t}\n\n\t});\n}\n\nexport default VolumeProfileSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas, getMouseCanvas } from \"../GenericComponent\";\n\nimport { isDefined, first, last, hexToRGBA } from \"../utils\";\n\nclass SARSeries extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t\tthis.isHover = this.isHover.bind(this);\n\t}\n\tisHover(moreProps) {\n\t\tconst { mouseXY, currentItem, chartConfig: { yScale } } = moreProps;\n\t\tconst { yAccessor } = this.props;\n\t\tconst y = mouseXY[1];\n\t\tconst currentY = yScale(yAccessor(currentItem));\n\t\treturn y < currentY + 5 && y > currentY - 5;\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { yAccessor, fill, opacity } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale }, hovering } = moreProps;\n\n\t\tconst width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)));\n\n\t\tconst d = (width / plotData.length) * 0.5 / 2;\n\t\tconst radius = Math.min(2, Math.max(0.5, d)) + (hovering ? 2 : 0);\n\n\t\tplotData.forEach(each => {\n\t\t\tconst centerX = xScale(xAccessor(each));\n\t\t\tconst centerY = yScale(yAccessor(each));\n\t\t\tconst color = yAccessor(each) > each.close\n\t\t\t\t? fill.falling\n\t\t\t\t: fill.rising;\n\n\t\t\tctx.fillStyle = hexToRGBA(color, opacity);\n\t\t\tctx.strokeStyle = color;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.ellipse(centerX, centerY, radius, radius, 0, 0, 2 * Math.PI);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tctx.stroke();\n\t\t});\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className, yAccessor } = this.props;\n\t\tconst { xAccessor, plotData, xScale, chartConfig: { yScale } } = moreProps;\n\t\t// console.log(moreProps);\n\n\t\treturn <g className={className}>\n\t\t\t{plotData\n\t\t\t\t.filter(each => isDefined(yAccessor(each)))\n\t\t\t\t.map((each, idx) => {\n\t\t\t\t\treturn <circle key={idx} cx={xScale(xAccessor(each))}\n\t\t\t\t\t\tcy={yScale(yAccessor(each))} r={3} fill=\"green\" />;\n\t\t\t\t})}\n\t\t</g>;\n\t}\n\n\trender() {\n\t\tconst { highlightOnHover } = this.props;\n\t\tconst hoverProps = highlightOnHover\n\t\t\t? {\n\t\t\t\tisHover: this.isHover,\n\t\t\t\tdrawOn: [\"mousemove\", \"pan\"],\n\t\t\t\tcanvasToDraw: getMouseCanvas\n\t\t\t}\n\t\t\t: {\n\t\t\t\tdrawOn: [\"pan\"],\n\t\t\t\tcanvasToDraw: getAxisCanvas\n\t\t\t};\n\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\n\t\t\tonClickWhenHover={this.props.onClick}\n\t\t\tonDoubleClickWhenHover={this.props.onDoubleClick}\n\t\t\tonContextMenuWhenHover={this.props.onContextMenu}\n\t\t\t{...hoverProps}\n\t\t/>;\n\t}\n}\n\nSARSeries.propTypes = {\n\tclassName: PropTypes.string,\n\tfill: PropTypes.object.isRequired,\n\tyAccessor: PropTypes.func.isRequired,\n\topacity: PropTypes.number.isRequired,\n\tonClick: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n\tonContextMenu: PropTypes.func,\n\thighlightOnHover: PropTypes.bool,\n};\n\nSARSeries.defaultProps = {\n\tclassName: \"react-stockcharts-sar\",\n\tfill: {\n\t\tfalling: \"#4682B4\",\n\t\trising: \"#15EC2E\",\n\t},\n\thighlightOnHover: true,\n\topacity: 0.2,\n\tonClick: function(e) { console.log(\"Click\", e); },\n\tonDoubleClick: function(e) { console.log(\"Double Click\", e); },\n\tonContextMenu: function(e) { console.log(\"Right Click\", e); },\n};\n\nexport default SARSeries;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Axis from \"./Axis\";\n\nclass XAxis extends Component {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\t\tthis.axisZoomCallback = this.axisZoomCallback.bind(this);\n\t}\n\taxisZoomCallback(newXDomain) {\n\t\tconst { xAxisZoom } = this.context;\n\t\txAxisZoom(newXDomain);\n\t}\n\trender() {\n\t\tconst { showTicks } = this.props;\n\t\tconst moreProps = helper(this.props, this.context);\n\n\t\treturn <Axis {...this.props} {...moreProps} x\n\t\t\tzoomEnabled={this.props.zoomEnabled && showTicks}\n\t\t\taxisZoomCallback={this.axisZoomCallback}\n\t\t\tzoomCursorClassName=\"react-stockcharts-ew-resize-cursor\" />;\n\t}\n}\n\nXAxis.propTypes = {\n\taxisAt: PropTypes.oneOfType([\n\t\tPropTypes.oneOf([\"top\", \"bottom\", \"middle\"]),\n\t\tPropTypes.number\n\t]).isRequired,\n\torient: PropTypes.oneOf([\"top\", \"bottom\"]).isRequired,\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\tzoomEnabled: PropTypes.bool,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nXAxis.defaultProps = {\n\tshowTicks: true,\n\tshowTickLabel: true,\n\tshowDomain: true,\n\tclassName: \"react-stockcharts-x-axis\",\n\tticks: 10,\n\touterTickSize: 0,\n\tfill: \"none\",\n\tstroke: \"#000000\", // x axis stroke color\n\tstrokeWidth: 1,\n\topacity: 1, // x axis opacity\n\tdomainClassName: \"react-stockcharts-axis-domain\",\n\tinnerTickSize: 5,\n\ttickPadding: 6,\n\ttickStroke: \"#000000\", // tick/grid stroke\n\ttickStrokeOpacity: 1,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfontWeight: 400,\n\txZoomHeight: 25,\n\tzoomEnabled: true,\n\tgetMouseDelta: (startXY, mouseXY) => startXY[0] - mouseXY[0],\n};\n\nXAxis.contextTypes = {\n\tchartConfig: PropTypes.object.isRequired,\n\txAxisZoom: PropTypes.func.isRequired,\n};\n\nfunction helper(props, context) {\n\tconst { axisAt, xZoomHeight, orient } = props;\n\tconst { chartConfig: { width, height } } = context;\n\n\tlet axisLocation;\n\tconst x = 0, w = width, h = xZoomHeight;\n\n\tif (axisAt === \"top\") axisLocation = 0;\n\telse if (axisAt === \"bottom\") axisLocation = height;\n\telse if (axisAt === \"middle\") axisLocation = (height) / 2;\n\telse axisLocation = axisAt;\n\n\tconst y = (orient === \"top\") ? -xZoomHeight : 0;\n\n\treturn {\n\t\ttransform: [0, axisLocation],\n\t\trange: [0, width],\n\t\tgetScale: getXScale,\n\t\tbg: { x, y, h, w },\n\t};\n}\n\nfunction getXScale(moreProps) {\n\tconst { xScale: scale, width } = moreProps;\n\n\tif (scale.invert) {\n\t\tconst trueRange = [0, width];\n\t\tconst trueDomain = trueRange.map(scale.invert);\n\t\treturn scale.copy()\n\t\t\t.domain(trueDomain)\n\t\t\t.range(trueRange);\n\t}\n\n\treturn scale;\n}\n\n\nexport default XAxis;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { select, event as d3Event, mouse, touches } from \"d3-selection\";\nimport { mean } from \"d3-array\";\n\nimport {\n\tfirst,\n\tlast,\n\tisDefined,\n\tnoop,\n\tmousePosition,\n\td3Window,\n\tMOUSEMOVE,\n\tMOUSEUP,\n\tTOUCHMOVE,\n\tTOUCHEND,\n\ttouchPosition,\n\tgetTouchProps,\n\tsign,\n} from \"../utils\";\n\nclass AxisZoomCapture extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleDragStartMouse = this.handleDragStartMouse.bind(this);\n\t\tthis.handleDragStartTouch = this.handleDragStartTouch.bind(this);\n\t\tthis.handleDrag = this.handleDrag.bind(this);\n\t\tthis.handleDragEnd = this.handleDragEnd.bind(this);\n\t\tthis.handleRightClick = this.handleRightClick.bind(this);\n\t\tthis.saveNode = this.saveNode.bind(this);\n\t\tthis.state = {\n\t\t\tstartPosition: null\n\t\t};\n\t}\n\tsaveNode(node) {\n\t\tthis.node = node;\n\t}\n\thandleRightClick(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst { onContextMenu } = this.props;\n\n\t\tconst mouseXY = mousePosition(e, this.node.getBoundingClientRect());\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null);\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\n\t\tonContextMenu(mouseXY, e);\n\n\t\tthis.contextMenuClicked = true;\n\t}\n\thandleDragStartMouse(e) {\n\t\tthis.mouseInteraction = true;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(MOUSEMOVE, this.handleDrag, false)\n\t\t\t\t.on(MOUSEUP, this.handleDragEnd, false);\n\n\t\t\tconst startXY = mousePosition(e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\thandleDragStartTouch(e) {\n\t\tthis.mouseInteraction = false;\n\n\t\tconst { getScale, getMoreProps } = this.props;\n\t\tconst startScale = getScale(getMoreProps());\n\t\tthis.dragHappened = false;\n\n\t\tif (e.touches.length === 1 && startScale.invert) {\n\t\t\tselect(d3Window(this.node))\n\t\t\t\t.on(TOUCHMOVE, this.handleDrag)\n\t\t\t\t.on(TOUCHEND, this.handleDragEnd);\n\n\t\t\tconst startXY = touchPosition(getTouchProps(e.touches[0]), e);\n\n\t\t\tthis.setState({\n\t\t\t\tstartPosition: {\n\t\t\t\t\tstartXY,\n\t\t\t\t\tstartScale,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\thandleDrag() {\n\t\tconst { startPosition } = this.state;\n\t\tconst { getMouseDelta, inverted } = this.props;\n\n\t\tthis.dragHappened = true;\n\t\tif (isDefined(startPosition)) {\n\t\t\tconst { startScale } = startPosition;\n\t\t\tconst { startXY } = startPosition;\n\n\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t? mouse(this.node)\n\t\t\t\t: touches(this.node)[0];\n\n\t\t\tconst diff = getMouseDelta(startXY, mouseXY);\n\n\t\t\tconst center = mean(startScale.range());\n\n\t\t\tconst tempRange = startScale.range()\n\t\t\t\t.map(d => inverted ? d - sign(d - center) * diff : d + sign(d - center) * diff);\n\n\t\t\tconst newDomain = tempRange.map(startScale.invert);\n\n\t\t\tif (sign(last(startScale.range()) - first(startScale.range())) === sign(last(tempRange) - first(tempRange))) {\n\n\t\t\t\tconst { axisZoomCallback } = this.props;\n\t\t\t\t// console.log(startXScale.domain(), newXDomain)\n\t\t\t\taxisZoomCallback(newDomain);\n\t\t\t}\n\t\t}\n\t}\n\thandleDragEnd() {\n\n\t\tif (!this.dragHappened) {\n\t\t\tif (this.clicked) {\n\t\t\t\tconst e = d3Event;\n\t\t\t\tconst mouseXY = this.mouseInteraction\n\t\t\t\t\t? mouse(this.node)\n\t\t\t\t\t: touches(this.node)[0];\n\t\t\t\tconst { onDoubleClick } = this.props;\n\n\t\t\t\tonDoubleClick(mouseXY, e);\n\t\t\t} else {\n\t\t\t\tthis.clicked = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clicked = false;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\n\t\tselect(d3Window(this.node))\n\t\t\t.on(MOUSEMOVE, null)\n\t\t\t.on(MOUSEUP, null)\n\t\t\t.on(TOUCHMOVE, null)\n\t\t\t.on(TOUCHEND, null);\n\n\t\tthis.setState({\n\t\t\tstartPosition: null,\n\t\t});\n\t}\n\trender() {\n\t\tconst { bg, className, zoomCursorClassName } = this.props;\n\n\t\tconst cursor = isDefined(this.state.startPosition)\n\t\t\t? zoomCursorClassName\n\t\t\t: \"react-stockcharts-default-cursor\";\n\n\t\treturn <rect\n\t\t\tclassName={`react-stockcharts-enable-interaction ${cursor} ${className}`}\n\t\t\tref={this.saveNode}\n\t\t\tx={bg.x} y={bg.y} opacity={0} height={bg.h} width={bg.w}\n\t\t\tonContextMenu={this.handleRightClick}\n\t\t\tonMouseDown={this.handleDragStartMouse}\n\t\t\tonTouchStart={this.handleDragStartTouch}\n\t\t/>;\n\t}\n}\n\nAxisZoomCapture.propTypes = {\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowDomain: PropTypes.bool,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\taxisZoomCallback: PropTypes.func,\n\tinverted: PropTypes.bool,\n\tbg: PropTypes.object.isRequired,\n\tzoomCursorClassName: PropTypes.string.isRequired,\n\tgetMoreProps: PropTypes.func.isRequired,\n\tgetScale: PropTypes.func.isRequired,\n\tgetMouseDelta: PropTypes.func.isRequired,\n\tonDoubleClick: PropTypes.func.isRequired,\n\tonContextMenu: PropTypes.func.isRequired,\n};\n\nAxisZoomCapture.defaultProps = {\n\tonDoubleClick: noop,\n\tonContextMenu: noop,\n\tinverted: true\n};\n\nexport default AxisZoomCapture;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Axis from \"./Axis\";\n\nclass YAxis extends Component {\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\t\tthis.axisZoomCallback = this.axisZoomCallback.bind(this);\n\t}\n\taxisZoomCallback(newYDomain) {\n\t\tconst { chartId, yAxisZoom } = this.context;\n\t\tyAxisZoom(chartId, newYDomain);\n\t}\n\trender() {\n\t\tconst { zoomEnabled, ...moreProps } = helper(this.props, this.context);\n\t\treturn <Axis {...this.props} {...moreProps}\n\t\t\tzoomEnabled={this.props.zoomEnabled && zoomEnabled}\n\t\t\tedgeClip\n\t\t\taxisZoomCallback={this.axisZoomCallback}\n\t\t\tzoomCursorClassName=\"react-stockcharts-ns-resize-cursor\" />;\n\t}\n}\n\nYAxis.propTypes = {\n\taxisAt: PropTypes.oneOfType([\n\t\tPropTypes.oneOf([\"left\", \"right\", \"middle\"]),\n\t\tPropTypes.number\n\t]).isRequired,\n\torient: PropTypes.oneOf([\"left\", \"right\"]).isRequired,\n\tinnerTickSize: PropTypes.number,\n\touterTickSize: PropTypes.number,\n\ttickFormat: PropTypes.func,\n\ttickPadding: PropTypes.number,\n\ttickSize: PropTypes.number,\n\tticks: PropTypes.number,\n\tyZoomWidth: PropTypes.number,\n\ttickValues: PropTypes.array,\n\tshowTicks: PropTypes.bool,\n\tclassName: PropTypes.string,\n\tzoomEnabled: PropTypes.bool,\n\tonContextMenu: PropTypes.func,\n\tonDoubleClick: PropTypes.func,\n};\n\nYAxis.defaultProps = {\n\tshowTicks: true,\n\tshowTickLabel: true,\n\tshowDomain: true,\n\tclassName: \"react-stockcharts-y-axis\",\n\tticks: 10,\n\touterTickSize: 0,\n\tdomainClassName: \"react-stockcharts-axis-domain\",\n\tfill: \"none\",\n\tstroke: \"#FFFFFF\",\n\tstrokeWidth: 1,\n\topacity: 1,\n\tinnerTickSize: 5,\n\ttickPadding: 6,\n\ttickStroke: \"#000000\",\n\ttickStrokeOpacity: 1,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n\tfontWeight: 400,\n\tyZoomWidth: 40,\n\tzoomEnabled: true,\n\tgetMouseDelta: (startXY, mouseXY) => startXY[1] - mouseXY[1],\n};\n\nYAxis.contextTypes = {\n\tyAxisZoom: PropTypes.func.isRequired,\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\tchartConfig: PropTypes.object.isRequired,\n};\n\nfunction helper(props, context) {\n\tconst { axisAt, yZoomWidth, orient } = props;\n\tconst { chartConfig: { width, height } } = context;\n\n\tlet axisLocation;\n\tconst y = 0, w = yZoomWidth, h = height;\n\n\tif (axisAt === \"left\") {\n\t\taxisLocation = 0;\n\t} else if (axisAt === \"right\") {\n\t\taxisLocation = width;\n\t} else if (axisAt === \"middle\") {\n\t\taxisLocation = (width) / 2;\n\t} else {\n\t\taxisLocation = axisAt;\n\t}\n\n\tconst x = (orient === \"left\") ? -yZoomWidth : 0;\n\n\treturn {\n\t\ttransform: [axisLocation, 0],\n\t\trange: [0, height],\n\t\tgetScale: getYScale,\n\t\tbg: { x, y, h, w },\n\t\tzoomEnabled: context.chartConfig.yPan,\n\t};\n}\n\nfunction getYScale(moreProps) {\n\tconst { yScale: scale, flipYScale, height } = moreProps.chartConfig;\n\tif (scale.invert) {\n\t\tconst trueRange = flipYScale ? [0, height] : [height, 0];\n\t\tconst trueDomain = trueRange.map(scale.invert);\n\t\treturn scale.copy()\n\t\t\t.domain(trueDomain)\n\t\t\t.range(trueRange);\n\t}\n\treturn scale;\n}\n\nexport default YAxis;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"d3-format\";\n\nimport { drawOnCanvas, renderSVG } from \"./EdgeCoordinateV3\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\n\nimport { first, last, isDefined, functor, noop, strokeDashTypes } from \"../utils\";\n\nclass EdgeIndicator extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst edge = helper(this.props, moreProps);\n\t\tconst props = {\n\t\t\t...this.props,\n\t\t\t...edge,\n\t\t};\n\t\tdrawOnCanvas(ctx, props);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst edge = helper(this.props, moreProps);\n\t\tconst props = {\n\t\t\t...this.props,\n\t\t\t...edge,\n\t\t};\n\t\treturn renderSVG(props);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tedgeClip\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nEdgeIndicator.propTypes = {\n\tyAccessor: PropTypes.func,\n\n\ttype: PropTypes.oneOf([\"horizontal\"]),\n\tclassName: PropTypes.string,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func,\n\t]),\n\tlineStroke: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func,\n\t]),\n\ttextFill: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func,\n\t]),\n\titemType: PropTypes.oneOf([\"first\", \"last\"]).isRequired,\n\torient: PropTypes.oneOf([\"left\", \"right\"]),\n\tedgeAt: PropTypes.oneOf([\"left\", \"right\"]),\n\tdisplayFormat: PropTypes.func,\n\trectHeight: PropTypes.number,\n\trectWidth: PropTypes.number,\n\tarrowWidth: PropTypes.number,\n\tlineStrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n};\n\nEdgeIndicator.defaultProps = {\n\tclassName: \"react-stockcharts-edgeindicator\",\n\n\ttype: \"horizontal\",\n\torient: \"left\",\n\tedgeAt: \"left\",\n\ttextFill: \"#FFFFFF\",\n\tdisplayFormat: format(\".2f\"),\n\tyAxisPad: 0,\n\trectHeight: 20,\n\trectWidth: 50,\n\tarrowWidth: 10,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 13,\n\tdx: 0,\n\thideLine: false,\n\tfill: \"#8a8a8a\",\n\topacity: 1,\n\n\tstroke: noop,\n\tstrokeOpacity: 1,\n\tstrokeWidth: 3,\n\tlineStroke: \"#000000\",\n\tlineOpacity: 0.3,\n\tlineStrokeDasharray: \"ShortDash\",\n};\n\nfunction helper(props, moreProps) {\n\tconst { itemType, yAccessor } = props;\n\tconst { plotData } = moreProps;\n\n\tconst item = itemType === \"first\"\n\t\t? first(plotData, yAccessor)\n\t\t: last(plotData, yAccessor);\n\n\t// var currentItem = ChartDataUtil.getCurrentItemForChartNew(currentItems, forChart);\n\tconst edge = isDefined(item)\n\t\t? getEdge(props, moreProps, item)\n\t\t: null;\n\n\treturn edge;\n}\n\nfunction getEdge(props, moreProps, item) {\n\tconst { type: edgeType, displayFormat, edgeAt, yAxisPad, orient, lineStroke } = props;\n\n\tconst { yAccessor, fill, textFill, rectHeight, rectWidth, arrowWidth } = props;\n\tconst { fontFamily, fontSize } = props;\n\tconst { stroke } = props;\n\n\tconst { xScale, chartConfig: { yScale }, xAccessor, width } = moreProps;\n\n\tconst yValue = yAccessor(item),\n\t\txValue = xAccessor(item);\n\n\tconst x1 = Math.round(xScale(xValue)),\n\t\ty1 = Math.round(yScale(yValue));\n\n\tconst [left, right] = [0, width];\n\tconst edgeX = edgeAt === \"left\"\n\t\t? left - yAxisPad\n\t\t: right + yAxisPad;\n\n\treturn {\n\t\t// ...props,\n\t\tcoordinate: displayFormat(yValue),\n\t\tshow: true,\n\t\ttype: edgeType,\n\t\torient,\n\t\tedgeAt: edgeX,\n\t\tfill: functor(fill)(item),\n\t\tlineStroke: functor(lineStroke)(item),\n\t\tstroke: functor(stroke)(item),\n\t\tfontFamily, fontSize,\n\t\ttextFill: functor(textFill)(item),\n\t\trectHeight, rectWidth, arrowWidth,\n\t\tx1,\n\t\ty1,\n\t\tx2: right,\n\t\ty2: y1,\n\t};\n}\n\nexport default EdgeIndicator;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { isNotDefined } from \"../utils\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nclass CurrentCoordinate extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst circle = helper(this.props, moreProps);\n\t\tif (!circle) return null;\n\n\t\tctx.fillStyle = circle.fill;\n\t\tctx.beginPath();\n\t\tctx.arc(circle.x, circle.y, circle.r, 0, 2 * Math.PI, false);\n\t\tctx.fill();\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\n\t\tconst circle = helper(this.props, moreProps);\n\t\tif (!circle) return null;\n\n\t\tconst fillColor = circle.fill instanceof Function ? circle.fill(moreProps.currentItem) : circle.fill;\n\n\t\treturn (\n\t\t\t<circle className={className} cx={circle.x} cy={circle.y} r={circle.r} fill={fillColor} />\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getMouseCanvas}\n\t\t\tdrawOn={[\"mousemove\", \"pan\"]}\n\t\t/>;\n\t}\n}\n\nCurrentCoordinate.propTypes = {\n\tyAccessor: PropTypes.func,\n\tr: PropTypes.number.isRequired,\n\tclassName: PropTypes.string,\n};\n\n\nCurrentCoordinate.defaultProps = {\n\tr: 3,\n\tclassName: \"react-stockcharts-current-coordinate\",\n};\n\nfunction helper(props, moreProps) {\n\tconst { fill, yAccessor, r } = props;\n\n\tconst { show, xScale, chartConfig: { yScale }, currentItem, xAccessor } = moreProps;\n\n\t// console.log(show);\n\tif (!show || isNotDefined(currentItem)) return null;\n\n\tconst xValue = xAccessor(currentItem);\n\tconst yValue = yAccessor(currentItem);\n\n\tif (isNotDefined(yValue)) return null;\n\n\t// console.log(chartConfig);\n\tconst x = Math.round(xScale(xValue));\n\tconst y = Math.round(yScale(yValue));\n\n\treturn { x, y, r, fill };\n}\n\nexport default CurrentCoordinate;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { drawOnCanvas, renderSVG } from \"./EdgeCoordinateV3\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nimport { isNotDefined } from \"../utils\";\n\nclass MouseCoordinateX extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst props = helper(this.props, moreProps);\n\t\tif (isNotDefined(props)) return null;\n\n\t\tdrawOnCanvas(ctx, props);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst props = helper(this.props, moreProps);\n\t\tif (isNotDefined(props)) return null;\n\n\t\treturn renderSVG(props);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tclip={false}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getMouseCanvas}\n\t\t\tdrawOn={[\"mousemove\", \"pan\", \"drag\"]}\n\t\t/>;\n\t}\n}\n\nMouseCoordinateX.propTypes = {\n\tdisplayFormat: PropTypes.func.isRequired,\n\tyAxisPad: PropTypes.number,\n\trectWidth: PropTypes.number,\n\trectHeight: PropTypes.number,\n\torient: PropTypes.oneOf([\"bottom\", \"top\", \"left\", \"right\"]),\n\tat: PropTypes.oneOf([\"bottom\", \"top\", \"left\", \"right\"]),\n\tfill: PropTypes.string,\n\topacity: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\ttextFill: PropTypes.string,\n\tsnapX: PropTypes.bool\n};\n\nfunction customX(props, moreProps) {\n\tconst { xScale, xAccessor, currentItem, mouseXY } = moreProps;\n\tconst { snapX } = props;\n\tconst x = snapX\n\t\t? xScale(xAccessor(currentItem))\n\t\t: mouseXY[0];\n\n\tconst { displayXAccessor } = moreProps;\n\tconst { displayFormat } = props;\n\tconst coordinate = snapX\n\t\t? displayFormat(displayXAccessor(currentItem))\n\t\t: displayFormat(xScale.invert(x));\n\treturn { x, coordinate };\n}\n\nMouseCoordinateX.defaultProps = {\n\tyAxisPad: 0,\n\trectWidth: 80,\n\trectHeight: 20,\n\n\t// rectRadius: 5,\n\t// stroke: \"#684F1D\",\n\tstrokeOpacity: 1,\n\tstrokeWidth: 1,\n\n\torient: \"bottom\",\n\tat: \"bottom\",\n\n\tfill: \"#525252\",\n\topacity: 1,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 13,\n\ttextFill: \"#FFFFFF\",\n\tsnapX: true,\n\tcustomX: customX,\n};\n\nfunction helper(props, moreProps) {\n\tconst { show, currentItem } = moreProps;\n\tconst { chartConfig: { height } } = moreProps;\n\n\tif (isNotDefined(currentItem)) return null;\n\n\tconst { customX } = props;\n\n\tconst { orient, at } = props;\n\tconst { stroke, strokeOpacity, strokeWidth } = props;\n\tconst { rectRadius, rectWidth, rectHeight } = props;\n\tconst { fill, opacity, fontFamily, fontSize, textFill } = props;\n\n\tconst edgeAt = (at === \"bottom\")\n\t\t? height\n\t\t: 0;\n\n\tconst {\n\t\tx,\n\t\tcoordinate\n\t } = customX(props, moreProps);\n\n\tconst type = \"vertical\";\n\tconst y1 = 0, y2 = height;\n\tconst hideLine = true;\n\n\tconst coordinateProps = {\n\t\tcoordinate,\n\t\tshow,\n\t\ttype,\n\t\torient,\n\t\tedgeAt,\n\t\thideLine,\n\t\tfill, opacity, fontFamily, fontSize, textFill,\n\t\tstroke, strokeOpacity, strokeWidth,\n\t\trectWidth,\n\t\trectHeight,\n\t\trectRadius,\n\t\tarrowWidth: 0,\n\t\tx1: x,\n\t\tx2: x,\n\t\ty1,\n\t\ty2\n\t};\n\treturn coordinateProps;\n}\n\nexport default MouseCoordinateX;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\n\nconst propTypes = {\n\txPosition: PropTypes.func,\n\tdrawCoordinate: PropTypes.func,\n\tdisplayFormat: PropTypes.func.isRequired,\n\tat: PropTypes.oneOf([\"bottom\", \"top\"]),\n\torient: PropTypes.oneOf([\"bottom\", \"top\"]),\n\ttext: PropTypes.shape({\n\t\tfontStyle: PropTypes.string,\n\t\tfontWeight: PropTypes.string,\n\t\tfontFamily: PropTypes.string,\n\t\tfontSize: PropTypes.number,\n\t\tfill: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n\t}),\n\tbg: PropTypes.shape({\n\t\tfill: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n\t\tstroke: PropTypes.string,\n\t\tstrokeWidth: PropTypes.number,\n\t\tpadding: PropTypes.shape({\n\t\t\tleft: PropTypes.number,\n\t\t\tright: PropTypes.number,\n\t\t\ttop: PropTypes.number,\n\t\t\tbottom: PropTypes.number\n\t\t}),\n\t}),\n\tdx: PropTypes.number,\n\tdy: PropTypes.number\n};\n\nconst defaultProps = {\n\txPosition,\n\tdrawCoordinate,\n\tat: \"bottom\",\n\torient: \"bottom\",\n\n\ttext: {\n\t\tfontStyle: \"\",\n\t\tfontWeight: \"\",\n\t\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\t\tfontSize: 13,\n\t\tfill: \"rgb(35, 35, 35)\"\n\t},\n\tbg: {\n\t\tfill: \"rgb(255, 255, 255)\",\n\t\tstroke: \"rgb(35, 35, 35)\",\n\t\tstrokeWidth: 1,\n\t\tpadding: {\n\t\t\tleft: 7,\n\t\t\tright: 7,\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\tdx: 7,\n\tdy: 7\n};\n\nclass MouseCoordinateXV2 extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst { show, currentItem } = moreProps;\n\t\tconst { drawCoordinate } = this.props;\n\n\t\tif (show && currentItem != null) {\n\t\t\tconst shape = getXCoordinateInfo(ctx, this.props, moreProps);\n\t\t\tdrawCoordinate(ctx, shape, this.props, moreProps);\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<GenericChartComponent\n\t\t\t\tclip={false}\n\t\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\t\tcanvasToDraw={getMouseCanvas}\n\t\t\t\tdrawOn={[\"mousemove\", \"pan\", \"drag\"]}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nMouseCoordinateXV2.defaultProps = defaultProps;\nMouseCoordinateXV2.propTypes = propTypes;\n\n\nfunction xPosition(props, moreProps) {\n\tconst { currentItem, xAccessor } = moreProps;\n\treturn xAccessor(currentItem);\n}\nfunction getXCoordinateInfo(ctx, props, moreProps) {\n\tconst { xPosition } = props;\n\tconst xValue = xPosition(props, moreProps);\n\tconst { at, displayFormat } = props;\n\tconst { text } = props;\n\tconst { xScale, chartConfig: { height } } = moreProps;\n\tctx.font = `${text.fontStyle} ${text.fontWeight} ${text.fontSize}px ${text.fontFamily}`;\n\n\tconst t = displayFormat(xValue);\n\tconst textWidth = ctx.measureText(t).width;\n\n\tconst y = at === \"bottom\" ? height : 0;\n\tconst x = Math.round(xScale(xValue));\n\n\treturn {\n\t\tx,\n\t\ty,\n\t\ttextWidth,\n\t\ttext: t\n\t};\n}\n\nfunction drawCoordinate(\n\tctx,\n\tshape,\n\tprops,\n\tmoreProps\n) {\n\tconst { x, y, textWidth, text } = shape;\n\tconst { orient, dx, dy } = props;\n\n\tconst {\n\t\tbg: { padding, fill, stroke, strokeWidth },\n\t\ttext: { fontSize, fill: textFill }\n\t} = props;\n\n\tctx.textAlign = \"center\";\n\n\tconst sign = orient === \"top\" ? -1 : 1;\n\tconst halfWidth = Math.round(textWidth / 2 + padding.right);\n\tconst height = Math.round(fontSize + padding.top + padding.bottom);\n\n\tctx.strokeStyle = typeof stroke === \"function\" ? stroke(moreProps, ctx) : stroke;\n\tctx.fillStyle = typeof fill === \"function\" ? fill(moreProps, ctx) : fill;\n\tctx.lineWidth = typeof strokeWidth === \"function\" ? strokeWidth(moreProps) : strokeWidth;\n\n\tctx.beginPath();\n\n\tctx.moveTo(x, y);\n\tctx.lineTo(x + dx, y + sign * dy);\n\tctx.lineTo(x + halfWidth, y + sign * dy);\n\tctx.lineTo(x + halfWidth, y + sign * (dy + height));\n\tctx.lineTo(x - halfWidth, y + sign * (dy + height));\n\tctx.lineTo(x - halfWidth, y + sign * dy);\n\tctx.lineTo(x - dx, y + sign * dy);\n\tctx.closePath();\n\tctx.stroke();\n\tctx.fill();\n\n\tctx.beginPath();\n\tctx.fillStyle = typeof textFill === \"function\" ? textFill(moreProps, ctx) : textFill;\n\n\tctx.textBaseline = orient === \"top\" ? \"alphabetic\" : \"hanging\";\n\tconst pad = orient === \"top\" ? padding.bottom : padding.top;\n\n\tctx.fillText(text, x, y + sign * (dy + pad + 2));\n}\n\nexport default MouseCoordinateXV2;","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { drawOnCanvas, renderSVG } from \"./EdgeCoordinateV3\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getMouseCanvas } from \"../GenericComponent\";\n\nimport { isNotDefined } from \"../utils\";\n\nclass MouseCoordinateY extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst props = helper(this.props, moreProps);\n\t\tif (isNotDefined(props)) return null;\n\n\t\tdrawOnCanvas(ctx, props);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst props = helper(this.props, moreProps);\n\t\tif (isNotDefined(props)) return null;\n\n\t\treturn renderSVG(props);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getMouseCanvas}\n\t\t\tdrawOn={[\"mousemove\", \"pan\", \"drag\"]}\n\t\t/>;\n\t}\n}\n\nMouseCoordinateY.propTypes = {\n\tdisplayFormat: PropTypes.func.isRequired,\n\tyAxisPad: PropTypes.number,\n\trectWidth: PropTypes.number,\n\trectHeight: PropTypes.number,\n\torient: PropTypes.oneOf([\"bottom\", \"top\", \"left\", \"right\"]),\n\tat: PropTypes.oneOf([\"bottom\", \"top\", \"left\", \"right\"]),\n\tdx: PropTypes.number,\n\tfill: PropTypes.string,\n\topacity: PropTypes.number,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\ttextFill: PropTypes.string,\n};\n\nMouseCoordinateY.defaultProps = {\n\tyAxisPad: 0,\n\trectWidth: 50,\n\trectHeight: 20,\n\torient: \"left\",\n\tat: \"left\",\n\tdx: 0,\n\tarrowWidth: 10,\n\tfill: \"#525252\",\n\topacity: 1,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 13,\n\ttextFill: \"#FFFFFF\",\n\n\t// stroke: \"#684F1D\",\n\tstrokeOpacity: 1,\n\tstrokeWidth: 1,\n};\n\nfunction helper(props, moreProps) {\n\tconst { chartId } = moreProps;\n\tconst { currentCharts, mouseXY } = moreProps;\n\n\tif (isNotDefined(mouseXY)) return null;\n\tif (currentCharts.indexOf(chartId) < 0) return null;\n\n\tconst { show } = moreProps;\n\tif (!show) return null;\n\n\tconst y = mouseXY[1];\n\tconst { chartConfig: { yScale } } = moreProps;\n\tconst { displayFormat } = props;\n\n\tconst coordinate = displayFormat(yScale.invert(y));\n\n\treturn getYCoordinate(y, coordinate, props, moreProps);\n}\n\nexport function getYCoordinate(y, displayValue, props, moreProps) {\n\tconst { width } = moreProps;\n\n\tconst { orient, at, rectWidth, rectHeight, dx } = props;\n\tconst { fill, opacity, fontFamily, fontSize, textFill, arrowWidth } = props;\n\tconst { stroke, strokeOpacity, strokeWidth } = props;\n\n\tconst x1 = 0, x2 = width;\n\tconst edgeAt = (at === \"right\")\n\t\t? width\n\t\t: 0;\n\n\tconst type = \"horizontal\";\n\tconst hideLine = true;\n\n\tconst coordinateProps = {\n\t\tcoordinate: displayValue,\n\t\tshow: true,\n\t\ttype,\n\t\torient,\n\t\tedgeAt,\n\t\thideLine,\n\t\tfill,\n\t\topacity,\n\n\t\tfontFamily,\n\t\tfontSize,\n\t\ttextFill,\n\n\t\tstroke,\n\t\tstrokeOpacity,\n\t\tstrokeWidth,\n\n\t\trectWidth,\n\t\trectHeight,\n\n\t\tarrowWidth,\n\t\tdx,\n\t\tx1,\n\t\tx2,\n\t\ty1: y,\n\t\ty2: y,\n\t};\n\treturn coordinateProps;\n}\n\nexport default MouseCoordinateY;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport GenericComponent, { getMouseCanvas } from \"../GenericComponent\";\n\nimport { hexToRGBA, isDefined, isNotDefined, strokeDashTypes, getStrokeDasharray } from \"../utils\";\n\nclass CrossHairCursor extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst lines = helper(this.props, moreProps);\n\n\t\tif (isDefined(lines)) {\n\n\t\t\tconst { margin, ratio } = this.context;\n\t\t\tconst originX = 0.5 * ratio + margin.left;\n\t\t\tconst originY = 0.5 * ratio + margin.top;\n\n\t\t\tctx.save();\n\t\t\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tctx.scale(ratio, ratio);\n\n\t\t\tctx.translate(originX, originY);\n\n\t\t\tlines.forEach(line => {\n\t\t\t\tconst dashArray = getStrokeDasharray(line.strokeDasharray).split(\",\").map(d => +d);\n\n\t\t\t\tctx.strokeStyle = hexToRGBA(line.stroke, line.opacity);\n\t\t\t\tctx.setLineDash(dashArray);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(line.x1, line.y1);\n\t\t\t\tctx.lineTo(line.x2, line.y2);\n\t\t\t\tctx.stroke();\n\t\t\t});\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { className } = this.props;\n\t\tconst lines = helper(this.props, moreProps);\n\n\t\tif (isNotDefined(lines)) return null;\n\n\t\treturn (\n\t\t\t<g className={`react-stockcharts-crosshair ${className}`}>\n\t\t\t\t{lines.map(({ strokeDasharray, ...rest }, idx) =>\n\t\t\t\t\t<line\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tstrokeDasharray={getStrokeDasharray(strokeDasharray)}\n\t\t\t\t\t\t{...rest} />)}\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tclip={false}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getMouseCanvas}\n\t\t\tdrawOn={[\"mousemove\", \"pan\", \"drag\"]}\n\t\t/>;\n\t}\n}\n\nCrossHairCursor.propTypes = {\n\tclassName: PropTypes.string,\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n};\n\nCrossHairCursor.contextTypes = {\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n\t// xScale for getting update event upon pan end, this is needed to get past the PureComponent shouldComponentUpdate\n\t// xScale: PropTypes.func.isRequired,\n};\n\nfunction customX(props, moreProps) {\n\tconst { xScale, xAccessor, currentItem, mouseXY } = moreProps;\n\tconst { snapX } = props;\n\tconst x = snapX\n\t\t? Math.round(xScale(xAccessor(currentItem)))\n\t\t: mouseXY[0];\n\treturn x;\n}\n\n\nCrossHairCursor.defaultProps = {\n\tstroke: \"#000000\",\n\topacity: 0.3,\n\tstrokeDasharray: \"ShortDash\",\n\tsnapX: true,\n\tcustomX,\n};\n\nfunction helper(props, moreProps) {\n\tconst {\n\t\tmouseXY, currentItem, show, height, width\n\t} = moreProps;\n\n\tconst { customX, stroke, opacity, strokeDasharray } = props;\n\n\tif (!show || isNotDefined(currentItem)) return null;\n\n\tconst line1 = {\n\t\tx1: 0,\n\t\tx2: width,\n\t\ty1: mouseXY[1],\n\t\ty2: mouseXY[1],\n\t\tstroke, strokeDasharray, opacity,\n\t};\n\tconst x = customX(props, moreProps);\n\n\tconst line2 = {\n\t\tx1: x,\n\t\tx2: x,\n\t\ty1: 0,\n\t\ty2: height,\n\t\tstroke, strokeDasharray, opacity,\n\t};\n\treturn [line1, line2];\n}\n\nexport default CrossHairCursor;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { drawOnCanvas, renderSVG } from \"./EdgeCoordinateV3\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport { getAxisCanvas } from \"../GenericComponent\";\nimport { functor, strokeDashTypes } from \"../utils\";\n\nclass PriceCoordinate extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst props = helper(this.props, moreProps);\n\t\tdrawOnCanvas(ctx, props);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst props = helper(this.props, moreProps);\n\t\treturn renderSVG(props);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tcanvasToDraw={getAxisCanvas}\n\t\t\tdrawOn={[\"pan\"]}\n\t\t/>;\n\t}\n}\n\nPriceCoordinate.propTypes = {\n\tdisplayFormat: PropTypes.func.isRequired,\n\tyAxisPad: PropTypes.number,\n\trectWidth: PropTypes.number,\n\trectHeight: PropTypes.number,\n\torient: PropTypes.oneOf([\"bottom\", \"top\", \"left\", \"right\"]),\n\tat: PropTypes.oneOf([\"bottom\", \"top\", \"left\", \"right\"]),\n\tprice: PropTypes.number,\n\tdx: PropTypes.number,\n\tarrowWidth: PropTypes.number,\n\topacity: PropTypes.number,\n\tlineOpacity: PropTypes.number,\n\tlineStroke: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tfill: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func,\n\t]),\n\tstrokeDasharray: PropTypes.oneOf(strokeDashTypes),\n\tstroke: PropTypes.string,\n\tstrokeOpacity: PropTypes.number,\n\tstrokeWidth: PropTypes.number,\n\ttextFill: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func,\n\t]),\n};\n\nPriceCoordinate.defaultProps = {\n\tyAxisPad: 0,\n\trectWidth: 50,\n\trectHeight: 20,\n\torient: \"left\",\n\tat: \"left\",\n\tprice: 0,\n\tdx: 0,\n\tarrowWidth: 0,\n\tfill: \"#BAB8b8\",\n\topacity: 1,\n\tlineOpacity: 0.2,\n\tlineStroke: \"#000000\",\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 13,\n\ttextFill: \"#FFFFFF\",\n\tstrokeOpacity: 1,\n\tstrokeWidth: 1,\n\tstrokeDasharray: \"Solid\",\n};\n\nfunction helper(props, moreProps) {\n\tconst { width } = moreProps;\n\tconst { chartConfig: { yScale } } = moreProps;\n\tconst [lowerYValue, upperYValue] = yScale.domain();\n\n\tconst { price, stroke, strokeDasharray, strokeOpacity, strokeWidth } = props;\n\tconst { orient, at, rectWidth, rectHeight, displayFormat, dx } = props;\n\tconst { fill, opacity, fontFamily, fontSize, textFill, arrowWidth, lineOpacity, lineStroke } = props;\n\n\tconst x1 = 0, x2 = width;\n\tconst edgeAt = (at === \"right\")\n\t\t? width\n\t\t: 0;\n\n\tconst type = \"horizontal\";\n\n\tconst y = yScale(price);\n\tconst show = (price <= upperYValue && price >= lowerYValue);\n\n\tconst coordinate = displayFormat(yScale.invert(y));\n\tconst hideLine = false;\n\n\tconst coordinateProps = {\n\t\tcoordinate,\n\t\tshow,\n\t\ttype,\n\t\torient,\n\t\tedgeAt,\n\t\thideLine,\n\t\tlineOpacity,\n\t\tlineStroke,\n\t\tlineStrokeDasharray: strokeDasharray,\n\t\tstroke,\n\t\tstrokeOpacity,\n\t\tstrokeWidth,\n\t\tfill: functor(fill)(price),\n\t\ttextFill: functor(textFill)(price),\n\t\topacity, fontFamily, fontSize,\n\t\trectWidth,\n\t\trectHeight,\n\t\tarrowWidth,\n\t\tdx,\n\t\tx1,\n\t\tx2,\n\t\ty1: y,\n\t\ty2: y,\n\t};\n\treturn coordinateProps;\n}\n\nexport default PriceCoordinate;\n","\n\nimport { format } from \"d3-format\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\nimport { functor } from \"../utils\";\n\nclass MACDTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { onClick, fontFamily, fontSize, displayFormat, className } = this.props;\n\t\tconst { yAccessor, options, appearance, labelFill } = this.props;\n\t\tconst { displayValuesFor } = this.props;\n\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\t\tconst macdValue = currentItem && yAccessor(currentItem);\n\n\t\tconst macd = (macdValue && macdValue.macd && displayFormat(macdValue.macd)) || \"n/a\";\n\t\tconst signal = (macdValue && macdValue.signal && displayFormat(macdValue.signal)) || \"n/a\";\n\t\tconst divergence = (macdValue && macdValue.divergence && displayFormat(macdValue.divergence)) || \"n/a\";\n\n\t\tconst { origin: originProp } = this.props;\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\n\t\treturn (\n\t\t\t<g className={className} transform={`translate(${ x }, ${ y })`} onClick={onClick}>\n\t\t\t\t<ToolTipText x={0} y={0}\n\t\t\t\t\tfontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>MACD (</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={appearance.stroke.macd}>{options.slow}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>, </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={appearance.stroke.macd}>{options.fast}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>): </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={appearance.stroke.macd}>{macd}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}> Signal (</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={appearance.stroke.signal}>{options.signal}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>): </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={appearance.stroke.signal}>{signal}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}> Divergence: </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={appearance.fill.divergence}>{divergence}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\nMACDTooltip.propTypes = {\n\torigin: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]).isRequired,\n\tclassName: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tlabelFill: PropTypes.string,\n\n\tyAccessor: PropTypes.func.isRequired,\n\toptions: PropTypes.shape({\n\t\tslow: PropTypes.number.isRequired,\n\t\tfast: PropTypes.number.isRequired,\n\t\tsignal: PropTypes.number.isRequired,\n\t}).isRequired,\n\tappearance: PropTypes.shape({\n\t\tstroke: {\n\t\t\tmacd: PropTypes.string.isRequired,\n\t\t\tsignal: PropTypes.string.isRequired,\n\t\t}.isRequired,\n\t\tfill: PropTypes.shape({\n\t\t\tdivergence: PropTypes.string.isRequired,\n\t\t}).isRequired,\n\t}).isRequired,\n\tdisplayFormat: PropTypes.func.isRequired,\n\tdisplayValuesFor: PropTypes.func,\n\tonClick: PropTypes.func,\n};\n\nMACDTooltip.defaultProps = {\n\torigin: [0, 0],\n\tdisplayFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\tclassName: \"react-stockcharts-tooltip\",\n};\n\nexport default MACDTooltip;\n// export default MACDTooltip;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"d3-format\";\nimport { timeFormat } from \"d3-time-format\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport { isDefined, functor } from \"../utils\";\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\n\nclass OHLCTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { displayValuesFor } = this.props;\n\t\tconst {\n\t\t\txDisplayFormat,\n\t\t\taccessor,\n\t\t\tvolumeFormat,\n\t\t\tohlcFormat,\n\t\t\tpercentFormat,\n\t\t\tdisplayTexts\n\t\t} = this.props;\n\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\t\tconst { displayXAccessor } = moreProps;\n\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\n\t\tlet displayDate, open, high, low, close, volume, percent;\n\t\tdisplayDate = open = high = low = close = volume = percent = displayTexts.na;\n\n\t\tif (isDefined(currentItem) && isDefined(accessor(currentItem))) {\n\t\t\tconst item = accessor(currentItem);\n\t\t\tvolume = isDefined(item.volume) ? volumeFormat(item.volume) : displayTexts.na;\n\n\t\t\tdisplayDate = xDisplayFormat(displayXAccessor(item));\n\t\t\topen = ohlcFormat(item.open);\n\t\t\thigh = ohlcFormat(item.high);\n\t\t\tlow = ohlcFormat(item.low);\n\t\t\tclose = ohlcFormat(item.close);\n\t\t\tpercent = percentFormat((item.close - item.open) / item.open);\n\t\t}\n\n\t\tconst { origin: originProp } = this.props;\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\n\t\tconst itemsToDisplay = {\n\t\t\tdisplayDate,\n\t\t\topen,\n\t\t\thigh,\n\t\t\tlow,\n\t\t\tclose,\n\t\t\tpercent,\n\t\t\tvolume,\n\t\t\tx,\n\t\t\ty\n\t\t};\n\t\treturn this.props.children(this.props, moreProps, itemsToDisplay);\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<GenericChartComponent\n\t\t\t\tclip={false}\n\t\t\t\tsvgDraw={this.renderSVG}\n\t\t\t\tdrawOn={[\"mousemove\"]}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nOHLCTooltip.propTypes = {\n\tclassName: PropTypes.string,\n\taccessor: PropTypes.func,\n\txDisplayFormat: PropTypes.func,\n\tchildren: PropTypes.func,\n\tvolumeFormat: PropTypes.func,\n\tpercentFormat: PropTypes.func,\n\tohlcFormat: PropTypes.func,\n\torigin: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tonClick: PropTypes.func,\n\tdisplayValuesFor: PropTypes.func,\n\ttextFill: PropTypes.string,\n\tlabelFill: PropTypes.string,\n\tdisplayTexts: PropTypes.object,\n};\n\nconst displayTextsDefault = {\n\td: \"Date: \",\n\to: \" O: \",\n\th: \" H: \",\n\tl: \" L: \",\n\tc: \" C: \",\n\tv: \" Vol: \",\n\tna: \"n/a\"\n};\n\nOHLCTooltip.defaultProps = {\n\taccessor: d => {\n\t\treturn {\n\t\t\tdate: d.date,\n\t\t\topen: d.open,\n\t\t\thigh: d.high,\n\t\t\tlow: d.low,\n\t\t\tclose: d.close,\n\t\t\tvolume: d.volume\n\t\t};\n\t},\n\txDisplayFormat: timeFormat(\"%Y-%m-%d\"),\n\tvolumeFormat: format(\".4s\"),\n\tpercentFormat: format(\".2%\"),\n\tohlcFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\torigin: [0, 0],\n\tchildren: defaultDisplay,\n\tdisplayTexts: displayTextsDefault,\n};\n\nfunction defaultDisplay(props, moreProps, itemsToDisplay) {\n\n\t/* eslint-disable */\n\tconst {\n\t\tclassName,\n\t\ttextFill,\n\t\tlabelFill,\n\t\tonClick,\n\t\tfontFamily,\n\t\tfontSize,\n\t\tdisplayTexts\n\t} = props;\n\t/* eslint-enable */\n\n\tconst {\n\t\tdisplayDate,\n\t\topen,\n\t\thigh,\n\t\tlow,\n\t\tclose,\n\t\tvolume,\n\t\tx,\n\t\ty\n\t} = itemsToDisplay;\n\treturn (\n\t\t<g\n\t\t\tclassName={`react-stockcharts-tooltip-hover ${className}`}\n\t\t\ttransform={`translate(${x}, ${y})`}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<ToolTipText\n\t\t\t\tx={0}\n\t\t\t\ty={0}\n\t\t\t\tfontFamily={fontFamily}\n\t\t\t\tfontSize={fontSize}\n\t\t\t>\n\t\t\t\t<ToolTipTSpanLabel\n\t\t\t\t\tfill={labelFill}\n\t\t\t\t\tkey=\"label\"\n\t\t\t\t\tx={0}\n\t\t\t\t\tdy=\"5\">{displayTexts.d}</ToolTipTSpanLabel>\n\t\t\t\t<tspan key=\"value\" fill={textFill}>{displayDate}</tspan>\n\t\t\t\t<ToolTipTSpanLabel fill={labelFill} key=\"label_O\">{displayTexts.o}</ToolTipTSpanLabel>\n\t\t\t\t<tspan key=\"value_O\" fill={textFill}>{open}</tspan>\n\t\t\t\t<ToolTipTSpanLabel fill={labelFill} key=\"label_H\">{displayTexts.h}</ToolTipTSpanLabel>\n\t\t\t\t<tspan key=\"value_H\" fill={textFill}>{high}</tspan>\n\t\t\t\t<ToolTipTSpanLabel fill={labelFill} key=\"label_L\">{displayTexts.l}</ToolTipTSpanLabel>\n\t\t\t\t<tspan key=\"value_L\" fill={textFill}>{low}</tspan>\n\t\t\t\t<ToolTipTSpanLabel fill={labelFill} key=\"label_C\">{displayTexts.c}</ToolTipTSpanLabel>\n\t\t\t\t<tspan key=\"value_C\" fill={textFill}>{close}</tspan>\n\t\t\t\t<ToolTipTSpanLabel fill={labelFill} key=\"label_Vol\">{displayTexts.v}</ToolTipTSpanLabel>\n\t\t\t\t<tspan key=\"value_Vol\" fill={textFill}>{volume}</tspan>\n\t\t\t</ToolTipText>\n\t\t</g>\n\t);\n}\n\nexport default OHLCTooltip;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"d3-format\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\nimport { isDefined, identity, noop, functor } from \"../utils\";\n\nclass SingleValueTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\n\t\tconst { onClick, fontFamily, fontSize, labelFill, valueFill, className } = this.props;\n\t\tconst { xDisplayFormat, yDisplayFormat, xLabel, yLabel, xAccessor, yAccessor } = this.props;\n\t\tconst { displayValuesFor } = this.props;\n\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\n\t\tconst xDisplayValue = isDefined(currentItem) && isDefined(xAccessor(currentItem)) ? xDisplayFormat(xAccessor(currentItem)) : \"n/a\";\n\t\tconst yDisplayValue = isDefined(currentItem) && isDefined(yAccessor(currentItem)) ? yDisplayFormat(yAccessor(currentItem)) : \"n/a\";\n\n\t\tconst { origin: originProp } = this.props;\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\n\t\treturn (\n\t\t\t<g className={className} transform={`translate(${ x }, ${ y })`} onClick={onClick}>\n\t\t\t\t<ToolTipText x={0} y={0}\n\t\t\t\t\tfontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t\t{ xLabel ? <ToolTipTSpanLabel x={0} dy=\"5\" fill={labelFill}>{`${xLabel}: `}</ToolTipTSpanLabel> : null}\n\t\t\t\t\t{ xLabel ? <tspan fill={valueFill}>{`${xDisplayValue} `}</tspan> : null}\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{`${yLabel}: `}</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={valueFill} >{yDisplayValue}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\nSingleValueTooltip.propTypes = {\n\txDisplayFormat: PropTypes.func,\n\tyDisplayFormat: PropTypes.func.isRequired,\n\txLabel: PropTypes.string,\n\tyLabel: PropTypes.oneOfType([\n\t\tPropTypes.string,\n\t\tPropTypes.func\n\t]).isRequired,\n\tlabelFill: PropTypes.string.isRequired,\n\tvalueFill: PropTypes.string,\n\torigin: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]).isRequired,\n\tclassName: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tonClick: PropTypes.func,\n\tdisplayValuesFor: PropTypes.func,\n\txAccessor: PropTypes.func,\n\tyAccessor: PropTypes.func,\n};\n\nSingleValueTooltip.defaultProps = {\n\torigin: [0, 0],\n\tlabelFill: \"#4682B4\",\n\tvalueFill: \"#000000\",\n\tyDisplayFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\txAccessor: noop,\n\tyAccessor: identity,\n\tclassName: \"react-stockcharts-tooltip\",\n};\n\nexport default SingleValueTooltip;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"d3-format\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\n\nimport { functor } from \"../utils\";\n\nclass SingleMAToolTip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\thandleClick(e) {\n\t\tconst { onClick, forChart, options } = this.props;\n\t\tonClick({ chartId: forChart, ...options }, e);\n\t}\n\trender() {\n\t\tconst { textFill, labelFill } = this.props;\n\t\tconst translate = \"translate(\" + this.props.origin[0] + \", \" + this.props.origin[1] + \")\";\n\t\treturn (\n\t\t\t<g transform={translate}>\n\t\t\t\t<line x1={0} y1={2} x2={0} y2={28} stroke={this.props.color} strokeWidth=\"4px\"/>\n\t\t\t\t<ToolTipText x={5} y={11}\n\t\t\t\t\tfontFamily={this.props.fontFamily} fontSize={this.props.fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{this.props.displayName}</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan x=\"5\" dy=\"15\" fill={textFill}>{this.props.value}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t\t<rect x={0} y={0} width={55} height={30}\n\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\tfill=\"none\" stroke=\"none\" />\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nSingleMAToolTip.propTypes = {\n\torigin: PropTypes.array.isRequired,\n\tcolor: PropTypes.string.isRequired,\n\tdisplayName: PropTypes.string.isRequired,\n\tvalue: PropTypes.string.isRequired,\n\tonClick: PropTypes.func,\n\tfontFamily: PropTypes.string,\n\ttextFill: PropTypes.string,\n\tlabelFill: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tforChart: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\toptions: PropTypes.object.isRequired,\n};\n\nclass MovingAverageTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { displayValuesFor } = this.props;\n\n\t\tconst { chartId } = moreProps;\n\t\tconst { chartConfig } = moreProps;\n\n\t\tconst { className, onClick, width, fontFamily, fontSize, textFill, labelFill } = this.props;\n\t\tconst { origin: originProp, displayFormat, options } = this.props;\n\t\tconst { chartConfig: { height } } = moreProps;\n\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\t\tconst config = chartConfig;\n\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\t\tconst [ox, oy] = config.origin;\n\n\t\treturn (\n\t\t\t<g transform={`translate(${ ox + x }, ${ oy + y })`} className={className}>\n\t\t\t\t{options\n\t\t\t\t\t.map((each, idx) => {\n\t\t\t\t\t\tconst yValue = currentItem && each.yAccessor(currentItem);\n\n\t\t\t\t\t\tconst tooltipLabel = `${each.type} (${each.windowSize})`;\n\t\t\t\t\t\tconst yDisplayValue = yValue ? displayFormat(yValue) : \"n/a\";\n\t\t\t\t\t\treturn <SingleMAToolTip\n\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\torigin={[width * idx, 0]}\n\t\t\t\t\t\t\tcolor={each.stroke}\n\t\t\t\t\t\t\tdisplayName={tooltipLabel}\n\t\t\t\t\t\t\tvalue={yDisplayValue}\n\t\t\t\t\t\t\toptions={each}\n\t\t\t\t\t\t\tforChart={chartId}\n\t\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t\t\tfontFamily={fontFamily}\n\t\t\t\t\t\t\tfontSize={fontSize}\n\t\t\t\t\t\t\ttextFill={textFill}\n\t\t\t\t\t\t\tlabelFill={labelFill}\n\t\t\t\t\t\t/>;\n\t\t\t\t\t})}\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\nMovingAverageTooltip.propTypes = {\n\tclassName: PropTypes.string,\n\tdisplayFormat: PropTypes.func.isRequired,\n\torigin: PropTypes.array.isRequired,\n\tdisplayValuesFor: PropTypes.func,\n\tonClick: PropTypes.func,\n\ttextFill: PropTypes.string,\n\tlabelFill: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\twidth: PropTypes.number,\n\toptions: PropTypes.arrayOf(PropTypes.shape({\n\t\tyAccessor: PropTypes.func.isRequired,\n\t\ttype: PropTypes.string.isRequired,\n\t\tstroke: PropTypes.string.isRequired,\n\t\twindowSize: PropTypes.number.isRequired,\n\t\techo: PropTypes.any,\n\t})),\n};\n\nMovingAverageTooltip.defaultProps = {\n\tclassName: \"react-stockcharts-tooltip react-stockcharts-moving-average-tooltip\",\n\tdisplayFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\torigin: [0, 10],\n\twidth: 65,\n};\n\nexport default MovingAverageTooltip;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"d3-format\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport { isDefined, functor } from \"../utils\";\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\n\nclass BollingerBandTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { onClick, displayFormat, yAccessor, options, textFill, labelFill } = this.props;\n\t\tconst { displayValuesFor } = this.props;\n\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\n\t\tlet top, middle, bottom;\n\t\ttop = middle = bottom = \"n/a\";\n\n\t\tif (isDefined(currentItem)\n\t\t\t\t&& isDefined(yAccessor(currentItem))) {\n\t\t\tconst item = yAccessor(currentItem);\n\t\t\ttop = displayFormat(item.top);\n\t\t\tmiddle = displayFormat(item.middle);\n\t\t\tbottom = displayFormat(item.bottom);\n\t\t}\n\n\t\tconst { origin: originProp } = this.props;\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\n\t\tconst { sourcePath, windowSize, multiplier, movingAverageType } = options;\n\t\tconst tooltipLabel = `BB(${sourcePath}, ${windowSize}, ${multiplier}, ${movingAverageType}): `;\n\t\tconst tooltipValue = `${top}, ${middle}, ${bottom}`;\n\t\treturn (\n\t\t\t<g transform={`translate(${ x }, ${ y })`}\n\t\t\t\tclassName={this.props.className} onClick={onClick}>\n\t\t\t\t<ToolTipText x={0} y={0}\n\t\t\t\t\tfontFamily={this.props.fontFamily} fontSize={this.props.fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{tooltipLabel}</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={textFill}>{tooltipValue}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\nBollingerBandTooltip.propTypes = {\n\tclassName: PropTypes.string,\n\tyAccessor: PropTypes.func.isRequired,\n\tdisplayValuesFor: PropTypes.func,\n\tdisplayFormat: PropTypes.func.isRequired,\n\torigin: PropTypes.array.isRequired,\n\tonClick: PropTypes.func,\n\toptions: PropTypes.shape({\n\t\tsourcePath: PropTypes.string.isRequired,\n\t\twindowSize: PropTypes.number.isRequired,\n\t\tmultiplier: PropTypes.number.isRequired,\n\t\tmovingAverageType: PropTypes.string.isRequired,\n\t}).isRequired,\n\ttextFill: PropTypes.string,\n\tlabelFill: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n};\n\nBollingerBandTooltip.defaultProps = {\n\tclassName: \"react-stockcharts-tooltip react-stockcharts-bollingerband-tooltip\",\n\tdisplayFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\torigin: [0, 10],\n};\n\nexport default BollingerBandTooltip;\n","\n\nimport { format } from \"d3-format\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport { isDefined, functor } from \"../utils\";\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\n\nclass RSITooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { onClick, fontFamily, fontSize, yAccessor, displayFormat, className } = this.props;\n\t\tconst { options, labelFill, textFill } = this.props;\n\t\tconst { displayValuesFor } = this.props;\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\t\tconst rsi = isDefined(currentItem) && yAccessor(currentItem);\n\t\tconst value = (rsi && displayFormat(rsi)) || \"n/a\";\n\n\t\tconst { origin: originProp } = this.props;\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\n\t\tconst tooltipLabel = `RSI (${options.windowSize}): `;\n\t\treturn (\n\t\t\t<g className={className} transform={`translate(${ x }, ${ y })`} onClick={onClick}>\n\t\t\t\t<ToolTipText x={0} y={0}\n\t\t\t\t\tfontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{tooltipLabel}</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={textFill}>{value}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\nRSITooltip.propTypes = {\n\torigin: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]).isRequired,\n\toptions: PropTypes.shape({\n\t\twindowSize: PropTypes.number.isRequired,\n\t}).isRequired,\n\tclassName: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tonClick: PropTypes.func,\n\tyAccessor: PropTypes.func.isRequired,\n\tdisplayFormat: PropTypes.func.isRequired,\n\tdisplayValuesFor: PropTypes.func,\n\ttextFill: PropTypes.string,\n\tlabelFill: PropTypes.string,\n};\n\nRSITooltip.defaultProps = {\n\tdisplayFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\torigin: [0, 0],\n\tclassName: \"react-stockcharts-tooltip\",\n};\n\nexport default RSITooltip;","\n\nimport { format } from \"d3-format\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\n\nimport { functor } from \"../utils\";\n\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\n\nclass StochasticTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t}\n\trenderSVG(moreProps) {\n\t\tconst { onClick, fontFamily, fontSize, yAccessor, displayFormat, label } = this.props;\n\t\tconst { className, options, appearance, labelFill } = this.props;\n\t\tconst { displayValuesFor } = this.props;\n\t\tconst { chartConfig: { width, height } } = moreProps;\n\n\t\tconst currentItem = displayValuesFor(this.props, moreProps);\n\t\tconst { stroke } = appearance;\n\t\tconst stochastic = currentItem && yAccessor(currentItem);\n\n\t\tconst K = (stochastic && stochastic.K && displayFormat(stochastic.K)) || \"n/a\";\n\t\tconst D = (stochastic && stochastic.D && displayFormat(stochastic.D)) || \"n/a\";\n\n\t\tconst { origin: originProp } = this.props;\n\t\tconst origin = functor(originProp);\n\t\tconst [x, y] = origin(width, height);\n\n\t\treturn (\n\t\t\t<g className={className} transform={`translate(${ x }, ${ y })`} onClick={onClick}>\n\t\t\t\t<ToolTipText x={0} y={0} fontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{`${ label } %K(`}</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={stroke.kLine}>{`${options.windowSize}, ${options.kWindowSize}`}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>): </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={stroke.kLine}>{K}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}> %D (</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={stroke.dLine}>{options.dWindowSize}</tspan>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>): </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={stroke.dLine}>{D}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\nStochasticTooltip.propTypes = {\n\torigin: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]).isRequired,\n\tclassName: PropTypes.string,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\tlabelFill: PropTypes.string,\n\n\tonClick: PropTypes.func,\n\tyAccessor: PropTypes.func.isRequired,\n\toptions: PropTypes.shape({\n\t\twindowSize: PropTypes.number.isRequired,\n\t\tkWindowSize: PropTypes.number.isRequired,\n\t\tdWindowSize: PropTypes.number.isRequired,\n\t}).isRequired,\n\tappearance: PropTypes.shape({\n\t\tstroke: {\n\t\t\tdLine: PropTypes.string.isRequired,\n\t\t\tkLine: PropTypes.string.isRequired,\n\t\t}.isRequired,\n\t}).isRequired,\n\tdisplayFormat: PropTypes.func.isRequired,\n\tdisplayValuesFor: PropTypes.func,\n\tlabel: PropTypes.string.isRequired,\n};\n\nStochasticTooltip.defaultProps = {\n\tdisplayFormat: format(\".2f\"),\n\tdisplayValuesFor: displayValuesFor,\n\torigin: [0, 0],\n\tclassName: \"react-stockcharts-tooltip\",\n\tlabel: \"STO\",\n};\n\nexport default StochasticTooltip;\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport GenericComponent from \"../GenericComponent\";\nimport { sum } from \"d3-array\";\n\nimport { first, last, isNotDefined, isDefined, hexToRGBA } from \"../utils\";\n\nclass HoverTooltip extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.renderSVG = this.renderSVG.bind(this);\n\t\tthis.drawOnCanvas = this.drawOnCanvas.bind(this);\n\t}\n\tdrawOnCanvas(ctx, moreProps) {\n\t\tconst pointer = helper(this.props, moreProps, ctx);\n\t\tconst { height } = moreProps;\n\n\t\tif (isNotDefined(pointer)) return null;\n\t\tdrawOnCanvas(ctx, this.props, this.context, pointer, height, moreProps);\n\t}\n\trender() {\n\t\treturn <GenericComponent\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tcanvasDraw={this.drawOnCanvas}\n\t\t\tdrawOn={[\"mousemove\", \"pan\"/* , \"mouseleave\" */]}\n\t\t/>;\n\t}\n\trenderSVG(moreProps) {\n\t\tconst pointer = helper(this.props, moreProps);\n\n\t\tif (isNotDefined(pointer)) return null;\n\n\t\tconst { bgFill, bgOpacity, backgroundShapeSVG, tooltipSVG } = this.props;\n\t\tconst { bgheight, bgwidth } = this.props;\n\t\tconst { height } = moreProps;\n\n\t\tconst { x, y, content, centerX, pointWidth, bgSize } = pointer;\n\n\t\tconst bgShape = isDefined(bgwidth) && isDefined(bgheight)\n\t\t\t? { width: bgwidth, height: bgheight }\n\t\t\t: bgSize;\n\n\t\treturn (\n\t\t\t<g>\n\t\t\t\t<rect x={centerX - pointWidth / 2}\n\t\t\t\t\ty={0}\n\t\t\t\t\twidth={pointWidth}\n\t\t\t\t\theight={height}\n\t\t\t\t\tfill={bgFill}\n\t\t\t\t\topacity={bgOpacity} />\n\t\t\t\t<g className=\"react-stockcharts-tooltip-content\" transform={`translate(${x}, ${y})`}>\n\t\t\t\t\t{backgroundShapeSVG(this.props, bgShape)}\n\t\t\t\t\t{tooltipSVG(this.props, content)}\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t);\n\t}\n}\n\nHoverTooltip.propTypes = {\n\tchartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\tyAccessor: PropTypes.func,\n\ttooltipSVG: PropTypes.func,\n\tbackgroundShapeSVG: PropTypes.func,\n\tbgwidth: PropTypes.number,\n\tbgheight: PropTypes.number,\n\tbgFill: PropTypes.string.isRequired,\n\tbgOpacity: PropTypes.number.isRequired,\n\ttooltipContent: PropTypes.func.isRequired,\n\torigin: PropTypes.oneOfType([\n\t\tPropTypes.array,\n\t\tPropTypes.func\n\t]).isRequired,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n};\n\nHoverTooltip.contextTypes = {\n\tmargin: PropTypes.object.isRequired,\n\tratio: PropTypes.number.isRequired,\n};\n\nHoverTooltip.defaultProps = {\n\t// bgwidth: 150,\n\t// bgheight: 50,\n\ttooltipSVG: tooltipSVG,\n\ttooltipCanvas: tooltipCanvas,\n\torigin: origin,\n\tfill: \"#D4E2FD\",\n\tbgFill: \"#D4E2FD\",\n\tbgOpacity: 0.5,\n\tstroke: \"#9B9BFF\",\n\tfontFill: \"#000000\",\n\topacity: 0.8,\n\tbackgroundShapeSVG: backgroundShapeSVG,\n\tbackgroundShapeCanvas: backgroundShapeCanvas,\n\tfontFamily: \"Helvetica Neue, Helvetica, Arial, sans-serif\",\n\tfontSize: 12,\n};\n\nconst PADDING = 5;\nconst X = 10;\nconst Y = 10;\n\n\n/* eslint-disable react/prop-types */\nfunction backgroundShapeSVG({ fill, stroke, opacity }, { height, width }) {\n\treturn <rect\n\t\theight={height}\n\t\twidth={width}\n\t\tfill={fill}\n\t\topacity={opacity}\n\t\tstroke={stroke} />;\n}\n\nfunction tooltipSVG({ fontFamily, fontSize, fontFill }, content) {\n\tconst tspans = [];\n\tconst startY = Y + fontSize * 0.9;\n\n\tfor (let i = 0; i < content.y.length; i++) {\n\t\tconst y = content.y[i];\n\t\tconst textY = startY + (fontSize * (i + 1));\n\n\t\ttspans.push(<tspan key={`L-${i}`} x={X} y={textY} fill={y.stroke}>{y.label}</tspan>);\n\t\ttspans.push(<tspan key={i}>: </tspan>);\n\t\ttspans.push(<tspan key={`V-${i}`}>{y.value}</tspan>);\n\t}\n\treturn <text fontFamily={fontFamily} fontSize={fontSize} fill={fontFill}>\n\t\t<tspan x={X} y={startY}>{content.x}</tspan>\n\t\t{tspans}\n\t</text>;\n}\n/* eslint-enable react/prop-types */\n\nfunction backgroundShapeCanvas(props, { width, height }, ctx) {\n\tconst { fill, stroke, opacity } = props;\n\n\tctx.fillStyle = hexToRGBA(fill, opacity);\n\tctx.strokeStyle = stroke;\n\tctx.beginPath();\n\tctx.rect(0, 0, width, height);\n\tctx.fill();\n\tctx.stroke();\n}\n\nfunction tooltipCanvas({ fontFamily, fontSize, fontFill }, content, ctx) {\n\tconst startY = Y + fontSize * 0.9;\n\tctx.font = `${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = fontFill;\n\tctx.textAlign = \"left\";\n\tctx.fillText(content.x, X, startY);\n\n\tfor (let i = 0; i < content.y.length; i++) {\n\t\tconst y = content.y[i];\n\t\tconst textY = startY + (fontSize * (i + 1));\n\t\tctx.fillStyle = y.stroke || fontFill;\n\t\tctx.fillText(y.label, X, textY);\n\n\t\tctx.fillStyle = fontFill;\n\t\tctx.fillText(\": \" + y.value, X + ctx.measureText(y.label).width, textY);\n\t}\n}\n\nfunction drawOnCanvas(ctx, props, context, pointer, height) {\n\n\tconst { margin, ratio } = context;\n\tconst { bgFill, bgOpacity } = props;\n\tconst { backgroundShapeCanvas, tooltipCanvas } = props;\n\n\tconst originX = 0.5 * ratio + margin.left;\n\tconst originY = 0.5 * ratio + margin.top;\n\n\tctx.save();\n\n\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\tctx.scale(ratio, ratio);\n\n\tctx.translate(originX, originY);\n\n\tconst { x, y, content, centerX, pointWidth, bgSize } = pointer;\n\n\tctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n\tctx.beginPath();\n\tctx.rect(centerX - pointWidth / 2, 0, pointWidth, height);\n\tctx.fill();\n\n\tctx.translate(x, y);\n\tbackgroundShapeCanvas(props, bgSize, ctx);\n\ttooltipCanvas(props, content, ctx);\n\n\tctx.restore();\n}\n\nfunction calculateTooltipSize({ fontFamily, fontSize, fontFill }, content, ctx) {\n\tif (isNotDefined(ctx)) {\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tctx = canvas.getContext(\"2d\");\n\t}\n\n\tctx.font = `${fontSize}px ${fontFamily}`;\n\tctx.fillStyle = fontFill;\n\tctx.textAlign = \"left\";\n\n\tconst measureText = str => ({\n\t\twidth: ctx.measureText(str).width,\n\t\theight: fontSize,\n\t});\n\n\tconst { width, height } = content.y\n\t\t.map(({ label, value }) => measureText(`${label}: ${value}`))\n\t\t// Sum all y and x sizes (begin with x label size)\n\t\t.reduce((res, size) => sumSizes(res, size), measureText(String(content.x)))\n\t;\n\n\treturn {\n\t\twidth: width + 2 * X,\n\t\theight: height + 2 * Y\n\t};\n}\n\nfunction sumSizes(...sizes) {\n\treturn {\n\t\twidth: Math.max(...sizes.map(size => size.width)),\n\t\theight: sum(sizes, d => d.height),\n\t};\n}\n\nfunction normalizeX(x, bgSize, pointWidth, width) {\n\t// return x - bgSize.width - pointWidth / 2 - PADDING * 2 < 0\n\treturn x < width / 2\n\t\t? x + pointWidth / 2 + PADDING\n\t\t: x - bgSize.width - pointWidth / 2 - PADDING;\n}\n\nfunction normalizeY(y, bgSize) {\n\treturn y - bgSize.height <= 0\n\t\t? y + PADDING\n\t\t: y - bgSize.height - PADDING;\n}\n\nfunction origin(props, moreProps, bgSize, pointWidth) {\n\tconst { chartId, yAccessor } = props;\n\tconst { mouseXY, xAccessor, currentItem, xScale, chartConfig, width } = moreProps;\n\tlet y = last(mouseXY);\n\n\tconst xValue = xAccessor(currentItem);\n\tlet x = Math.round(xScale(xValue));\n\n\tif (isDefined(chartId) && isDefined(yAccessor)\n\t\t\t&& isDefined(chartConfig) && isDefined(chartConfig.findIndex)) {\n\t\tconst yValue = yAccessor(currentItem);\n\t\tconst chartIndex = chartConfig.findIndex(x => x.id === chartId);\n\n\t\ty = Math.round(chartConfig[chartIndex].yScale(yValue));\n\t}\n\n\tx = normalizeX(x, bgSize, pointWidth, width);\n\ty = normalizeY(y, bgSize);\n\n\treturn [x, y];\n}\n\nfunction helper(props, moreProps, ctx) {\n\tconst { show, xScale, currentItem, plotData } = moreProps;\n\tconst { origin, tooltipContent } = props;\n\tconst { xAccessor, displayXAccessor } = moreProps;\n\n\tif (!show || isNotDefined(currentItem)) return;\n\n\tconst xValue = xAccessor(currentItem);\n\n\tif (!show || isNotDefined(xValue)) return;\n\n\tconst content = tooltipContent({ currentItem, xAccessor: displayXAccessor });\n\tconst centerX = xScale(xValue);\n\tconst pointWidth = Math.abs(xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)))) / (plotData.length - 1);\n\n\tconst bgSize = calculateTooltipSize(props, content, ctx);\n\n\tconst [x, y] = origin(props, moreProps, bgSize, pointWidth);\n\n\treturn { x, y, content, centerX, pointWidth, bgSize };\n}\n\nexport default HoverTooltip;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"d3-format\";\nimport displayValuesFor from \"./displayValuesFor\";\nimport GenericChartComponent from \"../GenericChartComponent\";\nimport ToolTipText from \"./ToolTipText\";\nimport ToolTipTSpanLabel from \"./ToolTipTSpanLabel\";\n\nconst VALID_LAYOUTS = [\n\t\"horizontal\",\n\t\"horizontalRows\",\n\t\"horizontalInline\",\n\t\"vertical\",\n\t\"verticalRows\"\n];\n\nclass SingleTooltip extends Component {\n\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.handleClick = this.handleClick.bind( this );\n\t}\n\n\thandleClick( e ) {\n\t\tconst { onClick, forChart, options } = this.props;\n\t\tonClick( { chartId: forChart, ...options }, e );\n\t}\n\n\t/**\n\t * Renders the value next to the label.\n\t */\n\trenderValueNextToLabel() {\n\t\tconst { origin, yLabel, yValue, labelFill, valueFill, withShape, fontSize, fontFamily } = this.props;\n\n\t\treturn (\n\t\t\t<g transform={`translate(${origin[0]}, ${origin[1]})`} onClick={this.handleClick}>\n\t\t\t\t{withShape ? <rect x=\"0\" y=\"-6\" width=\"6\" height=\"6\" fill={valueFill} /> : null}\n\t\t\t\t<ToolTipText x={withShape ? 8 : 0} y={0} fontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{yLabel}: </ToolTipTSpanLabel>\n\t\t\t\t\t<tspan fill={valueFill}>{yValue}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\n\t/**\n\t * Renders the value beneath the label.\n\t */\n\trenderValueBeneathToLabel() {\n\t\tconst { origin, yLabel, yValue, labelFill, valueFill, withShape, fontSize, fontFamily } = this.props;\n\n\t\treturn (\n\t\t\t<g transform={`translate(${origin[0]}, ${origin[1]})`} onClick={this.handleClick}>\n\t\t\t\t{withShape ? <line x1={0} y1={2} x2={0} y2={28} stroke={valueFill} strokeWidth=\"4px\" /> : null}\n\t\t\t\t<ToolTipText x={5} y={11} fontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{yLabel}</ToolTipTSpanLabel>\n\t\t\t\t\t<tspan x=\"5\" dy=\"15\" fill={valueFill}>{yValue}</tspan>\n\t\t\t\t</ToolTipText>\n\t\t\t</g>\n\t\t);\n\t}\n\n\t/**\n\t * Renders the value next to the label.\n\t * The parent component must have a \"text\"-element.\n\t */\n\trenderInline() {\n\t\tconst { yLabel, yValue, labelFill, valueFill, fontSize, fontFamily } = this.props;\n\n\t\treturn (\n\t\t\t<tspan onClick={this.handleClick} fontFamily={fontFamily} fontSize={fontSize}>\n\t\t\t\t<ToolTipTSpanLabel fill={labelFill}>{yLabel}:&nbsp;</ToolTipTSpanLabel>\n\t\t\t\t<tspan fill={valueFill}>{yValue}&nbsp;&nbsp;</tspan>\n\t\t\t</tspan>\n\t\t);\n\t}\n\n\trender() {\n\n\t\tconst { layout } = this.props;\n\t\tlet comp = null;\n\n\t\tswitch ( layout ) {\n\t\t\tcase \"horizontal\":\n\t\t\t\tcomp = this.renderValueNextToLabel();\n\t\t\t\tbreak;\n\t\t\tcase \"horizontalRows\":\n\t\t\t\tcomp = this.renderValueBeneathToLabel();\n\t\t\t\tbreak;\n\t\t\tcase \"horizontalInline\":\n\t\t\t\tcomp = this.renderInline();\n\t\t\t\tbreak;\n\t\t\tcase \"vertical\":\n\t\t\t\tcomp = this.renderValueNextToLabel();\n\t\t\t\tbreak;\n\t\t\tcase \"verticalRows\":\n\t\t\t\tcomp = this.renderValueBeneathToLabel();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcomp = this.renderValueNextToLabel();\n\t\t}\n\n\t\treturn comp;\n\t}\n}\n\nSingleTooltip.propTypes = {\n\torigin: PropTypes.array.isRequired,\n\tyLabel: PropTypes.string.isRequired,\n\tyValue: PropTypes.string.isRequired,\n\tonClick: PropTypes.func,\n\tfontFamily: PropTypes.string,\n\tlabelFill: PropTypes.string.isRequired,\n\tvalueFill: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number,\n\twithShape: PropTypes.bool,\n\tforChart: PropTypes.oneOfType( [PropTypes.number, PropTypes.string] ).isRequired,\n\toptions: PropTypes.object.isRequired,\n\tlayout: PropTypes.oneOf(VALID_LAYOUTS).isRequired,\n};\n\nSingleTooltip.defaultProps = {\n\tlabelFill: \"#4682B4\",\n\tvalueFill: \"#000000\",\n\twithShape: false,\n};\n\nclass GroupTooltip extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.renderSVG = this.renderSVG.bind( this );\n\t}\n\n\tgetPosition(moreProps) {\n\t\tconst { position } = this.props;\n\t\tconst { height, width } = moreProps.chartConfig;\n\n\t\tconst dx = 20;\n\t\tconst dy = 40;\n\t\tlet textAnchor = null;\n\t\tlet xyPos = null;\n\n\t\tif (position !== undefined) {\n\t\t\tswitch ( position ) {\n\t\t\t\tcase \"topRight\":\n\t\t\t\t\txyPos = [width - dx, null];\n\t\t\t\t\ttextAnchor = \"end\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bottomLeft\":\n\t\t\t\t\txyPos = [null, height - dy];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bottomRight\":\n\t\t\t\t\txyPos = [width - dx, height - dy];\n\t\t\t\t\ttextAnchor = \"end\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\txyPos = [null, null];\n\t\t\t}\n\t\t} else {\n\t\t\txyPos = [null, null];\n\t\t}\n\n\t\treturn { xyPos, textAnchor };\n\t}\n\n\n\trenderSVG( moreProps ) {\n\n\t\tconst { displayValuesFor } = this.props;\n\t\tconst { chartId } = moreProps;\n\n\t\tconst { className, onClick, width, verticalSize, fontFamily, fontSize, layout } = this.props;\n\t\tconst { origin, displayFormat, options } = this.props;\n\t\tconst currentItem = displayValuesFor( this.props, moreProps );\n\t\tconst { xyPos, textAnchor } = this.getPosition(moreProps);\n\n\t\tconst xPos = xyPos != null && xyPos[0] != null ? xyPos[0] : origin[0];\n\t\tconst yPos = xyPos != null && xyPos[1] != null ? xyPos[1] : origin[1];\n\n\t\tconst singleTooltip = options.map( ( each, idx ) => {\n\n\t\t\tconst yValue = currentItem && each.yAccessor( currentItem );\n\t\t\tconst yDisplayValue = yValue ? displayFormat( yValue ) : \"n/a\";\n\n\t\t\tconst orig = () => {\n\t\t\t\tif ( layout === \"horizontal\" || layout === \"horizontalRows\" ) {\n\t\t\t\t\treturn [width * idx, 0];\n\t\t\t\t}\n\t\t\t\tif ( layout === \"vertical\" ) {\n\t\t\t\t\treturn [0, verticalSize * idx];\n\t\t\t\t}\n\t\t\t\tif ( layout === \"verticalRows\" ) {\n\t\t\t\t\treturn [0, verticalSize * 2.3 * idx];\n\t\t\t\t}\n\t\t\t\treturn [0, 0];\n\t\t\t};\n\n\t\t\treturn <SingleTooltip\n\t\t\t\tkey={idx}\n\t\t\t\tlayout={layout}\n\t\t\t\torigin={orig()}\n\t\t\t\tyLabel={each.yLabel}\n\t\t\t\tyValue={yDisplayValue}\n\t\t\t\toptions={each}\n\t\t\t\tforChart={chartId}\n\t\t\t\tonClick={onClick}\n\t\t\t\tfontFamily={fontFamily}\n\t\t\t\tfontSize={fontSize}\n\t\t\t\tlabelFill={each.labelFill}\n\t\t\t\tvalueFill={each.valueFill}\n\t\t\t\twithShape={each.withShape}\n\t\t\t/>;\n\t\t} );\n\n\t\treturn (\n\t\t\t<g transform={`translate(${xPos}, ${yPos})`} className={className} textAnchor={textAnchor}>\n\t\t\t\t{layout === \"horizontalInline\"\n\t\t\t\t\t? <ToolTipText x={0} y={0} fontFamily={fontFamily} fontSize={fontSize}>{singleTooltip}</ToolTipText>\n\t\t\t\t\t: singleTooltip\n\t\t\t\t}\n\t\t\t</g>\n\t\t);\n\t}\n\trender() {\n\t\treturn <GenericChartComponent\n\t\t\tclip={false}\n\t\t\tsvgDraw={this.renderSVG}\n\t\t\tdrawOn={[\"mousemove\"]}\n\t\t/>;\n\t}\n}\n\n\nGroupTooltip.propTypes = {\n\tclassName: PropTypes.string,\n\tlayout: PropTypes.oneOf(VALID_LAYOUTS).isRequired,\n\tposition: PropTypes.oneOf( [\n\t\t\"topRight\",\n\t\t\"bottomLeft\",\n\t\t\"bottomRight\"] ),\n\tdisplayFormat: PropTypes.func.isRequired,\n\torigin: PropTypes.array.isRequired,\n\tdisplayValuesFor: PropTypes.func,\n\tonClick: PropTypes.func,\n\tfontFamily: PropTypes.string,\n\tfontSize: PropTypes.number,\n\twidth: PropTypes.number, // \"width\" only be used, if layout is \"horizontal\" or \"horizontalRows\".\n\tverticalSize: PropTypes.number, // \"verticalSize\" only be used, if layout is \"vertical\", \"verticalRows\".\n\toptions: PropTypes.arrayOf( PropTypes.shape( {\n\t\tyLabel: PropTypes.oneOfType( [\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.func] ).isRequired,\n\t\tyAccessor: PropTypes.func.isRequired,\n\t\tlabelFill: PropTypes.string,\n\t\tvalueFill: PropTypes.string,\n\t\twithShape: PropTypes.bool, // \"withShape\" is ignored, if layout is \"horizontalInline\" or \"vertical\".\n\t} ) ),\n};\n\nGroupTooltip.defaultProps = {\n\tclassName: \"react-stockcharts-tooltip react-stockcharts-group-tooltip\",\n\tlayout: \"horizontal\",\n\tdisplayFormat: format( \".2f\" ),\n\tdisplayValuesFor: displayValuesFor,\n\torigin: [0, 0],\n\twidth: 60,\n\tverticalSize: 13,\n};\n\nexport default GroupTooltip;\n","\n\nimport { timeFormat, timeFormatDefaultLocale } from \"d3-time-format\";\n// import { map as d3Map } from \"d3-collection\";\n\nimport financeDiscontinuousScale from \"./financeDiscontinuousScale\";\nimport { slidingWindow, zipper, identity, isNotDefined } from \"../utils\";\nimport { defaultFormatters, levelDefinition } from \"./levels\";\n\nfunction evaluateLevel(d, date, i, formatters) {\n\treturn levelDefinition\n\t\t.map((eachLevel, idx) => {\n\t\t\treturn {\n\t\t\t\tlevel: levelDefinition.length - idx - 1,\n\t\t\t\tformat: formatters[eachLevel(d, date, i)]\n\t\t\t};\n\t\t})\n\t\t.find(l => !!l.format);\n}\n\nconst discontinuousIndexCalculator = slidingWindow()\n\t.windowSize(2)\n\t.undefinedValue((d, idx, { initialIndex, formatters }) => {\n\t\tconst i = initialIndex;\n\t\tconst row = {\n\t\t\tdate: d.getTime(),\n\t\t\tstartOf30Seconds: false,\n\t\t\tstartOfMinute: false,\n\t\t\tstartOf5Minutes: false,\n\t\t\tstartOf15Minutes: false,\n\t\t\tstartOf30Minutes: false,\n\t\t\tstartOfHour: false,\n\t\t\tstartOfEighthOfADay: false,\n\t\t\tstartOfQuarterDay: false,\n\t\t\tstartOfHalfDay: false,\n\t\t\tstartOfDay: true,\n\t\t\tstartOfWeek: false,\n\t\t\tstartOfMonth: false,\n\t\t\tstartOfQuarter: false,\n\t\t\tstartOfYear: false,\n\t\t};\n\t\tconst level = evaluateLevel(row, d, i, formatters);\n\t\treturn { ...row, index: i, ...level };\n\t});\n\nconst discontinuousIndexCalculatorLocalTime = discontinuousIndexCalculator\n\t.accumulator(([prevDate, nowDate], i, idx, { initialIndex, formatters }) => {\n\t\tconst startOf30Seconds = nowDate.getSeconds() % 30 === 0;\n\n\t\tconst startOfMinute = nowDate.getMinutes() !== prevDate.getMinutes();\n\t\tconst startOf5Minutes = startOfMinute && nowDate.getMinutes() % 5 <= prevDate.getMinutes() % 5;\n\t\tconst startOf15Minutes = startOfMinute && nowDate.getMinutes() % 15 <= prevDate.getMinutes() % 15;\n\t\tconst startOf30Minutes = startOfMinute && nowDate.getMinutes() % 30 <= prevDate.getMinutes() % 30;\n\n\t\tconst startOfHour = nowDate.getHours() !== prevDate.getHours();\n\n\t\tconst startOfEighthOfADay = startOfHour && nowDate.getHours() % 3 === 0;\n\t\tconst startOfQuarterDay = startOfHour && nowDate.getHours() % 6 === 0;\n\t\tconst startOfHalfDay = startOfHour && nowDate.getHours() % 12 === 0;\n\n\t\tconst startOfDay = nowDate.getDay() !== prevDate.getDay();\n\t\t// According to ISO calendar\n\t\t// Sunday = 0, Monday = 1, ... Saturday = 6\n\t\t// day of week of today < day of week of yesterday then today is start of week\n\t\tconst startOfWeek = nowDate.getDay() < prevDate.getDay();\n\t\t// month of today != month of yesterday then today is start of month\n\t\tconst startOfMonth = nowDate.getMonth() !== prevDate.getMonth();\n\t\t// if start of month and month % 3 === 0 then it is start of quarter\n\t\tconst startOfQuarter = startOfMonth && (nowDate.getMonth() % 3 <= prevDate.getMonth() % 3);\n\t\t// year of today != year of yesterday then today is start of year\n\t\tconst startOfYear = nowDate.getFullYear() !== prevDate.getFullYear();\n\n\t\tconst row = {\n\t\t\tdate: nowDate.getTime(),\n\t\t\tstartOf30Seconds,\n\t\t\tstartOfMinute,\n\t\t\tstartOf5Minutes,\n\t\t\tstartOf15Minutes,\n\t\t\tstartOf30Minutes,\n\t\t\tstartOfHour,\n\t\t\tstartOfEighthOfADay,\n\t\t\tstartOfQuarterDay,\n\t\t\tstartOfHalfDay,\n\t\t\tstartOfDay,\n\t\t\tstartOfWeek,\n\t\t\tstartOfMonth,\n\t\t\tstartOfQuarter,\n\t\t\tstartOfYear,\n\t\t};\n\t\tconst level = evaluateLevel(row, nowDate, i, formatters);\n\t\tif (level == null) {\n\t\t\tconsole.log(row);\n\t\t}\n\t\treturn { ...row, index: i + initialIndex, ...level };\n\t});\n\nfunction doStuff(realDateAccessor, inputDateAccessor, initialIndex, formatters) {\n\treturn function(data) {\n\t\tconst dateAccessor = realDateAccessor(inputDateAccessor);\n\t\tconst calculate = discontinuousIndexCalculatorLocalTime\n\t\t\t.source(dateAccessor)\n\t\t\t.misc({ initialIndex, formatters });\n\n\t\tconst index = calculate(data).map(each => {\n\t\t\tconst { format } = each;\n\t\t\treturn {\n\t\t\t\t// ...each,\n\t\t\t\tindex: each.index,\n\t\t\t\tlevel: each.level,\n\t\t\t\tdate: new Date(each.date),\n\t\t\t\tformat: timeFormat(format),\n\t\t\t};\n\t\t});\n\t\t/*\n\t\tvar map = d3Map();\n\t\tfor (var i = 0; i < data.length - 1; i++) {\n\n\t\t\tvar nextDate = dateAccessor(data[i + 1]);\n\t\t\tvar nowDate = dateAccessor(data[i]);\n\t\t\tvar diff = nextDate - nowDate;\n\n\t\t\tif (map.has(diff)) {\n\t\t\t\tvar count = parseInt(map.get(diff), 10) + 1;\n\t\t\t\tmap.set(diff, count);\n\t\t\t} else {\n\t\t\t\tmap.set(diff, 1);\n\t\t\t}\n\t\t}\n\n\t\tvar entries = map.entries().sort((a, b) => a.value < b.value);\n\n\t\t// For Renko/p&f\n\n\t\tvar interval = entries[0].value === 1\n\t\t\t? Math.round((dateAccessor(last(data)) - dateAccessor(head(data))) / data.length)\n\t\t\t: parseInt(entries[0].key, 10); */\n\n\t\t// return { index, interval };\n\t\treturn { index };\n\t};\n}\n\nexport function discontinuousTimeScaleProviderBuilder() {\n\tlet initialIndex = 0, realDateAccessor = identity;\n\tlet inputDateAccessor = d => d.date,\n\t\tindexAccessor = d => d.idx,\n\t\tindexMutator = (d, idx) => ({ ...d, idx }),\n\t\twithIndex;\n\n\tlet currentFormatters = defaultFormatters;\n\n\t// eslint-disable-next-line prefer-const\n\tlet discontinuousTimeScaleProvider = function(data) {\n\t\t/*\n\t\tconsole.warn(\"Are you sure you want to use a discontinuousTimeScale?\"\n\t\t\t+ \" Use this only if you have discontinuous data which\"\n\t\t\t+ \" needs to be displayed as continuous.\"\n\t\t\t+ \" If you have continuous data use a d3 scale like\"\n\t\t\t+ \" `d3.scaleTime`\"\n\t\t);\n\t\t*/\n\n\t\tlet index = withIndex;\n\n\t\tif (isNotDefined(index)) {\n\t\t\tconst response = doStuff(\n\t\t\t\trealDateAccessor,\n\t\t\t\tinputDateAccessor,\n\t\t\t\tinitialIndex,\n\t\t\t\tcurrentFormatters\n\t\t\t)(data);\n\n\t\t\tindex = response.index;\n\t\t}\n\t\t// console.log(interval, entries[0].key);\n\n\t\tconst inputIndex = index;\n\t\tconst xScale = financeDiscontinuousScale(\n\t\t\tinputIndex,\n\t\t);\n\n\t\tconst mergedData = zipper()\n\t\t\t.combine(indexMutator);\n\n\t\tconst finalData = mergedData(data, inputIndex);\n\n\t\treturn {\n\t\t\tdata: finalData,\n\t\t\txScale,\n\t\t\txAccessor: d => d && indexAccessor(d).index,\n\t\t\tdisplayXAccessor: realDateAccessor(inputDateAccessor),\n\t\t};\n\t};\n\n\tdiscontinuousTimeScaleProvider.initialIndex = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn initialIndex;\n\t\t}\n\t\tinitialIndex = x;\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\tdiscontinuousTimeScaleProvider.inputDateAccessor = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn inputDateAccessor;\n\t\t}\n\t\tinputDateAccessor = x;\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\tdiscontinuousTimeScaleProvider.indexAccessor = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn indexAccessor;\n\t\t}\n\t\tindexAccessor = x;\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\tdiscontinuousTimeScaleProvider.indexMutator = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn indexMutator;\n\t\t}\n\t\tindexMutator = x;\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\tdiscontinuousTimeScaleProvider.withIndex = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn withIndex;\n\t\t}\n\t\twithIndex = x;\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\tdiscontinuousTimeScaleProvider.utc = function() {\n\t\trealDateAccessor = dateAccessor => d => {\n\t\t\tconst date = dateAccessor(d);\n\t\t\t// The getTimezoneOffset() method returns the time-zone offset from UTC, in minutes, for the current locale.\n\t\t\tconst offsetInMillis = date.getTimezoneOffset() * 60 * 1000;\n\t\t\treturn new Date(date.getTime() + offsetInMillis);\n\t\t};\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\tdiscontinuousTimeScaleProvider.setLocale = function(locale, formatters = null) {\n\t\tif (locale) {\n\t\t\ttimeFormatDefaultLocale(locale);\n\t\t}\n\t\tif (formatters) {\n\t\t\tcurrentFormatters = formatters;\n\t\t}\n\t\treturn discontinuousTimeScaleProvider;\n\t};\n\n\tdiscontinuousTimeScaleProvider.indexCalculator = function() {\n\t\treturn doStuff(realDateAccessor, inputDateAccessor, initialIndex, currentFormatters);\n\t};\n\n\treturn discontinuousTimeScaleProvider;\n}\n\n\n\n/* discontinuousTimeScaleProvider.utc = function(data,\n\t\tdateAccessor,\n\t\tindexAccessor,\n\t\tindexMutator) {\n\tvar utcDateAccessor = d => {\n\t\tvar date = dateAccessor(d);\n\t\t// The getTimezoneOffset() method returns the time-zone offset from UTC, in minutes, for the current locale.\n\t\tvar offsetInMillis = date.getTimezoneOffset() * 60 * 1000;\n\t\treturn new Date(date.getTime() + offsetInMillis);\n\t};\n\treturn discontinuousTimeScaleProvider(data, utcDateAccessor, indexAccessor, indexMutator);\n};*/\n\nexport default discontinuousTimeScaleProviderBuilder();\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { ema } from \"../calculator\";\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"EMA\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.ema);\n\n\tconst underlyingAlgorithm = ema();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.ema = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\", \"undefinedLength\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { sum } from \"d3-array\";\n\nimport { slidingWindow } from \"../utils\";\nimport { WMA as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, sourcePath } = options;\n\n\t\tconst weight = windowSize * (windowSize + 1) / 2;\n\n\t\tconst waverage = slidingWindow()\n\t\t\t.windowSize(windowSize)\n\t\t\t.sourcePath(sourcePath)\n\t\t\t.accumulator(values => {\n\t\t\t\tconst total = sum(values, (v, i) => {\n\t\t\t\t\treturn (i + 1) * v;\n\t\t\t\t});\n\t\t\t\treturn total / weight;\n\t\t\t});\n\n\t\treturn waverage(data);\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\n/*\n TRIMA (Triangular Moving Average).\n\n The Triangular Moving Average can be used like any other Moving Average, to obtain a smoother representation of the underlying data.\n It is important to note that the Triangular Moving Average is typically much smoother than other moving averages.\n\n Triangular moving averages give greater weight to prices at the centre of the chosen period andi it is calculated as double smoothed SMA (simple moving average).\n\n Examples:\n For TimeSerie={a,b,c,d,e,f...} ('a' is the older price)\n\n 1st value for TMA 4-Period is: ((1*a)+(2*b)+(2*c)+(1*d)) / 6\n 2nd value for TMA 4-Period is: ((1*b)+(2*c)+(2*d)+(1*e)) / 6\n\n 1st value for TMA 5-Period is: ((1*a)+(2*b)+(3*c)+(2*d)+(1*e)) / 9\n 2nd value for TMA 5-Period is: ((1*b)+(2*c)+(3*d)+(2*e)+(1*f)) / 9\n\n Using algebra, it can be demonstrated that the TMA is equivalent to\n doing a SMA of a SMA. The following explain the rules:\n\n (1) When the period is even, TMA(x,period)=SMA(SMA(x,period/2),(period/2)+1)\n (2) When the period is odd, TMA(x,period)=SMA(SMA(x,(period+1)/2),(period+1)/2)\n\n In other word:\n (1) A period of 4 becomes TMA(x,4) = SMA( SMA( x, 2), 3 )\n (2) A period of 5 becomes TMA(x,5) = SMA( SMA( x, 3), 3 )\n\n The SMA of a SMA is the algorithm generally found in books.\n*/\n\nimport { sum } from \"d3-array\";\n\nimport { slidingWindow } from \"../utils\";\nimport { TMA as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, sourcePath } = options;\n\n\t\tconst n = Math.floor(windowSize / 2);\n\t\tconst weight = (windowSize % 2) === 0\n\t\t\t? n * (n + 1)\n\t\t\t: (n + 1) * (n + 1);\n\n\t\tconst triaverage = slidingWindow()\n\t\t\t.windowSize(windowSize)\n\t\t\t.sourcePath(sourcePath)\n\t\t\t.accumulator(values => {\n\t\t\t\tconst total = sum(values, (v, i) => {\n\t\t\t\t\treturn i < n\n\t\t\t\t\t\t? (i + 1) * v\n\t\t\t\t\t\t: (windowSize - i) * v;\n\t\t\t\t});\n\t\t\t\treturn total / weight;\n\t\t\t});\n\n\t\treturn triaverage(data);\n\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\n/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/bollingerBands.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport { mean, deviation } from \"d3-array\";\n\nimport ema from \"./ema\";\nimport { last, slidingWindow, zipper, path } from \"../utils\";\n\nimport { BollingerBand as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, multiplier, movingAverageType, sourcePath } = options;\n\n\t\tconst source = path(sourcePath);\n\t\tconst meanAlgorithm = movingAverageType === \"ema\"\n\t\t\t? ema().options({ windowSize, sourcePath })\n\t\t\t: slidingWindow().windowSize(windowSize)\n\t\t\t\t.accumulator(values => mean(values)).sourcePath(sourcePath);\n\n\t\tconst bollingerBandAlgorithm = slidingWindow()\n\t\t\t.windowSize(windowSize)\n\t\t\t.accumulator((values) => {\n\t\t\t\tconst avg = last(values).mean;\n\t\t\t\tconst stdDev = deviation(values, (each) => source(each.datum));\n\t\t\t\treturn {\n\t\t\t\t\ttop: avg + multiplier * stdDev,\n\t\t\t\t\tmiddle: avg,\n\t\t\t\t\tbottom: avg - multiplier * stdDev\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst zip = zipper()\n\t\t\t.combine((datum, mean) => ({ datum, mean }));\n\n\t\tconst tuples = zip(data, meanAlgorithm(data));\n\t\treturn bollingerBandAlgorithm(tuples);\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\n\treturn calculator;\n}\n","\n\nimport { mappedSlidingWindow, identity } from \"../utils\";\n\nexport default function() {\n\n\tlet source = identity;\n\n\tfunction calculator(data) {\n\t\tconst algorithm = mappedSlidingWindow()\n\t\t\t.windowSize(2)\n\t\t\t.undefinedValue(({ open, high, low, close }) => {\n\t\t\t\tclose = (open + high + low + close) / 4;\n\t\t\t\treturn { open, high, low, close };\n\t\t\t})\n\t\t\t.accumulator(([prev, now]) => {\n\t\t\t\t// console.log(prev, now);\n\t\t\t\tconst { date, volume } = now;\n\t\t\t\tconst close = (now.open + now.high + now.low + now.close) / 4;\n\t\t\t\tconst open = (prev.open + prev.close) / 2;\n\t\t\t\tconst high = Math.max(open, now.high, close);\n\t\t\t\tconst low = Math.min(open, now.low, close);\n\t\t\t\treturn { date, open, high, low, close, volume };\n\t\t\t});\n\n\t\treturn algorithm(data);\n\t}\n\tcalculator.source = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn source;\n\t\t}\n\t\tsource = x;\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}","\n\nimport { merge, isNotDefined, path, functor } from \"../utils\";\nimport atr from \"./atr\";\n\nimport { Kagi as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\tlet dateAccessor = d => d.date;\n\tlet dateMutator = (d, date) => { d.date = date; };\n\n\tfunction calculator(data) {\n\t\tconst { reversalType, windowSize, reversal, sourcePath } = options;\n\n\t\tconst source = path(sourcePath);\n\t\tlet reversalThreshold;\n\n\t\tif (reversalType === \"ATR\") {\n\t\t\t// calculateATR(rawData, period);\n\t\t\tconst atrAlgorithm = atr().options({ windowSize });\n\n\t\t\tconst atrCalculator = merge()\n\t\t\t\t.algorithm(atrAlgorithm)\n\t\t\t\t.merge((d, c) => { d[\"atr\" + windowSize] = c; } );\n\n\t\t\tatrCalculator(data);\n\t\t\treversalThreshold = d => d[\"atr\" + windowSize];\n\t\t} else {\n\t\t\treversalThreshold = functor(reversal);\n\t\t}\n\n\t\tconst kagiData = [];\n\n\t\tlet prevPeak, prevTrough, direction;\n\t\tlet line = {};\n\n\t\tdata.forEach(function(d) {\n\t\t\tif (isNotDefined(line.from)) {\n\t\t\t\tdateMutator(line, dateAccessor(d));\n\t\t\t\tline.from = dateAccessor(d);\n\n\t\t\t\tif (!line.open) line.open = d.open;\n\t\t\t\tline.high = d.high;\n\t\t\t\tline.low = d.low;\n\t\t\t\tif (!line.close) line.close = source(d);\n\t\t\t\tline.startOfYear = d.startOfYear;\n\t\t\t\tline.startOfQuarter = d.startOfQuarter;\n\t\t\t\tline.startOfMonth = d.startOfMonth;\n\t\t\t\tline.startOfWeek = d.startOfWeek;\n\t\t\t}\n\n\t\t\tif (!line.startOfYear) {\n\t\t\t\tline.startOfYear = d.startOfYear;\n\t\t\t\tif (line.startOfYear) {\n\t\t\t\t\tline.date = d.date;\n\t\t\t\t\t// line.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!line.startOfQuarter) {\n\t\t\t\tline.startOfQuarter = d.startOfQuarter;\n\t\t\t\tif (line.startOfQuarter && !line.startOfYear) {\n\t\t\t\t\tline.date = d.date;\n\t\t\t\t\t// line.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!line.startOfMonth) {\n\t\t\t\tline.startOfMonth = d.startOfMonth;\n\t\t\t\tif (line.startOfMonth && !line.startOfQuarter) {\n\t\t\t\t\tline.date = d.date;\n\t\t\t\t\t// line.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!line.startOfWeek) {\n\t\t\t\tline.startOfWeek = d.startOfWeek;\n\t\t\t\tif (line.startOfWeek && !line.startOfMonth) {\n\t\t\t\t\tline.date = d.date;\n\t\t\t\t\t// line.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\t\t\tline.volume = (line.volume || 0) + d.volume;\n\t\t\tline.high = Math.max(line.high, d.high);\n\t\t\tline.low = Math.min(line.low, d.low);\n\t\t\tline.to = dateAccessor(d);\n\n\t\t\tconst priceMovement = (source(d) - line.close);\n\n\t\t\t// console.log(source(d), priceMovement)\n\t\t\tif ((line.close >= line.open /* going up */ && priceMovement > 0 /* and moving in same direction */)\n\t\t\t\t\t|| (line.close < line.open /* going down */ && priceMovement < 0 /* and moving in same direction */)) {\n\t\t\t\tline.close = source(d);\n\t\t\t\tif (prevTrough && line.close < prevTrough) {\n\t\t\t\t\t// going below the prevTrough, so change from yang to yin\n\t\t\t\t\t// A yin line forms when a Kagi line breaks below the prior trough.\n\t\t\t\t\tline.changePoint = prevTrough;\n\t\t\t\t\tif (line.startAs !== \"yin\") {\n\t\t\t\t\t\tline.changeTo = \"yin\";\n\t\t\t\t\t\t// line.startAs = \"yang\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (prevPeak && line.close > prevPeak) {\n\t\t\t\t\t// going above the prevPeak, so change from yin to yang\n\t\t\t\t\t// A yang line forms when a Kagi line breaks above the prior peak\n\t\t\t\t\tline.changePoint = prevPeak;\n\t\t\t\t\tif (line.startAs !== \"yang\") {\n\t\t\t\t\t\tline.changeTo = \"yang\";\n\t\t\t\t\t\t// line.startAs = \"yin\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ((line.close >= line.open /* going up */\n\t\t\t\t\t\t\t&& priceMovement < 0 /* and moving in other direction */\n\t\t\t\t\t\t\t&& Math.abs(priceMovement) > reversalThreshold(d) /* and the movement is big enough for reversal */)\n\t\t\t\t\t|| (line.close < line.open /* going down */\n\t\t\t\t\t\t\t&& priceMovement > 0 /* and moving in other direction */\n\t\t\t\t\t\t\t&& Math.abs(priceMovement) > reversalThreshold(d) /* and the movement is big enough for reversal */)) {\n\t\t\t\t// reverse direction\n\t\t\t\tconst nextLineOpen = line.close;\n\n\t\t\t\tdirection = (line.close - line.open) / Math.abs(line.close - line.open);\n\n\t\t\t\tlet nextChangePoint, nextChangeTo;\n\t\t\t\tif (direction < 0 /* if direction so far has been -ve*/) {\n\t\t\t\t\t// compare with line.close becomes prevTrough\n\t\t\t\t\tif (isNotDefined(prevPeak)) prevPeak = line.open;\n\t\t\t\t\tprevTrough = line.close;\n\t\t\t\t\tif (source(d) > prevPeak) {\n\t\t\t\t\t\tnextChangePoint = prevPeak;\n\t\t\t\t\t\tnextChangeTo = \"yang\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (isNotDefined(prevTrough)) prevTrough = line.open;\n\t\t\t\t\tprevPeak = line.close;\n\t\t\t\t\tif (source(d) < prevTrough) {\n\t\t\t\t\t\tnextChangePoint = prevTrough;\n\t\t\t\t\t\tnextChangeTo = \"yin\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isNotDefined(line.startAs)) {\n\t\t\t\t\tline.startAs = direction > 0 ? \"yang\" : \"yin\";\n\t\t\t\t}\n\n\t\t\t\tconst startAs = line.changeTo || line.startAs;\n\t\t\t\tline.added = true;\n\t\t\t\tkagiData.push(line);\n\t\t\t\tdirection = -1 * direction; // direction is reversed\n\n\t\t\t\tline = { ...line };\n\t\t\t\tline.open = nextLineOpen;\n\t\t\t\tline.close = source(d);\n\t\t\t\tline.startAs = startAs;\n\t\t\t\tline.changePoint = nextChangePoint;\n\t\t\t\tline.changeTo = nextChangeTo;\n\t\t\t\tline.added = false;\n\t\t\t\tline.from = undefined;\n\t\t\t\tline.volume = 0;\n\t\t\t} else {\n\t\t\t\t// console.log(\"MOVING IN REV DIR BUT..\", line.open, line.close, source(d));\n\t\t\t}\n\t\t\tline.current = source(d);\n\t\t\tlet dir = line.close - line.open;\n\t\t\tdir = dir === 0 ? 1 : dir / Math.abs(dir);\n\t\t\tline.reverseAt = dir > 0 ? line.close - reversalThreshold(d) : line.open - reversalThreshold(d);\n\t\t});\n\t\tif (!line.added) kagiData.push(line);\n\n\t\treturn kagiData;\n\t}\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\tcalculator.dateMutator = function(x) {\n\t\tif (!arguments.length) return dateMutator;\n\t\tdateMutator = x;\n\t\treturn calculator;\n\t};\n\tcalculator.dateAccessor = function(x) {\n\t\tif (!arguments.length) return dateAccessor;\n\t\tdateAccessor = x;\n\t\treturn calculator;\n\t};\n\treturn calculator;\n}\n","\n\nimport { isNotDefined } from \"../utils\";\nimport { PointAndFigure as defaultOptions } from \"./defaultOptionsForComputation\";\n\nfunction createBox(d, dateAccessor, dateMutator) {\n\tconst box = {\n\t\topen: d.open,\n\t\tfromDate: dateAccessor(d),\n\t\ttoDate: dateAccessor(d),\n\t\tstartOfYear: d.startOfYear,\n\t\tstartOfQuarter: d.startOfQuarter,\n\t\tstartOfMonth: d.startOfMonth,\n\t\tstartOfWeek: d.startOfWeek\n\t};\n\tdateMutator(box, dateAccessor(d));\n\treturn box;\n}\n\nfunction updateColumns(columnData, dateAccessor, dateMutator) {\n\tcolumnData.forEach(function(d) {\n\t\t// var lastBox = d.boxes[d.boxes.length - 1];\n\n\t\td.startOfYear = false;\n\t\td.startOfQuarter = false;\n\t\td.startOfMonth = false;\n\t\td.startOfWeek = false;\n\n\t\td.boxes.forEach(function(eachBox) {\n\t\t\tif (isNotDefined(d.open)) d.open = eachBox.open;\n\t\t\td.close = eachBox.close;\n\t\t\td.high = Math.max(d.open, d.close);\n\t\t\td.low = Math.min(d.open, d.close);\n\n\t\t\tif (isNotDefined(d.fromDate)) d.fromDate = eachBox.fromDate;\n\t\t\tif (isNotDefined(d.date)) d.date = eachBox.date;\n\t\t\td.toDate = eachBox.toDate;\n\n\t\t\tif (eachBox.startOfYear) {\n\t\t\t\td.startOfYear = d.startOfYear || eachBox.startOfYear;\n\t\t\t\td.startOfQuarter = eachBox.startOfQuarter;\n\t\t\t\td.startOfMonth = eachBox.startOfMonth;\n\t\t\t\td.startOfWeek = eachBox.startOfWeek;\n\n\t\t\t\tdateMutator(d, dateAccessor(eachBox));\n\t\t\t}\n\t\t\tif (d.startOfQuarter !== true && eachBox.startOfQuarter) {\n\t\t\t\td.startOfQuarter = eachBox.startOfQuarter;\n\t\t\t\td.startOfMonth = eachBox.startOfMonth;\n\t\t\t\td.startOfWeek = eachBox.startOfWeek;\n\t\t\t\t// d.displayDate = eachBox.displayDate;\n\t\t\t\tdateMutator(d, dateAccessor(eachBox));\n\t\t\t}\n\t\t\tif (d.startOfMonth !== true && eachBox.startOfMonth) {\n\t\t\t\td.startOfMonth = eachBox.startOfMonth;\n\t\t\t\td.startOfWeek = eachBox.startOfWeek;\n\t\t\t\t// d.displayDate = eachBox.displayDate;\n\t\t\t\tdateMutator(d, dateAccessor(eachBox));\n\t\t\t}\n\t\t\tif (d.startOfWeek !== true && eachBox.startOfWeek) {\n\t\t\t\td.startOfWeek = eachBox.startOfWeek;\n\t\t\t\t// d.displayDate = eachBox.displayDate;\n\t\t\t\tdateMutator(d, dateAccessor(eachBox));\n\t\t\t}\n\t\t});\n\n\t});\n\n\t// console.table(columnData);\n\t// console.table(rawData);\n\treturn columnData;\n}\n\n\nexport default function() {\n\tlet options = defaultOptions;\n\tlet dateAccessor = d => d.date;\n\tlet dateMutator = (d, date) => { d.date = date; };\n\n\tfunction calculator(rawData) {\n\t\tconst { reversal, boxSize, sourcePath } = options;\n\n\t\tconst source = sourcePath === \"high/low\"\n\t\t\t? d => { return { high: d.high, low: d.low }; }\n\t\t\t: d => { return { high: d.close, low: d.close }; };\n\n\n\t\tconst pricingMethod = source;\n\t\tconst columnData = [];\n\n\t\tlet column = {\n\t\t\t\tboxes: [],\n\t\t\t\topen: rawData[0].open\n\t\t\t}, box = createBox(rawData[0], dateAccessor, dateMutator);\n\n\t\tcolumnData.push(column);\n\n\t\trawData.forEach(function(d) {\n\t\t\tcolumn.volume = (column.volume || 0) + d.volume;\n\n\t\t\tif (!box.startOfYear) {\n\t\t\t\tbox.startOfYear = d.startOfYear;\n\t\t\t\tif (box.startOfYear) {\n\t\t\t\t\tdateMutator(box, dateAccessor(d));\n\t\t\t\t\t// box.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!box.startOfYear && !box.startOfQuarter) {\n\t\t\t\tbox.startOfQuarter = d.startOfQuarter;\n\t\t\t\tif (box.startOfQuarter && !box.startOfYear) {\n\t\t\t\t\tdateMutator(box, dateAccessor(d));\n\t\t\t\t\t// box.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!box.startOfQuarter && !box.startOfMonth) {\n\t\t\t\tbox.startOfMonth = d.startOfMonth;\n\t\t\t\tif (box.startOfMonth && !box.startOfQuarter) {\n\t\t\t\t\tdateMutator(box, dateAccessor(d));\n\t\t\t\t\t// box.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!box.startOfMonth && !box.startOfWeek) {\n\t\t\t\tbox.startOfWeek = d.startOfWeek;\n\t\t\t\tif (box.startOfWeek && !box.startOfMonth) {\n\t\t\t\t\tdateMutator(box, dateAccessor(d));\n\t\t\t\t\t// box.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (columnData.length === 1 && column.boxes.length === 0) {\n\t\t\t\tconst upwardMovement = (Math.max((pricingMethod(d).high - column.open), 0)); // upward movement\n\t\t\t\tconst downwardMovement = Math.abs(Math.min((column.open - pricingMethod(d).low), 0)); // downward movement\n\t\t\t\tcolumn.direction = upwardMovement > downwardMovement ? 1 : -1;\n\t\t\t\tif (boxSize * reversal < upwardMovement\n\t\t\t\t\t|| boxSize * reversal < downwardMovement) {\n\t\t\t\t\t// enough movement to trigger a reversal\n\t\t\t\t\tbox.toDate = dateAccessor(d);\n\t\t\t\t\tbox.open = column.open;\n\t\t\t\t\tconst noOfBoxes = column.direction > 0\n\t\t\t\t\t\t? Math.floor(upwardMovement / boxSize)\n\t\t\t\t\t\t: Math.floor(downwardMovement / boxSize);\n\t\t\t\t\tfor (let i = 0; i < noOfBoxes; i++) {\n\t\t\t\t\t\tbox.close = box.open + column.direction * boxSize;\n\t\t\t\t\t\tconst prevBoxClose = box.close;\n\t\t\t\t\t\tcolumn.boxes.push(box);\n\t\t\t\t\t\tbox = createBox(box, dateAccessor, dateMutator);\n\t\t\t\t\t\t// box = cloneMe(box);\n\t\t\t\t\t\tbox.open = prevBoxClose;\n\t\t\t\t\t}\n\t\t\t\t\tbox.fromDate = dateAccessor(d);\n\t\t\t\t\tbox.date = dateAccessor(d);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// one or more boxes already formed in the current column\n\t\t\t\tconst upwardMovement = (Math.max((pricingMethod(d).high - box.open), 0)); // upward movement\n\t\t\t\tconst downwardMovement = Math.abs(Math.min((pricingMethod(d).low - box.open), 0)); // downward movement\n\n\t\t\t\tif ((column.direction > 0 && upwardMovement > boxSize) /* rising column AND box can be formed */\n\t\t\t\t\t\t|| (column.direction < 0 && downwardMovement > boxSize) /* falling column AND box can be formed */ ) {\n\t\t\t\t\t// form another box\n\t\t\t\t\tbox.close = box.open + column.direction * boxSize;\n\t\t\t\t\tbox.toDate = dateAccessor(d);\n\t\t\t\t\tconst prevBoxClose = box.close;\n\t\t\t\t\tcolumn.boxes.push(box);\n\t\t\t\t\tbox = createBox(d, dateAccessor, dateMutator);\n\t\t\t\t\tbox.open = prevBoxClose;\n\t\t\t\t\tbox.fromDate = dateAccessor(d);\n\t\t\t\t\tdateMutator(box, dateAccessor(d));\n\t\t\t\t} else if ((column.direction > 0 && downwardMovement > boxSize * reversal) /* rising column and there is downward movement to trigger a reversal */\n\t\t\t\t\t\t|| (column.direction < 0 && upwardMovement > boxSize * reversal)/* falling column and there is downward movement to trigger a reversal */) {\n\t\t\t\t\t// reversal\n\n\t\t\t\t\tbox.open = box.open + -1 * column.direction * boxSize;\n\t\t\t\t\tbox.toDate = dateAccessor(d);\n\t\t\t\t\t// box.displayDate = d.displayDate;\n\t\t\t\t\tdateMutator(box, dateAccessor(d));\n\t\t\t\t\t// box.startOfYear = d.startOfYear;\n\t\t\t\t\t// box.startOfQuarter = d.startOfQuarter;\n\t\t\t\t\t// box.startOfMonth = d.startOfMonth;\n\t\t\t\t\t// box.startOfWeek = d.startOfWeek;\n\t\t\t\t\t// console.table(column.boxes);\n\t\t\t\t\t// var idx = index + 1;\n\t\t\t\t\tcolumn = {\n\t\t\t\t\t\tboxes: [],\n\t\t\t\t\t\tvolume: 0,\n\t\t\t\t\t\tdirection: -1 * column.direction\n\t\t\t\t\t};\n\t\t\t\t\tconst noOfBoxes = column.direction > 0\n\t\t\t\t\t\t? Math.floor(upwardMovement / boxSize)\n\t\t\t\t\t\t: Math.floor(downwardMovement / boxSize);\n\t\t\t\t\tfor (let i = 0; i < noOfBoxes; i++) {\n\t\t\t\t\t\tbox.close = box.open + column.direction * boxSize;\n\t\t\t\t\t\tconst prevBoxClose = box.close;\n\t\t\t\t\t\tcolumn.boxes.push(box);\n\t\t\t\t\t\tbox = createBox(d, dateAccessor, dateMutator);\n\t\t\t\t\t\tbox.open = prevBoxClose;\n\t\t\t\t\t}\n\n\t\t\t\t\tcolumnData.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tupdateColumns(columnData, dateAccessor, dateMutator);\n\n\t\treturn columnData;\n\t}\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\tcalculator.dateMutator = function(x) {\n\t\tif (!arguments.length) return dateMutator;\n\t\tdateMutator = x;\n\t\treturn calculator;\n\t};\n\tcalculator.dateAccessor = function(x) {\n\t\tif (!arguments.length) return dateAccessor;\n\t\tdateAccessor = x;\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nimport { merge, isNotDefined, functor } from \"../utils\";\n\nimport atr from \"./atr\";\n\nimport { Renko as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\tlet options = defaultOptions;\n\n\tlet dateAccessor = d => d.date;\n\tlet dateMutator = (d, date) => { d.date = date; };\n\n\tfunction calculator(rawData) {\n\t\tconst { reversalType, fixedBrickSize, sourcePath, windowSize } = options;\n\n\t\tconst source = sourcePath === \"high/low\"\n\t\t\t? d => { return { high: d.high, low: d.low }; }\n\t\t\t: d => { return { high: d.close, low: d.close }; };\n\n\t\tconst pricingMethod = source;\n\t\tlet brickSize;\n\n\t\tif (reversalType === \"ATR\") {\n\t\t\t// calculateATR(rawData, period);\n\t\t\tconst atrAlgorithm = atr().options({ windowSize });\n\n\t\t\tconst atrCalculator = merge()\n\t\t\t\t.algorithm(atrAlgorithm)\n\t\t\t\t.merge((d, c) => { d[\"atr\" + windowSize] = c; } );\n\n\t\t\tatrCalculator(rawData);\n\t\t\tbrickSize = d => d[\"atr\" + windowSize];\n\t\t} else {\n\t\t\tbrickSize = functor(fixedBrickSize);\n\t\t}\n\n\t\tconst renkoData = [];\n\n\t\tlet index = 0, prevBrickClose = rawData[index].open, prevBrickOpen = rawData[index].open;\n\t\tlet brick = {}, direction = 0;\n\n\t\trawData.forEach(function(d, idx) {\n\t\t\tif (isNotDefined(brick.from)) {\n\t\t\t\tbrick.high = d.high;\n\t\t\t\tbrick.low = d.low;\n\t\t\t\tbrick.startOfYear = d.startOfYear;\n\t\t\t\tbrick.startOfQuarter = d.startOfQuarter;\n\t\t\t\tbrick.startOfMonth = d.startOfMonth;\n\t\t\t\tbrick.startOfWeek = d.startOfWeek;\n\n\t\t\t\tbrick.from = idx;\n\t\t\t\tbrick.fromDate = dateAccessor(d);\n\t\t\t\t// indexMutator(brick, index++);\n\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t}\n\t\t\tbrick.volume = (brick.volume || 0) + d.volume;\n\n\t\t\tconst prevCloseToHigh = (prevBrickClose - pricingMethod(d).high),\n\t\t\t\tprevCloseToLow = (prevBrickClose - pricingMethod(d).low),\n\t\t\t\tprevOpenToHigh = (prevBrickOpen - pricingMethod(d).high),\n\t\t\t\tprevOpenToLow = (prevBrickOpen - pricingMethod(d).low),\n\t\t\t\tpriceMovement = Math.min(\n\t\t\t\t\tMath.abs(prevCloseToHigh),\n\t\t\t\t\tMath.abs(prevCloseToLow),\n\t\t\t\t\tMath.abs(prevOpenToHigh),\n\t\t\t\t\tMath.abs(prevOpenToLow));\n\n\n\t\t\tbrick.high = Math.max(brick.high, d.high);\n\t\t\tbrick.low = Math.min(brick.low, d.low);\n\n\t\t\tif (!brick.startOfYear) {\n\t\t\t\tbrick.startOfYear = d.startOfYear;\n\t\t\t\tif (brick.startOfYear) {\n\t\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t\t\t// brick.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!brick.startOfQuarter) {\n\t\t\t\tbrick.startOfQuarter = d.startOfQuarter;\n\t\t\t\tif (brick.startOfQuarter && !brick.startOfYear) {\n\t\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t\t\t// brick.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!brick.startOfMonth) {\n\t\t\t\tbrick.startOfMonth = d.startOfMonth;\n\t\t\t\tif (brick.startOfMonth && !brick.startOfQuarter) {\n\t\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t\t\t// brick.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!brick.startOfWeek) {\n\t\t\t\tbrick.startOfWeek = d.startOfWeek;\n\t\t\t\tif (brick.startOfWeek && !brick.startOfMonth) {\n\t\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t\t\t// brick.displayDate = d.displayDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// d.brick = JSON.stringify(brick);\n\t\t\tif (brickSize(d)) {\n\t\t\t\tconst noOfBricks = Math.floor(priceMovement / brickSize(d));\n\n\t\t\t\tbrick.open = (Math.abs(prevCloseToHigh) < Math.abs(prevOpenToHigh)\n\t\t\t\t\t|| Math.abs(prevCloseToLow) < Math.abs(prevOpenToLow))\n\t\t\t\t\t? prevBrickClose\n\t\t\t\t\t: prevBrickOpen;\n\n\t\t\t\tif (noOfBricks >= 1) {\n\t\t\t\t\tlet j = 0;\n\t\t\t\t\tfor (j = 0; j < noOfBricks; j++) {\n\t\t\t\t\t\tbrick.close = (brick.open < pricingMethod(d).high)\n\t\t\t\t\t\t\t// if brick open is less than current price it means it is green/hollow brick\n\t\t\t\t\t\t\t? brick.open + brickSize(d)\n\t\t\t\t\t\t\t: brick.open - brickSize(d);\n\t\t\t\t\t\tdirection = brick.close > brick.open ? 1 : -1;\n\t\t\t\t\t\tbrick.direction = direction;\n\t\t\t\t\t\tbrick.to = idx;\n\t\t\t\t\t\tbrick.toDate = dateAccessor(d);\n\t\t\t\t\t\t// brick.diff = brick.open - brick.close;\n\t\t\t\t\t\t// brick.atr = d.atr;\n\t\t\t\t\t\tbrick.fullyFormed = true;\n\t\t\t\t\t\trenkoData.push(brick);\n\n\t\t\t\t\t\tprevBrickClose = brick.close;\n\t\t\t\t\t\tprevBrickOpen = brick.open;\n\n\t\t\t\t\t\tconst newBrick = {\n\t\t\t\t\t\t\thigh: brick.high,\n\t\t\t\t\t\t\tlow: brick.low,\n\t\t\t\t\t\t\topen: brick.close,\n\t\t\t\t\t\t\tstartOfYear: false,\n\t\t\t\t\t\t\tstartOfMonth: false,\n\t\t\t\t\t\t\tstartOfQuarter: false,\n\t\t\t\t\t\t\tstartOfWeek: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbrick = newBrick;\n\t\t\t\t\t\tbrick.from = idx;\n\t\t\t\t\t\tbrick.fromDate = dateAccessor(d);\n\t\t\t\t\t\t// indexMutator(brick, index + j);\n\t\t\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t\t\t\tbrick.volume = (brick.volume || 0) + d.volume;\n\t\t\t\t\t}\n\t\t\t\t\tindex = index + j - 1;\n\t\t\t\t\tbrick = {};\n\t\t\t\t} else {\n\t\t\t\t\tif (idx === rawData.length - 1) {\n\t\t\t\t\t\tbrick.close = direction > 0 ? pricingMethod(d).high : pricingMethod(d).low;\n\t\t\t\t\t\tbrick.to = idx;\n\t\t\t\t\t\tbrick.toDate = dateAccessor(d);\n\t\t\t\t\t\tdateMutator(brick, dateAccessor(d));\n\t\t\t\t\t\tbrick.fullyFormed = false;\n\t\t\t\t\t\trenkoData.push(brick);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\t\treturn renkoData;\n\n\t}\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\tcalculator.dateMutator = function(x) {\n\t\tif (!arguments.length) return dateMutator;\n\t\tdateMutator = x;\n\t\treturn calculator;\n\t};\n\tcalculator.dateAccessor = function(x) {\n\t\tif (!arguments.length) return dateAccessor;\n\t\tdateAccessor = x;\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\n/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/macd.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport ema from \"./ema\";\n\nimport { isDefined, zipper } from \"../utils\";\nimport { MACD as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { fast, slow, signal, sourcePath } = options;\n\n\t\tconst fastEMA = ema()\n\t\t\t.options({ windowSize: fast, sourcePath });\n\n\t\tconst slowEMA = ema()\n\t\t\t.options({ windowSize: slow, sourcePath });\n\n\t\tconst signalEMA = ema()\n\t\t\t.options({ windowSize: signal, sourcePath: undefined });\n\n\t\tconst macdCalculator = zipper()\n\t\t\t.combine((fastEMA, slowEMA) => (isDefined(fastEMA) && isDefined(slowEMA)) ? fastEMA - slowEMA : undefined);\n\n\t\tconst macdArray = macdCalculator(fastEMA(data), slowEMA(data));\n\n\t\tconst undefinedArray = new Array(slow);\n\t\tconst signalArray = undefinedArray.concat(signalEMA(macdArray.slice(slow)));\n\n\t\tconst zip = zipper()\n\t\t\t.combine((macd, signal) => ({\n\t\t\t\tmacd,\n\t\t\t\tsignal,\n\t\t\t\tdivergence: (isDefined(macd) && isDefined(signal)) ? macd - signal : undefined,\n\t\t\t}));\n\n\t\tconst macd = zip(macdArray, signalArray);\n\n\t\treturn macd;\n\t}\n\n\tcalculator.undefinedLength = function() {\n\t\tconst { slow, signal } = options;\n\t\treturn slow + signal - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\n/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/relativeStrengthIndex.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport { mean } from \"d3-array\";\n\nimport { isDefined, last, slidingWindow, path } from \"../utils\";\nimport { RSI as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, sourcePath } = options;\n\n\t\tconst source = path(sourcePath);\n\t\tlet prevAvgGain, prevAvgLoss;\n\t\tconst rsiAlgorithm = slidingWindow()\n\t\t\t.windowSize(windowSize)\n\t\t\t.accumulator((values) => {\n\n\t\t\t\tconst avgGain = isDefined(prevAvgGain)\n\t\t\t\t\t? (prevAvgGain * (windowSize - 1) + last(values).gain) / windowSize\n\t\t\t\t\t: mean(values, (each) => each.gain);\n\n\t\t\t\tconst avgLoss = isDefined(prevAvgLoss)\n\t\t\t\t\t? (prevAvgLoss * (windowSize - 1) + last(values).loss) / windowSize\n\t\t\t\t\t: mean(values, (each) => each.loss);\n\n\t\t\t\tconst relativeStrength = avgGain / avgLoss;\n\t\t\t\tconst rsi = 100 - (100 / (1 + relativeStrength));\n\n\t\t\t\tprevAvgGain = avgGain;\n\t\t\t\tprevAvgLoss = avgLoss;\n\n\t\t\t\treturn rsi;\n\t\t\t});\n\n\t\tconst gainsAndLossesCalculator = slidingWindow()\n\t\t\t.windowSize(2)\n\t\t\t.undefinedValue(() => [0, 0])\n\t\t\t.accumulator(tuple => {\n\t\t\t\tconst prev = tuple[0];\n\t\t\t\tconst now = tuple[1];\n\t\t\t\tconst change = source(now) - source(prev);\n\t\t\t\treturn {\n\t\t\t\t\tgain: Math.max(change, 0),\n\t\t\t\t\tloss: Math.abs(Math.min(change, 0)),\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst gainsAndLosses = gainsAndLossesCalculator(data);\n\n\t\tconst rsiData = rsiAlgorithm(gainsAndLosses);\n\n\t\treturn rsiData;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\n/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/stochasticOscillator.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport { max, min, mean } from \"d3-array\";\n\nimport { last, slidingWindow, zipper } from \"../utils\";\nimport { FullStochasticOscillator as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tlet source = d => ({ open: d.open, high: d.high, low: d.low, close: d.close });\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, kWindowSize, dWindowSize } = options;\n\n\t\tconst high = d => source(d).high,\n\t\t\tlow = d => source(d).low,\n\t\t\tclose = d => source(d).close;\n\n\t\tconst kWindow = slidingWindow()\n\t\t\t.windowSize(windowSize)\n\t\t\t.accumulator(values => {\n\n\t\t\t\tconst highestHigh = max(values, high);\n\t\t\t\tconst lowestLow = min(values, low);\n\n\t\t\t\tconst currentClose = close(last(values));\n\t\t\t\tconst k = (currentClose - lowestLow) / (highestHigh - lowestLow) * 100;\n\n\t\t\t\treturn k;\n\t\t\t});\n\n\t\tconst kSmoothed = slidingWindow()\n\t\t\t.skipInitial(windowSize - 1)\n\t\t\t.windowSize(kWindowSize)\n\t\t\t.accumulator(values => mean(values));\n\n\t\tconst dWindow = slidingWindow()\n\t\t\t.skipInitial(windowSize - 1 + kWindowSize - 1)\n\t\t\t.windowSize(dWindowSize)\n\t\t\t.accumulator(values => mean(values));\n\n\t\tconst stoAlgorithm = zipper()\n\t\t\t.combine((K, D) => ({ K, D }));\n\n\t\tconst kData = kSmoothed(kWindow(data));\n\t\tconst dData = dWindow(kData);\n\n\t\tconst indicatorData = stoAlgorithm(kData, dData);\n\n\t\treturn indicatorData;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize, kWindowSize, dWindowSize } = options;\n\t\treturn windowSize + kWindowSize + dWindowSize;\n\t};\n\tcalculator.source = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn source;\n\t\t}\n\t\tsource = x;\n\t\treturn calculator;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nimport forceIndex from \"./forceIndex\";\nimport ema from \"./ema\";\nimport sma from \"./sma\";\nimport { zipper } from \"../utils\";\nimport { SmoothedForceIndex as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\n\tconst underlyingAlgorithm = forceIndex();\n\tconst merge = zipper()\n\t\t.combine((force, smoothed) => {\n\t\t\treturn { force, smoothed };\n\t\t});\n\n\tlet options = defaultOptions;\n\tfunction calculator(data) {\n\t\tconst { smoothingType, smoothingWindow } = options;\n\t\tconst { sourcePath, volumePath } = options;\n\n\t\tconst algo = underlyingAlgorithm\n\t\t\t.options({ sourcePath, volumePath });\n\n\t\tconst force = algo(data);\n\n\t\tconst ma = smoothingType === \"ema\" ? ema() : sma();\n\t\tconst forceMA = ma\n\t\t\t.options({\n\t\t\t\twindowSize: smoothingWindow,\n\t\t\t\tsourcePath: undefined\n\t\t\t});\n\n\t\tconst smoothed = forceMA(force);\n\t\treturn merge(force, smoothed);\n\t}\n\n\tcalculator.undefinedLength = function() {\n\t\tconst { smoothingWindow } = options;\n\t\treturn underlyingAlgorithm.undefinedLength() + smoothingWindow - 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\n/*\nhttps://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/elderRay.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 Scott Logic Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nimport { mean } from \"d3-array\";\n\nimport ema from \"./ema\";\n\nimport { ElderRay as defaultOptions } from \"./defaultOptionsForComputation\";\nimport { isDefined, zipper, slidingWindow } from \"../utils\";\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\tlet ohlc = d => ({ open: d.open, high: d.high, low: d.low, close: d.close });\n\n\tfunction calculator(data) {\n\t\tconst { windowSize, sourcePath, movingAverageType } = options;\n\n\t\tconst meanAlgorithm = movingAverageType === \"ema\"\n\t\t\t? ema().options({ windowSize, sourcePath })\n\t\t\t: slidingWindow().windowSize(windowSize).accumulator(values => mean(values)).sourcePath(sourcePath);\n\n\t\tconst zip = zipper()\n\t\t\t.combine((datum, mean) => {\n\t\t\t\tconst bullPower = isDefined(mean) ? ohlc(datum).high - mean : undefined;\n\t\t\t\tconst bearPower = isDefined(mean) ? ohlc(datum).low - mean : undefined;\n\t\t\t\treturn { bullPower, bearPower };\n\t\t\t});\n\n\t\tconst newData = zip(data, meanAlgorithm(data));\n\t\treturn newData;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\tconst { windowSize } = options;\n\t\treturn windowSize - 1;\n\t};\n\tcalculator.ohlc = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn ohlc;\n\t\t}\n\t\tohlc = x;\n\t\treturn calculator;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nimport { mappedSlidingWindow, isNotDefined, isDefined } from \"../utils\";\nimport { SAR as defaultOptions } from \"./defaultOptionsForComputation\";\n\nfunction calc(prev, now) {\n\tconst risingSar = prev.risingSar\n\t\t+ prev.af * (prev.risingEp - prev.risingSar);\n\n\tconst fallingSar = prev.fallingSar\n\t\t- prev.af * (prev.fallingSar - prev.fallingEp);\n\n\tconst risingEp = Math.max(prev.risingEp, now.high);\n\tconst fallingEp = Math.min(prev.fallingEp, now.low);\n\n\treturn {\n\t\trisingSar,\n\t\tfallingSar,\n\t\trisingEp,\n\t\tfallingEp,\n\t};\n}\n\nexport default function() {\n\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { accelerationFactor, maxAccelerationFactor } = options;\n\n\t\tconst algorithm = mappedSlidingWindow()\n\t\t\t.windowSize(2)\n\t\t\t.undefinedValue(({ high, low }) => {\n\t\t\t\treturn {\n\t\t\t\t\trisingSar: low,\n\t\t\t\t\trisingEp: high,\n\t\t\t\t\tfallingSar: high,\n\t\t\t\t\tfallingEp: low,\n\t\t\t\t\taf: accelerationFactor,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.accumulator(([prev, now]) => {\n\n\t\t\t\tconst {\n\t\t\t\t\trisingSar,\n\t\t\t\t\tfallingSar,\n\t\t\t\t\trisingEp,\n\t\t\t\t\tfallingEp,\n\t\t\t\t} = calc(prev, now);\n\n\t\t\t\tif (isNotDefined(prev.use)\n\t\t\t\t\t\t&& risingSar > now.low\n\t\t\t\t\t\t&& fallingSar < now.high) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\trisingSar,\n\t\t\t\t\t\tfallingSar,\n\t\t\t\t\t\trisingEp,\n\t\t\t\t\t\tfallingEp,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst use = isDefined(prev.use)\n\t\t\t\t\t? prev.use === \"rising\"\n\t\t\t\t\t\t? risingSar > now.low ? \"falling\" : \"rising\"\n\t\t\t\t\t\t: fallingSar < now.high ? \"rising\" : \"falling\"\n\t\t\t\t\t: risingSar > now.low\n\t\t\t\t\t\t? \"falling\"\n\t\t\t\t\t\t: \"rising\";\n\n\t\t\t\tconst current = prev.use === use\n\t\t\t\t\t? {\n\t\t\t\t\t\taf: Math.min(maxAccelerationFactor, prev.af + accelerationFactor),\n\t\t\t\t\t\tfallingEp,\n\t\t\t\t\t\trisingEp,\n\t\t\t\t\t\tfallingSar,\n\t\t\t\t\t\trisingSar,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\taf: accelerationFactor,\n\t\t\t\t\t\tfallingEp: now.low,\n\t\t\t\t\t\trisingEp: now.high,\n\t\t\t\t\t\tfallingSar: Math.max(prev.risingEp, now.high),\n\t\t\t\t\t\trisingSar: Math.min(prev.fallingEp, now.low),\n\t\t\t\t\t};\n\n\t\t\t\tconst { date, high, low } = now;\n\t\t\t\treturn {\n\t\t\t\t\tdate,\n\t\t\t\t\thigh,\n\t\t\t\t\tlow,\n\t\t\t\t\t...current,\n\t\t\t\t\tuse,\n\t\t\t\t\tsar: use === \"falling\" ? current.fallingSar : current.risingSar,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst calculatedData = algorithm(data).map(d => d.sar);\n\t\t// console.log(calculatedData);\n\n\t\treturn calculatedData;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\treturn 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nimport { head, path, isDefined, isNotDefined } from \"../utils\";\nimport { Change as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { basePath, mainKeys, compareKeys } = options;\n\t\tconst base = path(basePath);\n\n\t\tconst first = head(data);\n\t\tconst b = base(first);\n\n\t\t// eslint-disable-next-line prefer-const\n\t\tlet firsts = {};\n\n\t\tconst compareData = data.map(d => {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet result = {};\n\n\t\t\tmainKeys.forEach(key => {\n\t\t\t\tif (typeof d[key] === \"object\") {\n\t\t\t\t\tresult[key] = {};\n\t\t\t\t\tObject.keys(d[key]).forEach(subkey => {\n\t\t\t\t\t\tresult[key][subkey] = (d[key][subkey] - b) / b;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tresult[key] = (d[key] - b) / b;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcompareKeys.forEach(key => {\n\t\t\t\tif (isDefined(d[key]) && isNotDefined(firsts[key])) {\n\t\t\t\t\tfirsts[key] = d[key];\n\t\t\t\t}\n\t\t\t\tif (isDefined(d[key]) && isDefined(firsts[key])) {\n\t\t\t\t\tresult[key] = (d[key] - firsts[key]) / firsts[key];\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t});\n\t\t// console.log(compareData[20]);\n\t\treturn compareData;\n\t}\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\treturn calculator;\n}","\n\nimport { slidingWindow } from \"../utils\";\nimport { Change as defaultOptions } from \"./defaultOptionsForComputation\";\n\nexport default function() {\n\tlet options = defaultOptions;\n\n\tfunction calculator(data) {\n\t\tconst { sourcePath } = options;\n\n\t\tconst algo = slidingWindow()\n\t\t\t.windowSize(2)\n\t\t\t.sourcePath(sourcePath)\n\t\t\t.accumulator(([prev, curr]) => {\n\t\t\t\tconst absoluteChange = curr - prev;\n\t\t\t\tconst percentChange = absoluteChange * 100 / prev;\n\t\t\t\treturn { absoluteChange, percentChange };\n\t\t\t});\n\n\t\tconst newData = algo(data);\n\n\t\treturn newData;\n\t}\n\tcalculator.undefinedLength = function() {\n\t\treturn 1;\n\t};\n\tcalculator.options = function(x) {\n\t\tif (!arguments.length) {\n\t\t\treturn options;\n\t\t}\n\t\toptions = { ...defaultOptions, ...x };\n\t\treturn calculator;\n\t};\n\n\treturn calculator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { sma } from \"../calculator\";\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"SMA\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.sma);\n\n\tconst underlyingAlgorithm = sma();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.sma = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"undefinedLength\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { wma } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"WMA\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.wma);\n\n\tconst underlyingAlgorithm = wma();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.wma = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"undefinedLength\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { tma } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"TMA\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.tma);\n\n\tconst underlyingAlgorithm = tma();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.tma = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"undefinedLength\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport baseIndicator from \"./baseIndicator\";\nimport { bollingerband } from \"../calculator\";\n\nconst ALGORITHM_TYPE = \"BollingerBand\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = bollingerband();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.bollingerBand = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { heikinAshi } from \"../calculator\";\nimport baseIndicator from \"./baseIndicator\";\n\nimport { rebind, merge } from \"../utils\";\n\nconst ALGORITHM_TYPE = \"HeikinAshi\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.ha);\n\n\tconst underlyingAlgorithm = heikinAshi();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => {\n\t\t\treturn { ...datum, ...indicator };\n\t\t});\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\t// rebind(indicator, underlyingAlgorithm, \"windowSize\", \"source\");\n\trebind(indicator, mergedAlgorithm, \"merge\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind } from \"../utils\";\n\nimport { kagi } from \"../calculator\";\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"Kagi\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = kagi();\n\n\tconst indicator = underlyingAlgorithm;\n\n\trebind(indicator, base, \"id\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"dateAccessor\", \"dateMutator\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind } from \"../utils\";\n\nimport { pointAndFigure } from \"../calculator\";\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"PointAndFigure\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = pointAndFigure();\n\n\tconst indicator = underlyingAlgorithm;\n\n\trebind(indicator, base, \"id\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"dateAccessor\", \"dateMutator\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\t// rebind(indicator, mergedAlgorithm, \"merge\"/*, \"skipUndefined\"*/);\n\n\treturn indicator;\n}","\n\nimport { rebind } from \"../utils\";\n\nimport { renko } from \"../calculator\";\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"Renko\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = renko();\n\n\tconst indicator = underlyingAlgorithm;\n\n\trebind(indicator, base, \"id\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"dateAccessor\", \"dateMutator\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\n\treturn indicator;\n}","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { macd } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\nimport { MACD as appearanceOptions } from \"./defaultOptionsForAppearance\";\n\nconst ALGORITHM_TYPE = \"MACD\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.fill(appearanceOptions.fill)\n\t\t.stroke(appearanceOptions.stroke)\n\t\t.accessor(d => d.macd);\n\n\tconst underlyingAlgorithm = macd();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.macd = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\", \"undefinedLength\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { rsi } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"RSI\";\n\nexport default function() {\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.rsi);\n\n\tconst underlyingAlgorithm = rsi();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.rsi = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\", \"undefinedLength\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\nimport { atr } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"ATR\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = atr();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.atr = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { sto } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"STO\";\n\nexport default function() {\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = sto();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.sto = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\", \"undefinedLength\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { forceIndex } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"ForceIndex\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.forceIndex);\n\n\tconst underlyingAlgorithm = forceIndex();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.forceIndex = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { sar } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"SMA\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.sar);\n\n\tconst underlyingAlgorithm = sar();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.sar = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"undefinedLength\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\nimport { elderRay } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"ElderRay\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.elderRay);\n\n\tconst underlyingAlgorithm = elderRay();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.elderRay = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { change } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"Change\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE);\n\n\tconst underlyingAlgorithm = change();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => {\n\t\t\tdatum.absoluteChange = indicator.absoluteChange;\n\t\t\tdatum.percentChange = indicator.percentChange;\n\t\t});\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, isDefined, isNotDefined, merge, slidingWindow } from \"../utils\";\n\nimport { ElderImpulse as appearanceOptions } from \"./defaultOptionsForAppearance\";\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"ElderImpulse\";\n\nexport default function() {\n\n\tlet macdSource, emaSource;\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t// .stroke(d => stroke[d.elderImpulse])\n\t\t.stroke(appearanceOptions.stroke)\n\t\t.fill(undefined);\n\n\tconst underlyingAlgorithm = slidingWindow()\n\t\t.windowSize(2)\n\t\t.undefinedValue(\"neutral\")\n\t\t.accumulator(([prev, curr]) => {\n\t\t\tif (isNotDefined(macdSource)) throw new Error(`macdSource not defined for ${ALGORITHM_TYPE} calculator`);\n\t\t\tif (isNotDefined(emaSource)) throw new Error(`emaSource not defined for ${ALGORITHM_TYPE} calculator`);\n\n\t\t\tif (isDefined(macdSource(prev)) && isDefined(emaSource(prev))) {\n\t\t\t\tconst prevMACDDivergence = macdSource(prev).divergence;\n\t\t\t\tconst currMACDDivergence = macdSource(curr).divergence;\n\n\t\t\t\tconst prevEMA = emaSource(prev);\n\t\t\t\tconst currEMA = emaSource(curr);\n\n\t\t\t\tif (currMACDDivergence >= prevMACDDivergence\n\t\t\t\t\t&& currEMA >= prevEMA) return \"up\";\n\n\t\t\t\tif (currMACDDivergence <= prevMACDDivergence\n\t\t\t\t\t&& currEMA <= prevEMA) return \"down\";\n\t\t\t}\n\t\t\treturn \"neutral\";\n\t\t});\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.elderImpulse = indicator; });\n\n\t// eslint-disable-next-line prefer-const\n\tlet indicator = function(data, options = { merge: true }) {\n\t\tconst newData = options.merge\n\t\t\t? mergedAlgorithm(data)\n\t\t\t: underlyingAlgorithm(data);\n\n\t\treturn newData;\n\t};\n\tindicator.macdSource = function(x) {\n\t\tif (!arguments.length) return macdSource;\n\t\tmacdSource = x;\n\t\treturn indicator;\n\t};\n\tindicator.emaSource = function(x) {\n\t\tif (!arguments.length) return emaSource;\n\t\temaSource = x;\n\t\treturn indicator;\n\t};\n\trebind(indicator, base, \"id\", \"echo\", \"type\", \"stroke\");\n\t// rebind(indicator, underlyingAlgorithm, \"windowSize\", \"movingAverageType\", \"multiplier\", \"source\");\n\trebind(indicator, mergedAlgorithm, \"merge\", \"skipUndefined\");\n\n\treturn indicator;\n}\n","\n\nimport { rebind, merge } from \"../utils\";\n\nimport { compare } from \"../calculator\";\n\nimport baseIndicator from \"./baseIndicator\";\n\nconst ALGORITHM_TYPE = \"Compare\";\n\nexport default function() {\n\n\tconst base = baseIndicator()\n\t\t.type(ALGORITHM_TYPE)\n\t\t.accessor(d => d.compare);\n\n\tconst underlyingAlgorithm = compare();\n\n\tconst mergedAlgorithm = merge()\n\t\t.algorithm(underlyingAlgorithm)\n\t\t.merge((datum, indicator) => { datum.compare = indicator; });\n\n\tconst indicator = function(data, options = { merge: true }) {\n\t\tif (options.merge) {\n\t\t\tif (!base.accessor()) throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);\n\t\t\treturn mergedAlgorithm(data);\n\t\t}\n\t\treturn underlyingAlgorithm(data);\n\t};\n\n\trebind(indicator, base, \"id\", \"accessor\", \"stroke\", \"fill\", \"echo\", \"type\");\n\trebind(indicator, underlyingAlgorithm, \"options\");\n\trebind(indicator, mergedAlgorithm, \"merge\");\n\n\treturn indicator;\n}\n","\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass TypeChooser extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\ttype: this.props.type\n\t\t};\n\t\tthis.handleTypeChange = this.handleTypeChange.bind(this);\n\t}\n\thandleTypeChange(e) {\n\t\t// console.log(e.target.value);\n\t\tthis.setState({\n\t\t\ttype: e.target.value\n\t\t});\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<label>Type: </label>\n\t\t\t\t<select name=\"type\" id=\"type\" onChange={this.handleTypeChange} value={this.state.type} >\n\t\t\t\t\t<option value=\"svg\">svg</option>\n\t\t\t\t\t<option value=\"hybrid\">canvas + svg</option>\n\t\t\t\t</select>\n\t\t\t\t<div style={this.props.style}>\n\t\t\t\t\t{this.props.children(this.state.type)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nTypeChooser.propTypes = {\n\ttype: PropTypes.oneOf([\"svg\", \"hybrid\"]),\n\tchildren: PropTypes.func.isRequired,\n\tstyle: PropTypes.object.isRequired,\n};\n\nTypeChooser.defaultProps = {\n\ttype: \"hybrid\",\n\tstyle: {},\n};\n\nexport default TypeChooser;\n","\n\nimport saveAsPng from \"save-svg-as-png\";\nimport { isDefined } from \"../utils\";\n\nconst dx = 0;\nconst dy = 0;\n\nconst SaveChartAsImage = {\n\tsave(doc, container, background, cb) {\n\t\tsaveAsPng.svgAsDataUri(container.getElementsByTagName(\"svg\")[0], {}, function(uri) {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\tlet image = new Image();\n\t\t\timage.onload = function() {\n\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet canvas = doc.createElement(\"canvas\");\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet context = canvas.getContext(\"2d\");\n\n\t\t\t\tif (isDefined(background)) {\n\t\t\t\t\tcontext.fillStyle = background;\n\t\t\t\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\t\t\t}\n\t\t\t\tconst canvasList = container.getElementsByTagName(\"canvas\");\n\t\t\t\tfor (let i = 0; i < canvasList.length; i++) {\n\t\t\t\t\tconst each = canvasList[i];\n\t\t\t\t\tif (isDefined(each)) {\n\t\t\t\t\t\tconst parent = each.parentNode.parentNode.getBoundingClientRect();\n\t\t\t\t\t\tconst rect = each.getBoundingClientRect();\n\t\t\t\t\t\tcontext.drawImage(each, rect.left - parent.left + dx, rect.top - parent.top + dy);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontext.drawImage(image, dx, dy);\n\t\t\t\tcb(canvas.toDataURL(\"image/png\"));\n\t\t\t};\n\t\t\timage.src = uri;\n\t\t});\n\t},\n\tsaveWithWhiteBG(doc, container, cb) {\n\t\treturn this.saveWithBG(doc, container, \"white\", cb);\n\t},\n\tsaveWithDarkBG(doc, container, cb) {\n\t\treturn this.saveWithBG(doc, container, \"#303030\", cb);\n\t},\n\tsaveWithBG(doc, container, background, cb) {\n\t\treturn this.save(doc, container, background, cb);\n\t},\n\tsaveChartAsImage(container) {\n\t\tthis.saveWithWhiteBG(document, container, function(src) {\n\t\t\tconst a = document.createElement(\"a\");\n\t\t\ta.setAttribute(\"href\", src);\n\t\t\ta.setAttribute(\"download\", \"Chart.png\");\n\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.addEventListener(\"click\", function(/* e */) {\n\t\t\t\ta.parentNode.removeChild(a);\n\t\t\t});\n\n\t\t\ta.click();\n\t\t});\n\t}\n};\n\nexport default SaveChartAsImage;","'use strict';\n\n(function () {\n var out$ = typeof exports != 'undefined' && exports || typeof define != 'undefined' && {} || this || window;\n if (typeof define !== 'undefined') define('save-svg-as-png', [], function () {\n return out$;\n });\n out$.default = out$;\n\n var xmlNs = 'http://www.w3.org/2000/xmlns/';\n var xhtmlNs = 'http://www.w3.org/1999/xhtml';\n var svgNs = 'http://www.w3.org/2000/svg';\n var doctype = '<?xml version=\"1.0\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" [<!ENTITY nbsp \"&#160;\">]>';\n var urlRegex = /url\\([\"']?(.+?)[\"']?\\)/;\n var fontFormats = {\n woff2: 'font/woff2',\n woff: 'font/woff',\n otf: 'application/x-font-opentype',\n ttf: 'application/x-font-ttf',\n eot: 'application/vnd.ms-fontobject',\n sfnt: 'application/font-sfnt',\n svg: 'image/svg+xml'\n };\n\n var isElement = function isElement(obj) {\n return obj instanceof HTMLElement || obj instanceof SVGElement;\n };\n var requireDomNode = function requireDomNode(el) {\n if (!isElement(el)) throw new Error('an HTMLElement or SVGElement is required; got ' + el);\n };\n var requireDomNodePromise = function requireDomNodePromise(el) {\n return new Promise(function (resolve, reject) {\n if (isElement(el)) resolve(el);else reject(new Error('an HTMLElement or SVGElement is required; got ' + el));\n });\n };\n var isExternal = function isExternal(url) {\n return url && url.lastIndexOf('http', 0) === 0 && url.lastIndexOf(window.location.host) === -1;\n };\n\n var getFontMimeTypeFromUrl = function getFontMimeTypeFromUrl(fontUrl) {\n var formats = Object.keys(fontFormats).filter(function (extension) {\n return fontUrl.indexOf('.' + extension) > 0;\n }).map(function (extension) {\n return fontFormats[extension];\n });\n if (formats) return formats[0];\n console.error('Unknown font format for ' + fontUrl + '. Fonts may not be working correctly.');\n return 'application/octet-stream';\n };\n\n var arrayBufferToBase64 = function arrayBufferToBase64(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n for (var i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }return window.btoa(binary);\n };\n\n var getDimension = function getDimension(el, clone, dim) {\n var v = el.viewBox && el.viewBox.baseVal && el.viewBox.baseVal[dim] || clone.getAttribute(dim) !== null && !clone.getAttribute(dim).match(/%$/) && parseInt(clone.getAttribute(dim)) || el.getBoundingClientRect()[dim] || parseInt(clone.style[dim]) || parseInt(window.getComputedStyle(el).getPropertyValue(dim));\n return typeof v === 'undefined' || v === null || isNaN(parseFloat(v)) ? 0 : v;\n };\n\n var getDimensions = function getDimensions(el, clone, width, height) {\n if (el.tagName === 'svg') return {\n width: width || getDimension(el, clone, 'width'),\n height: height || getDimension(el, clone, 'height')\n };else if (el.getBBox) {\n var _el$getBBox = el.getBBox(),\n x = _el$getBBox.x,\n y = _el$getBBox.y,\n _width = _el$getBBox.width,\n _height = _el$getBBox.height;\n\n return {\n width: x + _width,\n height: y + _height\n };\n }\n };\n\n var reEncode = function reEncode(data) {\n return decodeURIComponent(encodeURIComponent(data).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n var c = String.fromCharCode('0x' + p1);\n return c === '%' ? '%25' : c;\n }));\n };\n\n var uriToBlob = function uriToBlob(uri) {\n var byteString = window.atob(uri.split(',')[1]);\n var mimeString = uri.split(',')[0].split(':')[1].split(';')[0];\n var buffer = new ArrayBuffer(byteString.length);\n var intArray = new Uint8Array(buffer);\n for (var i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n return new Blob([buffer], { type: mimeString });\n };\n\n var query = function query(el, selector) {\n if (!selector) return;\n try {\n return el.querySelector(selector) || el.parentNode && el.parentNode.querySelector(selector);\n } catch (err) {\n console.warn('Invalid CSS selector \"' + selector + '\"', err);\n }\n };\n\n var detectCssFont = function detectCssFont(rule, href) {\n // Match CSS font-face rules to external links.\n // @font-face {\n // src: local('Abel'), url(https://fonts.gstatic.com/s/abel/v6/UzN-iejR1VoXU2Oc-7LsbvesZW2xOQ-xsNqO47m55DA.woff2);\n // }\n var match = rule.cssText.match(urlRegex);\n var url = match && match[1] || '';\n if (!url || url.match(/^data:/) || url === 'about:blank') return;\n var fullUrl = url.startsWith('../') ? href + '/../' + url : url.startsWith('./') ? href + '/.' + url : url;\n return {\n text: rule.cssText,\n format: getFontMimeTypeFromUrl(fullUrl),\n url: fullUrl\n };\n };\n\n var inlineImages = function inlineImages(el) {\n return Promise.all(Array.from(el.querySelectorAll('image')).map(function (image) {\n var href = image.getAttributeNS('http://www.w3.org/1999/xlink', 'href') || image.getAttribute('href');\n if (!href) return Promise.resolve(null);\n if (isExternal(href)) {\n href += (href.indexOf('?') === -1 ? '?' : '&') + 't=' + new Date().valueOf();\n }\n return new Promise(function (resolve, reject) {\n var canvas = document.createElement('canvas');\n var img = new Image();\n img.crossOrigin = 'anonymous';\n img.src = href;\n img.onerror = function () {\n return reject(new Error('Could not load ' + href));\n };\n img.onload = function () {\n canvas.width = img.width;\n canvas.height = img.height;\n canvas.getContext('2d').drawImage(img, 0, 0);\n image.setAttributeNS('http://www.w3.org/1999/xlink', 'href', canvas.toDataURL('image/png'));\n resolve(true);\n };\n });\n }));\n };\n\n var cachedFonts = {};\n var inlineFonts = function inlineFonts(fonts) {\n return Promise.all(fonts.map(function (font) {\n return new Promise(function (resolve, reject) {\n if (cachedFonts[font.url]) return resolve(cachedFonts[font.url]);\n\n var req = new XMLHttpRequest();\n req.addEventListener('load', function () {\n // TODO: it may also be worth it to wait until fonts are fully loaded before\n // attempting to rasterize them. (e.g. use https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet)\n var fontInBase64 = arrayBufferToBase64(req.response);\n var fontUri = font.text.replace(urlRegex, 'url(\"data:' + font.format + ';base64,' + fontInBase64 + '\")') + '\\n';\n cachedFonts[font.url] = fontUri;\n resolve(fontUri);\n });\n req.addEventListener('error', function (e) {\n console.warn('Failed to load font from: ' + font.url, e);\n cachedFonts[font.url] = null;\n resolve(null);\n });\n req.addEventListener('abort', function (e) {\n console.warn('Aborted loading font from: ' + font.url, e);\n resolve(null);\n });\n req.open('GET', font.url);\n req.responseType = 'arraybuffer';\n req.send();\n });\n })).then(function (fontCss) {\n return fontCss.filter(function (x) {\n return x;\n }).join('');\n });\n };\n\n var cachedRules = null;\n var styleSheetRules = function styleSheetRules() {\n if (cachedRules) return cachedRules;\n return cachedRules = Array.from(document.styleSheets).map(function (sheet) {\n try {\n return { rules: sheet.cssRules, href: sheet.href };\n } catch (e) {\n console.warn('Stylesheet could not be loaded: ' + sheet.href, e);\n return {};\n }\n });\n };\n\n var inlineCss = function inlineCss(el, options) {\n var _ref = options || {},\n selectorRemap = _ref.selectorRemap,\n modifyStyle = _ref.modifyStyle,\n modifyCss = _ref.modifyCss,\n fonts = _ref.fonts,\n excludeUnusedCss = _ref.excludeUnusedCss;\n\n var generateCss = modifyCss || function (selector, properties) {\n var sel = selectorRemap ? selectorRemap(selector) : selector;\n var props = modifyStyle ? modifyStyle(properties) : properties;\n return sel + '{' + props + '}\\n';\n };\n var css = [];\n var detectFonts = typeof fonts === 'undefined';\n var fontList = fonts || [];\n styleSheetRules().forEach(function (_ref2) {\n var rules = _ref2.rules,\n href = _ref2.href;\n\n if (!rules) return;\n Array.from(rules).forEach(function (rule) {\n if (typeof rule.style != 'undefined') {\n if (query(el, rule.selectorText)) css.push(generateCss(rule.selectorText, rule.style.cssText));else if (detectFonts && rule.cssText.match(/^@font-face/)) {\n var font = detectCssFont(rule, href);\n if (font) fontList.push(font);\n } else if (!excludeUnusedCss) {\n css.push(rule.cssText);\n }\n }\n });\n });\n\n return inlineFonts(fontList).then(function (fontCss) {\n return css.join('\\n') + fontCss;\n });\n };\n\n var downloadOptions = function downloadOptions() {\n if (!navigator.msSaveOrOpenBlob && !('download' in document.createElement('a'))) {\n return { popup: window.open() };\n }\n };\n\n out$.prepareSvg = function (el, options, done) {\n requireDomNode(el);\n\n var _ref3 = options || {},\n _ref3$left = _ref3.left,\n left = _ref3$left === undefined ? 0 : _ref3$left,\n _ref3$top = _ref3.top,\n top = _ref3$top === undefined ? 0 : _ref3$top,\n w = _ref3.width,\n h = _ref3.height,\n _ref3$scale = _ref3.scale,\n scale = _ref3$scale === undefined ? 1 : _ref3$scale,\n _ref3$responsive = _ref3.responsive,\n responsive = _ref3$responsive === undefined ? false : _ref3$responsive,\n _ref3$excludeCss = _ref3.excludeCss,\n excludeCss = _ref3$excludeCss === undefined ? false : _ref3$excludeCss;\n\n return inlineImages(el).then(function () {\n var clone = el.cloneNode(true);\n clone.style.backgroundColor = (options || {}).backgroundColor || el.style.backgroundColor;\n\n var _getDimensions = getDimensions(el, clone, w, h),\n width = _getDimensions.width,\n height = _getDimensions.height;\n\n if (el.tagName !== 'svg') {\n if (el.getBBox) {\n if (clone.getAttribute('transform') != null) {\n clone.setAttribute('transform', clone.getAttribute('transform').replace(/translate\\(.*?\\)/, ''));\n }\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.appendChild(clone);\n clone = svg;\n } else {\n console.error('Attempted to render non-SVG element', el);\n return;\n }\n }\n\n clone.setAttribute('version', '1.1');\n clone.setAttribute('viewBox', [left, top, width, height].join(' '));\n if (!clone.getAttribute('xmlns')) clone.setAttributeNS(xmlNs, 'xmlns', svgNs);\n if (!clone.getAttribute('xmlns:xlink')) clone.setAttributeNS(xmlNs, 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (responsive) {\n clone.removeAttribute('width');\n clone.removeAttribute('height');\n clone.setAttribute('preserveAspectRatio', 'xMinYMin meet');\n } else {\n clone.setAttribute('width', width * scale);\n clone.setAttribute('height', height * scale);\n }\n\n Array.from(clone.querySelectorAll('foreignObject > *')).forEach(function (foreignObject) {\n foreignObject.setAttributeNS(xmlNs, 'xmlns', foreignObject.tagName === 'svg' ? svgNs : xhtmlNs);\n });\n\n if (excludeCss) {\n var outer = document.createElement('div');\n outer.appendChild(clone);\n var src = outer.innerHTML;\n if (typeof done === 'function') done(src, width, height);else return { src: src, width: width, height: height };\n } else {\n return inlineCss(el, options).then(function (css) {\n var style = document.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = '<![CDATA[\\n' + css + '\\n]]>';\n\n var defs = document.createElement('defs');\n defs.appendChild(style);\n clone.insertBefore(defs, clone.firstChild);\n\n var outer = document.createElement('div');\n outer.appendChild(clone);\n var src = outer.innerHTML.replace(/NS\\d+:href/gi, 'xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href');\n\n if (typeof done === 'function') done(src, width, height);else return { src: src, width: width, height: height };\n });\n }\n });\n };\n\n out$.svgAsDataUri = function (el, options, done) {\n requireDomNode(el);\n return out$.prepareSvg(el, options).then(function (_ref4) {\n var src = _ref4.src,\n width = _ref4.width,\n height = _ref4.height;\n\n var svgXml = 'data:image/svg+xml;base64,' + window.btoa(reEncode(doctype + src));\n if (typeof done === 'function') {\n done(svgXml, width, height);\n }\n return svgXml;\n });\n };\n\n out$.svgAsPngUri = function (el, options, done) {\n requireDomNode(el);\n\n var _ref5 = options || {},\n _ref5$encoderType = _ref5.encoderType,\n encoderType = _ref5$encoderType === undefined ? 'image/png' : _ref5$encoderType,\n _ref5$encoderOptions = _ref5.encoderOptions,\n encoderOptions = _ref5$encoderOptions === undefined ? 0.8 : _ref5$encoderOptions,\n canvg = _ref5.canvg;\n\n var convertToPng = function convertToPng(_ref6) {\n var src = _ref6.src,\n width = _ref6.width,\n height = _ref6.height;\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var pixelRatio = window.devicePixelRatio || 1;\n\n canvas.width = width * pixelRatio;\n canvas.height = height * pixelRatio;\n canvas.style.width = canvas.width + 'px';\n canvas.style.height = canvas.height + 'px';\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\n if (canvg) canvg(canvas, src);else context.drawImage(src, 0, 0);\n\n var png = void 0;\n try {\n png = canvas.toDataURL(encoderType, encoderOptions);\n } catch (e) {\n if (typeof SecurityError !== 'undefined' && e instanceof SecurityError || e.name === 'SecurityError') {\n console.error('Rendered SVG images cannot be downloaded in this browser.');\n return;\n } else throw e;\n }\n if (typeof done === 'function') done(png, canvas.width, canvas.height);\n return Promise.resolve(png);\n };\n\n if (canvg) return out$.prepareSvg(el, options).then(convertToPng);else return out$.svgAsDataUri(el, options).then(function (uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n return resolve(convertToPng({\n src: image,\n width: image.width,\n height: image.height\n }));\n };\n image.onerror = function () {\n reject('There was an error loading the data URI as an image on the following SVG\\n' + window.atob(uri.slice(26)) + 'Open the following link to see browser\\'s diagnosis\\n' + uri);\n };\n image.src = uri;\n });\n });\n };\n\n out$.download = function (name, uri, options) {\n if (navigator.msSaveOrOpenBlob) navigator.msSaveOrOpenBlob(uriToBlob(uri), name);else {\n var saveLink = document.createElement('a');\n if ('download' in saveLink) {\n saveLink.download = name;\n saveLink.style.display = 'none';\n document.body.appendChild(saveLink);\n try {\n var blob = uriToBlob(uri);\n var url = URL.createObjectURL(blob);\n saveLink.href = url;\n saveLink.onclick = function () {\n return requestAnimationFrame(function () {\n return URL.revokeObjectURL(url);\n });\n };\n } catch (e) {\n console.error(e);\n console.warn('Error while getting object URL. Falling back to string URL.');\n saveLink.href = uri;\n }\n saveLink.click();\n document.body.removeChild(saveLink);\n } else if (options && options.popup) {\n options.popup.document.title = name;\n options.popup.location.replace(uri);\n }\n }\n };\n\n out$.saveSvg = function (el, name, options) {\n var downloadOpts = downloadOptions(); // don't inline, can't be async\n return requireDomNodePromise(el).then(function (el) {\n return out$.svgAsDataUri(el, options || {});\n }).then(function (uri) {\n return out$.download(name, uri, downloadOpts);\n });\n };\n\n out$.saveSvgAsPng = function (el, name, options) {\n var downloadOpts = downloadOptions(); // don't inline, can't be async\n return requireDomNodePromise(el).then(function (el) {\n return out$.svgAsPngUri(el, options || {});\n }).then(function (uri) {\n return out$.download(name, uri, downloadOpts);\n });\n };\n})();","import React, { Component } from \"react\";\n// import ReactDOM from \"react-dom\";\n\nimport { isDefined } from \"../utils\";\n\nfunction getDisplayName(Series) {\n\tconst name = Series.displayName || Series.name || \"Series\";\n\treturn name;\n}\n\nexport default function fitWidth(WrappedComponent, withRef = true, minWidth = 100) {\n\tclass ResponsiveComponent extends Component {\n\t\tconstructor(props) {\n\t\t\tsuper(props);\n\t\t\tthis.handleWindowResize = this.handleWindowResize.bind(this);\n\t\t\tthis.getWrappedInstance = this.getWrappedInstance.bind(this);\n\t\t\tthis.saveNode = this.saveNode.bind(this);\n\t\t\tthis.setTestCanvas = this.setTestCanvas.bind(this);\n\t\t\tthis.state = {};\n\t\t}\n\t\tsaveNode(node) {\n\t\t\tthis.node = node;\n\t\t}\n\t\tsetTestCanvas(node) {\n\t\t\tthis.testCanvas = node;\n\t\t}\n\t\tgetRatio() {\n\t\t\tif (isDefined(this.testCanvas)) {\n\t\t\t\tconst context = this.testCanvas.getContext(\"2d\");\n\n\t\t\t\tconst devicePixelRatio = window.devicePixelRatio || 1;\n\t\t\t\tconst backingStoreRatio = context.webkitBackingStorePixelRatio ||\n\t\t\t\t\tcontext.mozBackingStorePixelRatio ||\n\t\t\t\t\tcontext.msBackingStorePixelRatio ||\n\t\t\t\t\tcontext.oBackingStorePixelRatio ||\n\t\t\t\t\tcontext.backingStorePixelRatio || 1;\n\n\t\t\t\tconst ratio = devicePixelRatio / backingStoreRatio;\n\t\t\t\t// console.log(\"ratio = \", ratio);\n\t\t\t\treturn ratio;\n\t\t\t}\n\t\t\treturn 1;\n\t\t}\n\t\tcomponentDidMount() {\n\t\t\twindow.addEventListener(\"resize\", this.handleWindowResize);\n\t\t\tthis.handleWindowResize();\n\t\t\t/* eslint-disable react/no-did-mount-set-state */\n\t\t\tthis.setState({\n\t\t\t\tratio: this.getRatio(),\n\t\t\t});\n\t\t\t/* eslint-enable react/no-did-mount-set-state */\n\t\t}\n\t\tcomponentWillUnmount() {\n\t\t\twindow.removeEventListener(\"resize\", this.handleWindowResize);\n\t\t}\n\t\thandleWindowResize() {\n\t\t\tthis.setState({\n\t\t\t\twidth: 0\n\t\t\t}, () => {\n\t\t\t\tconst el = this.node;\n\t\t\t\tconst { width, paddingLeft, paddingRight } = window.getComputedStyle(el.parentNode);\n\n\t\t\t\tconst w = parseFloat(width) - (parseFloat(paddingLeft) + parseFloat(paddingRight));\n\n\t\t\t\tthis.setState({\n\t\t\t\t\twidth: Math.round(Math.max(w, minWidth))\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tgetWrappedInstance() {\n\t\t\treturn this.node;\n\t\t}\n\t\trender() {\n\t\t\tconst ref = withRef ? { ref: this.saveNode } : {};\n\n\t\t\tif (this.state.width) {\n\t\t\t\treturn <WrappedComponent width={this.state.width} ratio={this.state.ratio} {...this.props} {...ref} />;\n\t\t\t} else {\n\t\t\t\treturn <div {...ref}>\n\t\t\t\t\t<canvas ref={this.setTestCanvas} />\n\t\t\t\t</div>;\n\t\t\t}\n\t\t}\n\t}\n\n\tResponsiveComponent.displayName = `fitWidth(${ getDisplayName(WrappedComponent) })`;\n\n\treturn ResponsiveComponent;\n}\n\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport { isDefined } from \"../utils\";\n\nfunction getDisplayName(Series) {\n\tconst name = Series.displayName || Series.name || \"Series\";\n\treturn name;\n}\n\nexport default function fitDimensions(WrappedComponent, props = {}) {\n\n\tconst {\n\t\tminWidth = 100,\n\t\tminHeight = 100,\n\t\tratio,\n\t\twidth,\n\t\theight,\n\t} = props;\n\n\tfunction getDimensions(el) {\n\t\tconst w = el.parentNode.clientWidth;\n\t\tconst h = el.parentNode.clientHeight;\n\n\t\treturn {\n\t\t\twidth: isDefined(width) ? width : Math.max(w, minWidth),\n\t\t\theight: isDefined(height) ? height : Math.max(h, minHeight),\n\t\t};\n\t}\n\tclass ResponsiveComponent extends Component {\n\t\tconstructor(props) {\n\t\t\tsuper(props);\n\t\t\tthis.handleWindowResize = this.handleWindowResize.bind(this);\n\t\t\tthis.getWrappedInstance = this.getWrappedInstance.bind(this);\n\t\t\tthis.saveNode = this.saveNode.bind(this);\n\t\t\tthis.setTestCanvas = this.setTestCanvas.bind(this);\n\t\t\tthis.state = {};\n\t\t}\n\t\tsaveNode(node) {\n\t\t\tthis.node = node;\n\t\t}\n\t\tsetTestCanvas(node) {\n\t\t\tthis.testCanvas = node;\n\t\t}\n\t\tgetRatio() {\n\t\t\tif (isDefined(this.testCanvas)) {\n\t\t\t\tconst context = this.testCanvas.getContext(\"2d\");\n\n\t\t\t\tconst devicePixelRatio = window.devicePixelRatio || 1;\n\t\t\t\tconst backingStoreRatio = context.webkitBackingStorePixelRatio ||\n\t\t\t\t\t\t\t\tcontext.mozBackingStorePixelRatio ||\n\t\t\t\t\t\t\t\tcontext.msBackingStorePixelRatio ||\n\t\t\t\t\t\t\t\tcontext.oBackingStorePixelRatio ||\n\t\t\t\t\t\t\t\tcontext.backingStorePixelRatio || 1;\n\n\t\t\t\tconst ratio = devicePixelRatio / backingStoreRatio;\n\t\t\t\t// console.log(\"ratio = \", ratio);\n\t\t\t\treturn ratio;\n\t\t\t}\n\t\t\treturn 1;\n\t\t}\n\t\tcomponentDidMount() {\n\t\t\twindow.addEventListener(\"resize\", this.handleWindowResize);\n\t\t\tconst dimensions = getDimensions(this.node);\n\n\t\t\t/* eslint-disable react/no-did-mount-set-state */\n\t\t\tthis.setState({\n\t\t\t\t...dimensions,\n\t\t\t\tratio: isDefined(ratio) ? ratio : this.getRatio(),\n\t\t\t});\n\t\t\t/* eslint-enable react/no-did-mount-set-state */\n\t\t}\n\t\tcomponentWillUnmount() {\n\t\t\twindow.removeEventListener(\"resize\", this.handleWindowResize);\n\t\t}\n\t\thandleWindowResize() {\n\t\t\tconst node = ReactDOM.findDOMNode(this.node); // eslint-disable-line react/no-find-dom-node\n\t\t\tthis.setState(getDimensions(node));\n\t\t}\n\t\tgetWrappedInstance() {\n\t\t\treturn this.node;\n\t\t}\n\t\trender() {\n\t\t\tconst ref = { ref: this.saveNode };\n\n\t\t\tif (this.state.width) {\n\t\t\t\treturn <WrappedComponent\n\t\t\t\t\theight={this.state.height}\n\t\t\t\t\twidth={this.state.width}\n\t\t\t\t\tratio={this.state.ratio}\n\t\t\t\t\t{...this.props}\n\t\t\t\t\t{...ref}\n\t\t\t\t/>;\n\t\t\t} else {\n\t\t\t\treturn <div {...ref}>\n\t\t\t\t\t<canvas ref={this.setTestCanvas} />\n\t\t\t\t</div>;\n\t\t\t}\n\t\t}\n\t}\n\n\tResponsiveComponent.displayName = `fitDimensions(${ getDisplayName(WrappedComponent) })`;\n\n\treturn ResponsiveComponent;\n}\n\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\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","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\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 constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\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","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 {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","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n"],"sourceRoot":""}