{"version":3,"file":"main-a3baacf7.js","sources":["../../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/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/quantile.js","../../node_modules/d3-array/src/max.js","../../node_modules/d3-array/src/merge.js","../../node_modules/d3-array/src/min.js","../../node_modules/d3-array/src/transpose.js","../../node_modules/d3-axis/src/array.js","../../node_modules/d3-axis/src/identity.js","../../node_modules/d3-axis/src/axis.js","../../node_modules/d3-dispatch/src/dispatch.js","../../node_modules/d3-selection/src/namespaces.js","../../node_modules/d3-selection/src/namespace.js","../../node_modules/d3-selection/src/creator.js","../../node_modules/d3-selection/src/selector.js","../../node_modules/d3-selection/src/selectorAll.js","../../node_modules/d3-selection/src/matcher.js","../../node_modules/d3-selection/src/selection/sparse.js","../../node_modules/d3-selection/src/selection/enter.js","../../node_modules/d3-selection/src/selection/data.js","../../node_modules/d3-selection/src/selection/sort.js","../../node_modules/d3-selection/src/selection/attr.js","../../node_modules/d3-selection/src/window.js","../../node_modules/d3-selection/src/selection/style.js","../../node_modules/d3-selection/src/selection/property.js","../../node_modules/d3-selection/src/selection/classed.js","../../node_modules/d3-selection/src/selection/text.js","../../node_modules/d3-selection/src/selection/html.js","../../node_modules/d3-selection/src/selection/raise.js","../../node_modules/d3-selection/src/selection/lower.js","../../node_modules/d3-selection/src/selection/insert.js","../../node_modules/d3-selection/src/selection/remove.js","../../node_modules/d3-selection/src/selection/clone.js","../../node_modules/d3-selection/src/selection/on.js","../../node_modules/d3-selection/src/selection/dispatch.js","../../node_modules/d3-selection/src/selection/index.js","../../node_modules/d3-selection/src/select.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/call.js","../../node_modules/d3-selection/src/selection/nodes.js","../../node_modules/d3-selection/src/selection/node.js","../../node_modules/d3-selection/src/selection/size.js","../../node_modules/d3-selection/src/selection/empty.js","../../node_modules/d3-selection/src/selection/each.js","../../node_modules/d3-selection/src/selection/append.js","../../node_modules/d3-selection/src/selection/datum.js","../../node_modules/d3-selection/src/local.js","../../node_modules/d3-selection/src/sourceEvent.js","../../node_modules/d3-selection/src/point.js","../../node_modules/d3-selection/src/mouse.js","../../node_modules/d3-selection/src/touch.js","../../node_modules/d3-drag/src/noevent.js","../../node_modules/d3-drag/src/nodrag.js","../../node_modules/d3-drag/src/constant.js","../../node_modules/d3-drag/src/event.js","../../node_modules/d3-drag/src/drag.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/basis.js","../../node_modules/d3-interpolate/src/basisClosed.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/numberArray.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.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/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/transform/parse.js","../../node_modules/d3-interpolate/src/transform/index.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-interpolate/src/hsl.js","../../node_modules/d3-interpolate/src/hcl.js","../../node_modules/d3-interpolate/src/cubehelix.js","../../node_modules/d3-timer/src/timer.js","../../node_modules/d3-timer/src/timeout.js","../../node_modules/d3-transition/src/transition/schedule.js","../../node_modules/d3-transition/src/interrupt.js","../../node_modules/d3-transition/src/transition/tween.js","../../node_modules/d3-transition/src/transition/interpolate.js","../../node_modules/d3-transition/src/transition/attr.js","../../node_modules/d3-transition/src/transition/attrTween.js","../../node_modules/d3-transition/src/transition/delay.js","../../node_modules/d3-transition/src/transition/duration.js","../../node_modules/d3-transition/src/transition/selection.js","../../node_modules/d3-transition/src/transition/style.js","../../node_modules/d3-transition/src/transition/index.js","../../node_modules/d3-ease/src/quad.js","../../node_modules/d3-ease/src/cubic.js","../../node_modules/d3-transition/src/transition/select.js","../../node_modules/d3-transition/src/transition/selectAll.js","../../node_modules/d3-transition/src/transition/filter.js","../../node_modules/d3-transition/src/transition/merge.js","../../node_modules/d3-transition/src/transition/transition.js","../../node_modules/d3-transition/src/transition/on.js","../../node_modules/d3-transition/src/transition/styleTween.js","../../node_modules/d3-transition/src/transition/text.js","../../node_modules/d3-transition/src/transition/textTween.js","../../node_modules/d3-transition/src/transition/remove.js","../../node_modules/d3-transition/src/transition/ease.js","../../node_modules/d3-transition/src/transition/end.js","../../node_modules/d3-ease/src/poly.js","../../node_modules/d3-ease/src/sin.js","../../node_modules/d3-ease/src/math.js","../../node_modules/d3-ease/src/exp.js","../../node_modules/d3-ease/src/circle.js","../../node_modules/d3-ease/src/bounce.js","../../node_modules/d3-ease/src/back.js","../../node_modules/d3-ease/src/elastic.js","../../node_modules/d3-transition/src/selection/transition.js","../../node_modules/d3-transition/src/selection/index.js","../../node_modules/d3-transition/src/selection/interrupt.js","../../node_modules/d3-transition/src/active.js","../../node_modules/d3-brush/src/constant.js","../../node_modules/d3-brush/src/event.js","../../node_modules/d3-brush/src/noevent.js","../../node_modules/d3-brush/src/brush.js","../../node_modules/d3-chord/src/math.js","../../node_modules/d3-chord/src/array.js","../../node_modules/d3-chord/src/constant.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-chord/src/ribbon.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-contour/src/array.js","../../node_modules/d3-contour/src/ascending.js","../../node_modules/d3-contour/src/constant.js","../../node_modules/d3-contour/src/contains.js","../../node_modules/d3-contour/src/noop.js","../../node_modules/d3-contour/src/contours.js","../../node_modules/d3-contour/src/area.js","../../node_modules/d3-contour/src/blur.js","../../node_modules/d3-contour/src/density.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-dsv/src/autoType.js","../../node_modules/d3-fetch/src/blob.js","../../node_modules/d3-fetch/src/buffer.js","../../node_modules/d3-fetch/src/text.js","../../node_modules/d3-fetch/src/dsv.js","../../node_modules/d3-fetch/src/json.js","../../node_modules/d3-fetch/src/xml.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/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-force/src/link.js","../../node_modules/d3-force/src/simulation.js","../../node_modules/d3-quadtree/src/cover.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-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-geo/src/adder.js","../../node_modules/d3-geo/src/math.js","../../node_modules/d3-geo/src/noop.js","../../node_modules/d3-geo/src/stream.js","../../node_modules/d3-geo/src/area.js","../../node_modules/d3-geo/src/cartesian.js","../../node_modules/d3-geo/src/bounds.js","../../node_modules/d3-geo/src/centroid.js","../../node_modules/d3-geo/src/constant.js","../../node_modules/d3-geo/src/compose.js","../../node_modules/d3-geo/src/rotation.js","../../node_modules/d3-geo/src/circle.js","../../node_modules/d3-geo/src/clip/buffer.js","../../node_modules/d3-geo/src/pointEqual.js","../../node_modules/d3-geo/src/clip/polygon.js","../../node_modules/d3-geo/src/clip/extent.js","../../node_modules/d3-geo/src/clip/line.js","../../node_modules/d3-geo/src/polygonContains.js","../../node_modules/d3-geo/src/length.js","../../node_modules/d3-geo/src/distance.js","../../node_modules/d3-geo/src/contains.js","../../node_modules/d3-geo/src/graticule.js","../../node_modules/d3-geo/src/identity.js","../../node_modules/d3-geo/src/path/area.js","../../node_modules/d3-geo/src/path/bounds.js","../../node_modules/d3-geo/src/path/centroid.js","../../node_modules/d3-geo/src/path/context.js","../../node_modules/d3-geo/src/path/measure.js","../../node_modules/d3-geo/src/path/string.js","../../node_modules/d3-geo/src/clip/index.js","../../node_modules/d3-geo/src/clip/antimeridian.js","../../node_modules/d3-geo/src/transform.js","../../node_modules/d3-geo/src/projection/fit.js","../../node_modules/d3-geo/src/projection/resample.js","../../node_modules/d3-geo/src/projection/index.js","../../node_modules/d3-geo/src/clip/circle.js","../../node_modules/d3-geo/src/projection/conic.js","../../node_modules/d3-geo/src/projection/conicEqualArea.js","../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../../node_modules/d3-geo/src/projection/albers.js","../../node_modules/d3-geo/src/projection/azimuthal.js","../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../../node_modules/d3-geo/src/projection/mercator.js","../../node_modules/d3-geo/src/projection/conicConformal.js","../../node_modules/d3-geo/src/projection/equirectangular.js","../../node_modules/d3-geo/src/projection/conicEquidistant.js","../../node_modules/d3-geo/src/projection/gnomonic.js","../../node_modules/d3-geo/src/projection/identity.js","../../node_modules/d3-geo/src/projection/naturalEarth1.js","../../node_modules/d3-geo/src/projection/orthographic.js","../../node_modules/d3-geo/src/projection/stereographic.js","../../node_modules/d3-geo/src/projection/transverseMercator.js","../../node_modules/d3-hierarchy/src/cluster.js","../../node_modules/d3-hierarchy/src/hierarchy/count.js","../../node_modules/d3-hierarchy/src/hierarchy/index.js","../../node_modules/d3-hierarchy/src/hierarchy/each.js","../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../node_modules/d3-hierarchy/src/hierarchy/sum.js","../../node_modules/d3-hierarchy/src/hierarchy/sort.js","../../node_modules/d3-hierarchy/src/hierarchy/path.js","../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../node_modules/d3-hierarchy/src/hierarchy/links.js","../../node_modules/d3-hierarchy/src/array.js","../../node_modules/d3-hierarchy/src/pack/enclose.js","../../node_modules/d3-hierarchy/src/pack/siblings.js","../../node_modules/d3-hierarchy/src/accessors.js","../../node_modules/d3-hierarchy/src/constant.js","../../node_modules/d3-hierarchy/src/pack/index.js","../../node_modules/d3-hierarchy/src/treemap/round.js","../../node_modules/d3-hierarchy/src/treemap/dice.js","../../node_modules/d3-hierarchy/src/stratify.js","../../node_modules/d3-hierarchy/src/tree.js","../../node_modules/d3-hierarchy/src/treemap/slice.js","../../node_modules/d3-hierarchy/src/treemap/squarify.js","../../node_modules/d3-hierarchy/src/treemap/resquarify.js","../../node_modules/d3-polygon/src/cross.js","../../node_modules/d3-polygon/src/hull.js","../../node_modules/d3-random/src/defaultSource.js","../../node_modules/d3-random/src/uniform.js","../../node_modules/d3-random/src/normal.js","../../node_modules/d3-random/src/logNormal.js","../../node_modules/d3-random/src/irwinHall.js","../../node_modules/d3-random/src/bates.js","../../node_modules/d3-random/src/exponential.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-scale/src/array.js","../../node_modules/d3-scale/src/ordinal.js","../../node_modules/d3-scale/src/band.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-scale/src/nice.js","../../node_modules/d3-scale/src/log.js","../../node_modules/d3-scale/src/symlog.js","../../node_modules/d3-scale/src/pow.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.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/d3-scale/src/time.js","../../node_modules/d3-scale/src/sequential.js","../../node_modules/d3-scale/src/diverging.js","../../node_modules/d3-scale-chromatic/src/colors.js","../../node_modules/d3-scale-chromatic/src/categorical/category10.js","../../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../../node_modules/d3-scale-chromatic/src/ramp.js","../../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.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/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/order/appearance.js","../../node_modules/d3-shape/src/order/ascending.js","../../node_modules/d3-voronoi/src/constant.js","../../node_modules/d3-voronoi/src/point.js","../../node_modules/d3-voronoi/src/RedBlackTree.js","../../node_modules/d3-voronoi/src/Edge.js","../../node_modules/d3-voronoi/src/Cell.js","../../node_modules/d3-voronoi/src/Circle.js","../../node_modules/d3-voronoi/src/Beach.js","../../node_modules/d3-voronoi/src/Diagram.js","../../node_modules/d3-zoom/src/constant.js","../../node_modules/d3-zoom/src/event.js","../../node_modules/d3-zoom/src/transform.js","../../node_modules/d3-zoom/src/noevent.js","../../node_modules/d3-zoom/src/zoom.js","../../node_modules/d3/dist/package.js","../../node_modules/d3-array/src/cross.js","../../node_modules/d3-array/src/descending.js","../../node_modules/d3-array/src/histogram.js","../../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../../node_modules/d3-array/src/threshold/scott.js","../../node_modules/d3-array/src/mean.js","../../node_modules/d3-array/src/median.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/zip.js","../../node_modules/d3-chord/src/chord.js","../../node_modules/d3-collection/src/keys.js","../../node_modules/d3-collection/src/values.js","../../node_modules/d3-collection/src/entries.js","../../node_modules/d3-ease/src/linear.js","../../node_modules/d3-fetch/src/image.js","../../node_modules/d3-force/src/center.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-geo/src/interpolate.js","../../node_modules/d3-geo/src/path/index.js","../../node_modules/d3-geo/src/projection/albersUsa.js","../../node_modules/d3-hierarchy/src/partition.js","../../node_modules/d3-hierarchy/src/treemap/index.js","../../node_modules/d3-hierarchy/src/treemap/binary.js","../../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../../node_modules/d3-interpolate/src/discrete.js","../../node_modules/d3-interpolate/src/hue.js","../../node_modules/d3-interpolate/src/lab.js","../../node_modules/d3-interpolate/src/piecewise.js","../../node_modules/d3-interpolate/src/quantize.js","../../node_modules/d3-polygon/src/area.js","../../node_modules/d3-polygon/src/centroid.js","../../node_modules/d3-polygon/src/contains.js","../../node_modules/d3-polygon/src/length.js","../../node_modules/d3-scale/src/identity.js","../../node_modules/d3-scale/src/quantile.js","../../node_modules/d3-scale/src/quantize.js","../../node_modules/d3-scale/src/threshold.js","../../node_modules/d3-scale/src/utcTime.js","../../node_modules/d3-scale/src/sequentialQuantile.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../../node_modules/d3-selection/src/create.js","../../node_modules/d3-selection/src/selectAll.js","../../node_modules/d3-selection/src/touches.js","../../node_modules/d3-shape/src/pie.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/descending.js","../../node_modules/d3-shape/src/order/insideOut.js","../../node_modules/d3-shape/src/order/reverse.js","../../node_modules/d3-timer/src/interval.js","../../node_modules/d3-voronoi/src/voronoi.js","../../node_modules/c3/c3.js","../../node_modules/friendly-challenge/widget.js","../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../node_modules/swiper/esm/utils/dom.js","../../node_modules/swiper/esm/utils/get-support.js","../../node_modules/swiper/esm/utils/get-device.js","../../node_modules/swiper/esm/utils/get-browser.js","../../node_modules/swiper/esm/utils/utils.js","../../node_modules/swiper/esm/modules/resize/resize.js","../../node_modules/swiper/esm/modules/observer/observer.js","../../node_modules/swiper/esm/components/core/events-emitter.js","../../node_modules/swiper/esm/components/core/update/index.js","../../node_modules/swiper/esm/components/core/update/updateSize.js","../../node_modules/swiper/esm/components/core/update/updateSlides.js","../../node_modules/swiper/esm/components/core/update/updateAutoHeight.js","../../node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","../../node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","../../node_modules/swiper/esm/components/core/update/updateProgress.js","../../node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","../../node_modules/swiper/esm/components/core/update/updateActiveIndex.js","../../node_modules/swiper/esm/components/core/update/updateClickedSlide.js","../../node_modules/swiper/esm/components/core/translate/index.js","../../node_modules/swiper/esm/components/core/translate/getTranslate.js","../../node_modules/swiper/esm/components/core/translate/setTranslate.js","../../node_modules/swiper/esm/components/core/translate/minTranslate.js","../../node_modules/swiper/esm/components/core/translate/maxTranslate.js","../../node_modules/swiper/esm/components/core/translate/translateTo.js","../../node_modules/swiper/esm/components/core/slide/index.js","../../node_modules/swiper/esm/components/core/slide/slideTo.js","../../node_modules/swiper/esm/components/core/slide/slideToLoop.js","../../node_modules/swiper/esm/components/core/slide/slideNext.js","../../node_modules/swiper/esm/components/core/slide/slidePrev.js","../../node_modules/swiper/esm/components/core/slide/slideReset.js","../../node_modules/swiper/esm/components/core/slide/slideToClosest.js","../../node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","../../node_modules/swiper/esm/components/core/loop/index.js","../../node_modules/swiper/esm/components/core/loop/loopCreate.js","../../node_modules/swiper/esm/components/core/loop/loopFix.js","../../node_modules/swiper/esm/components/core/loop/loopDestroy.js","../../node_modules/swiper/esm/components/core/manipulation/index.js","../../node_modules/swiper/esm/components/core/manipulation/appendSlide.js","../../node_modules/swiper/esm/components/core/manipulation/prependSlide.js","../../node_modules/swiper/esm/components/core/manipulation/addSlide.js","../../node_modules/swiper/esm/components/core/manipulation/removeSlide.js","../../node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","../../node_modules/swiper/esm/components/core/events/onTouchStart.js","../../node_modules/swiper/esm/components/core/events/onTouchMove.js","../../node_modules/swiper/esm/components/core/events/onTouchEnd.js","../../node_modules/swiper/esm/components/core/events/onResize.js","../../node_modules/swiper/esm/components/core/events/onClick.js","../../node_modules/swiper/esm/components/core/events/onScroll.js","../../node_modules/swiper/esm/components/core/events/index.js","../../node_modules/swiper/esm/components/core/breakpoints/index.js","../../node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","../../node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","../../node_modules/swiper/esm/components/core/classes/index.js","../../node_modules/swiper/esm/components/core/classes/addClasses.js","../../node_modules/swiper/esm/components/core/classes/removeClasses.js","../../node_modules/swiper/esm/components/core/images/index.js","../../node_modules/swiper/esm/components/core/images/loadImage.js","../../node_modules/swiper/esm/components/core/images/preloadImages.js","../../node_modules/swiper/esm/components/core/check-overflow/index.js","../../node_modules/swiper/esm/components/core/defaults.js","../../node_modules/swiper/esm/components/core/core-class.js","../../node_modules/swiper/esm/components/core/modular.js","../../node_modules/swiper/esm/components/core/transition/index.js","../../node_modules/swiper/esm/components/core/transition/setTransition.js","../../node_modules/swiper/esm/components/core/transition/transitionStart.js","../../node_modules/swiper/esm/components/core/transition/transitionEnd.js","../../node_modules/swiper/esm/components/core/grab-cursor/index.js","../../node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","../../node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","../../node_modules/swiper/esm/components/navigation/navigation.js","../../node_modules/swiper/esm/components/pagination/pagination.js","../../src/main.js"],"sourcesContent":["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","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 number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export 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","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","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","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\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","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, 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","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 callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\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","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 {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import 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","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\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 var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\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","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {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(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","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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","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","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(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(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\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.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\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","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 {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\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","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import 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","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\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\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\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 preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).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(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\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(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","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","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, 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() {\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","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon, radians} from \"./math\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ab = distance(coordinates[0], coordinates[1]),\n ao = distance(coordinates[0], point),\n ob = distance(point, coordinates[1]);\n return ao + ob <= ab + epsilon;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(rotate, sink) {\n var line = clipLine(sink),\n rotatedStart = rotate.invert(start[0], start[1]),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, rotatedStart);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n var point = rotate(lambda, phi);\n if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n var point = rotate(lambda, phi);\n line.point(point[0], point[1]);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n var point = rotate(lambda, phi);\n ringSink.point(point[0], point[1]);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n clip = projection.clipExtent && projection.clipExtent();\n\n projection\n .scale(150)\n .translate([0, 0]);\n\n if (clip != null) projection.clipExtent(null);\n\n geoStream(object, projection.stream(boundsStream));\n\n var b = boundsStream.result(),\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n if (clip != null) projection.clipExtent(clip);\n\n return projection\n .scale(k * 150)\n .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n dx, dy, lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n theta = null, preclip = clipAntimeridian, // clip angle\n x0 = null, y0, x1, y1, postclip = identity, // clip extent\n delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n cache,\n cacheStream;\n\n function projection(point) {\n point = projectRotate(point[0] * radians, point[1] * radians);\n return [point[0] * k + dx, dy - point[1] * k];\n }\n\n function invert(point) {\n point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n function projectTransform(x, y) {\n return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n function recenter() {\n projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n var center = project(lambda, phi);\n dx = x - center[0] * k;\n dy = y + center[1] * k;\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n var cr = cos(radius),\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import {clipExtent} from \"../clip/extent\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, clip = identity, // clip extent\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));\n },\n clipExtent: function(_) {\n return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = 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(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\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 = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.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 return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar 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","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {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\";\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 {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 {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\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\";\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\";\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 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 {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 {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\";\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\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {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 {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\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 c = 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 c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import colors from \"../colors.js\";\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","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 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) {\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","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","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","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 {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","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(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 transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export 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 function linear(t) {\n return +t;\n}\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\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","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","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","export default function(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","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (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.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[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.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = 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.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\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 scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\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","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) {\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","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 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 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 {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","/* @license C3.js v0.7.20 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.c3 = factory());\n}(this, (function () { 'use strict';\n\n function ChartInternal(api) {\r\n var $$ = this;\r\n // Note: This part will be replaced by rollup-plugin-modify\r\n // When bundling esm output. Beware of changing this line.\r\n // TODO: Maybe we should check that the modification by rollup-plugin-modify\r\n // is valid during unit tests.\r\n $$.d3 = window.d3\r\n ? window.d3\r\n : typeof require !== 'undefined'\r\n ? require('d3')\r\n : undefined;\r\n $$.api = api;\r\n $$.config = $$.getDefaultConfig();\r\n $$.data = {};\r\n $$.cache = {};\r\n $$.axes = {};\r\n }\n\n /**\r\n * The Chart class\r\n *\r\n * The methods of this class is the public APIs of the chart object.\r\n */\r\n function Chart(config) {\r\n this.internal = new ChartInternal(this);\r\n this.internal.loadConfig(config);\r\n this.internal.beforeInit(config);\r\n this.internal.init();\r\n this.internal.afterInit(config);\r\n (function bindThis(fn, target, argThis) {\r\n Object.keys(fn).forEach(function (key) {\r\n target[key] = fn[key].bind(argThis);\r\n if (Object.keys(fn[key]).length > 0) {\r\n bindThis(fn[key], target[key], argThis);\r\n }\r\n });\r\n })(Chart.prototype, this, this);\r\n }\n\n var asHalfPixel = function (n) {\r\n return Math.ceil(n) + 0.5;\r\n };\r\n var ceil10 = function (v) {\r\n return Math.ceil(v / 10) * 10;\r\n };\r\n var diffDomain = function (d) {\r\n return d[1] - d[0];\r\n };\r\n var getOption = function (options, key, defaultValue) {\r\n return isDefined(options[key]) ? options[key] : defaultValue;\r\n };\r\n var getPathBox = function (path) {\r\n var box = getBBox(path), items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)], minX = items[0].x, minY = Math.min(items[0].y, items[1].y);\r\n return { x: minX, y: minY, width: box.width, height: box.height };\r\n };\r\n var getBBox = function (element) {\r\n try {\r\n return element.getBBox();\r\n }\r\n catch (ignore) {\r\n // Firefox will throw an exception if getBBox() is called whereas the\r\n // element is rendered with display:none\r\n // See https://github.com/c3js/c3/issues/2692\r\n // The previous code was using `getBoundingClientRect` which was returning\r\n // everything at 0 in this case so let's reproduce this behavior here.\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n };\r\n var hasValue = function (dict, value) {\r\n var found = false;\r\n Object.keys(dict).forEach(function (key) {\r\n if (dict[key] === value) {\r\n found = true;\r\n }\r\n });\r\n return found;\r\n };\r\n var isArray = function (o) {\r\n return Array.isArray(o);\r\n };\r\n var isDefined = function (v) {\r\n return typeof v !== 'undefined';\r\n };\r\n var isEmpty = function (o) {\r\n return (typeof o === 'undefined' ||\r\n o === null ||\r\n (isString(o) && o.length === 0) ||\r\n (typeof o === 'object' && Object.keys(o).length === 0));\r\n };\r\n var isFunction = function (o) {\r\n return typeof o === 'function';\r\n };\r\n var isNumber = function (o) {\r\n return typeof o === 'number';\r\n };\r\n var isString = function (o) {\r\n return typeof o === 'string';\r\n };\r\n var isUndefined = function (v) {\r\n return typeof v === 'undefined';\r\n };\r\n var isValue = function (v) {\r\n return v || v === 0;\r\n };\r\n var notEmpty = function (o) {\r\n return !isEmpty(o);\r\n };\r\n var sanitise = function (str) {\r\n return typeof str === 'string'\r\n ? str.replace(//g, '>')\r\n : str;\r\n };\r\n var flattenArray = function (arr) {\r\n return Array.isArray(arr) ? [].concat.apply([], arr) : [];\r\n };\r\n /**\r\n * Returns whether the point is within the given box.\r\n *\r\n * @param {Array} point An [x,y] coordinate\r\n * @param {Object} box An object with {x, y, width, height} keys\r\n * @param {Number} sensitivity An offset to ease check on very small boxes\r\n */\r\n var isWithinBox = function (point, box, sensitivity) {\r\n if (sensitivity === void 0) { sensitivity = 0; }\r\n var xStart = box.x - sensitivity;\r\n var xEnd = box.x + box.width + sensitivity;\r\n var yStart = box.y + box.height + sensitivity;\r\n var yEnd = box.y - sensitivity;\r\n return (xStart < point[0] && point[0] < xEnd && yEnd < point[1] && point[1] < yStart);\r\n };\r\n /**\r\n * Returns Internet Explorer version number (or false if no Internet Explorer used).\r\n *\r\n * @param string agent Optional parameter to specify user agent\r\n */\r\n var getIEVersion = function (agent) {\r\n // https://stackoverflow.com/questions/19999388/check-if-user-is-using-ie\r\n if (typeof agent === 'undefined') {\r\n agent = window.navigator.userAgent;\r\n }\r\n var pos = agent.indexOf('MSIE '); // up to IE10\r\n if (pos > 0) {\r\n return parseInt(agent.substring(pos + 5, agent.indexOf('.', pos)), 10);\r\n }\r\n pos = agent.indexOf('Trident/'); // IE11\r\n if (pos > 0) {\r\n pos = agent.indexOf('rv:');\r\n return parseInt(agent.substring(pos + 3, agent.indexOf('.', pos)), 10);\r\n }\r\n return false;\r\n };\r\n /**\r\n * Returns whether the used browser is Internet Explorer.\r\n *\r\n * @param version Optional parameter to specify IE version\r\n */\r\n var isIE = function (version) {\r\n var ver = getIEVersion();\r\n if (typeof version === 'undefined') {\r\n return !!ver;\r\n }\r\n return version === ver;\r\n };\n\n function AxisInternal(component, params) {\r\n var internal = this;\r\n internal.component = component;\r\n internal.params = params || {};\r\n internal.d3 = component.d3;\r\n internal.scale = internal.d3.scaleLinear();\r\n internal.range;\r\n internal.orient = 'bottom';\r\n internal.innerTickSize = 6;\r\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\r\n internal.tickPadding = 3;\r\n internal.tickValues = null;\r\n internal.tickFormat;\r\n internal.tickArguments;\r\n internal.tickOffset = 0;\r\n internal.tickCulling = true;\r\n internal.tickCentered;\r\n internal.tickTextCharSize;\r\n internal.tickTextRotate = internal.params.tickTextRotate;\r\n internal.tickLength;\r\n internal.axis = internal.generateAxis();\r\n }\r\n AxisInternal.prototype.axisX = function (selection, x, tickOffset) {\r\n selection.attr('transform', function (d) {\r\n return 'translate(' + Math.ceil(x(d) + tickOffset) + ', 0)';\r\n });\r\n };\r\n AxisInternal.prototype.axisY = function (selection, y) {\r\n selection.attr('transform', function (d) {\r\n return 'translate(0,' + Math.ceil(y(d)) + ')';\r\n });\r\n };\r\n AxisInternal.prototype.scaleExtent = function (domain) {\r\n var start = domain[0], stop = domain[domain.length - 1];\r\n return start < stop ? [start, stop] : [stop, start];\r\n };\r\n AxisInternal.prototype.generateTicks = function (scale) {\r\n var internal = this;\r\n var i, domain, ticks = [];\r\n if (scale.ticks) {\r\n return scale.ticks.apply(scale, internal.tickArguments);\r\n }\r\n domain = scale.domain();\r\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\r\n ticks.push(i);\r\n }\r\n if (ticks.length > 0 && ticks[0] > 0) {\r\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\r\n }\r\n return ticks;\r\n };\r\n AxisInternal.prototype.copyScale = function () {\r\n var internal = this;\r\n var newScale = internal.scale.copy(), domain;\r\n if (internal.params.isCategory) {\r\n domain = internal.scale.domain();\r\n newScale.domain([domain[0], domain[1] - 1]);\r\n }\r\n return newScale;\r\n };\r\n AxisInternal.prototype.textFormatted = function (v) {\r\n var internal = this, formatted = internal.tickFormat ? internal.tickFormat(v) : v;\r\n return typeof formatted !== 'undefined' ? formatted : '';\r\n };\r\n AxisInternal.prototype.updateRange = function () {\r\n var internal = this;\r\n internal.range = internal.scale.rangeExtent\r\n ? internal.scale.rangeExtent()\r\n : internal.scaleExtent(internal.scale.range());\r\n return internal.range;\r\n };\r\n AxisInternal.prototype.updateTickTextCharSize = function (tick) {\r\n var internal = this;\r\n if (internal.tickTextCharSize) {\r\n return internal.tickTextCharSize;\r\n }\r\n var size = {\r\n h: 11.5,\r\n w: 5.5\r\n };\r\n tick\r\n .select('text')\r\n .text(function (d) {\r\n return internal.textFormatted(d);\r\n })\r\n .each(function (d) {\r\n var box = getBBox(this), text = internal.textFormatted(d), h = box.height, w = text ? box.width / text.length : undefined;\r\n if (h && w) {\r\n size.h = h;\r\n size.w = w;\r\n }\r\n })\r\n .text('');\r\n internal.tickTextCharSize = size;\r\n return size;\r\n };\r\n AxisInternal.prototype.isVertical = function () {\r\n return this.orient === 'left' || this.orient === 'right';\r\n };\r\n AxisInternal.prototype.tspanData = function (d, i, scale) {\r\n var internal = this;\r\n var splitted = internal.params.tickMultiline\r\n ? internal.splitTickText(d, scale)\r\n : [].concat(internal.textFormatted(d));\r\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\r\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\r\n }\r\n return splitted.map(function (s) {\r\n return { index: i, splitted: s, length: splitted.length };\r\n });\r\n };\r\n AxisInternal.prototype.splitTickText = function (d, scale) {\r\n var internal = this, tickText = internal.textFormatted(d), maxWidth = internal.params.tickWidth, subtext, spaceIndex, textWidth, splitted = [];\r\n if (Object.prototype.toString.call(tickText) === '[object Array]') {\r\n return tickText;\r\n }\r\n if (!maxWidth || maxWidth <= 0) {\r\n maxWidth = internal.isVertical()\r\n ? 95\r\n : internal.params.isCategory\r\n ? Math.ceil(scale(1) - scale(0)) - 12\r\n : 110;\r\n }\r\n function split(splitted, text) {\r\n spaceIndex = undefined;\r\n for (var i = 1; i < text.length; i++) {\r\n if (text.charAt(i) === ' ') {\r\n spaceIndex = i;\r\n }\r\n subtext = text.substr(0, i + 1);\r\n textWidth = internal.tickTextCharSize.w * subtext.length;\r\n // if text width gets over tick width, split by space index or crrent index\r\n if (maxWidth < textWidth) {\r\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\r\n }\r\n }\r\n return splitted.concat(text);\r\n }\r\n return split(splitted, tickText + '');\r\n };\r\n AxisInternal.prototype.ellipsify = function (splitted, max) {\r\n if (splitted.length <= max) {\r\n return splitted;\r\n }\r\n var ellipsified = splitted.slice(0, max);\r\n var remaining = 3;\r\n for (var i = max - 1; i >= 0; i--) {\r\n var available = ellipsified[i].length;\r\n ellipsified[i] = ellipsified[i]\r\n .substr(0, available - remaining)\r\n .padEnd(available, '.');\r\n remaining -= available;\r\n if (remaining <= 0) {\r\n break;\r\n }\r\n }\r\n return ellipsified;\r\n };\r\n AxisInternal.prototype.updateTickLength = function () {\r\n var internal = this;\r\n internal.tickLength =\r\n Math.max(internal.innerTickSize, 0) + internal.tickPadding;\r\n };\r\n AxisInternal.prototype.lineY2 = function (d) {\r\n var internal = this, tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\r\n return internal.range[0] < tickPosition && tickPosition < internal.range[1]\r\n ? internal.innerTickSize\r\n : 0;\r\n };\r\n AxisInternal.prototype.textY = function () {\r\n var internal = this, rotate = internal.tickTextRotate;\r\n return rotate\r\n ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1)\r\n : internal.tickLength;\r\n };\r\n AxisInternal.prototype.textTransform = function () {\r\n var internal = this, rotate = internal.tickTextRotate;\r\n return rotate ? 'rotate(' + rotate + ')' : '';\r\n };\r\n AxisInternal.prototype.textTextAnchor = function () {\r\n var internal = this, rotate = internal.tickTextRotate;\r\n return rotate ? (rotate > 0 ? 'start' : 'end') : 'middle';\r\n };\r\n AxisInternal.prototype.tspanDx = function () {\r\n var internal = this, rotate = internal.tickTextRotate;\r\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\r\n };\r\n AxisInternal.prototype.tspanDy = function (d, i) {\r\n var internal = this, dy = internal.tickTextCharSize.h;\r\n if (i === 0) {\r\n if (internal.isVertical()) {\r\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\r\n }\r\n else {\r\n dy = '.71em';\r\n }\r\n }\r\n return dy;\r\n };\r\n AxisInternal.prototype.generateAxis = function () {\r\n var internal = this, d3 = internal.d3, params = internal.params;\r\n function axis(g, transition) {\r\n var self;\r\n g.each(function () {\r\n var g = (axis.g = d3.select(this));\r\n var scale0 = this.__chart__ || internal.scale, scale1 = (this.__chart__ = internal.copyScale());\r\n var ticksValues = internal.tickValues\r\n ? internal.tickValues\r\n : internal.generateTicks(scale1), ticks = g.selectAll('.tick').data(ticksValues, scale1), tickEnter = ticks\r\n .enter()\r\n .insert('g', '.domain')\r\n .attr('class', 'tick')\r\n .style('opacity', 1e-6), \r\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\r\n tickExit = ticks.exit().remove(), tickUpdate = ticks.merge(tickEnter), tickTransform, tickX, tickY;\r\n if (params.isCategory) {\r\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\r\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\r\n tickY = internal.tickCentered ? internal.tickOffset : 0;\r\n }\r\n else {\r\n internal.tickOffset = tickX = 0;\r\n }\r\n internal.updateRange();\r\n internal.updateTickLength();\r\n internal.updateTickTextCharSize(g.select('.tick'));\r\n var lineUpdate = tickUpdate\r\n .select('line')\r\n .merge(tickEnter.append('line')), textUpdate = tickUpdate.select('text').merge(tickEnter.append('text'));\r\n var tspans = tickUpdate\r\n .selectAll('text')\r\n .selectAll('tspan')\r\n .data(function (d, i) {\r\n return internal.tspanData(d, i, scale1);\r\n }), tspanEnter = tspans.enter().append('tspan'), tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\r\n return d.splitted;\r\n });\r\n tspans.exit().remove();\r\n var path = g.selectAll('.domain').data([0]), pathUpdate = path\r\n .enter()\r\n .append('path')\r\n .merge(path)\r\n .attr('class', 'domain');\r\n // TODO: each attr should be one function and change its behavior by internal.orient, probably\r\n switch (internal.orient) {\r\n case 'bottom': {\r\n tickTransform = internal.axisX;\r\n lineUpdate\r\n .attr('x1', tickX)\r\n .attr('x2', tickX)\r\n .attr('y2', function (d, i) {\r\n return internal.lineY2(d, i);\r\n });\r\n textUpdate\r\n .attr('x', 0)\r\n .attr('y', function (d, i) {\r\n return internal.textY(d, i);\r\n })\r\n .attr('transform', function (d, i) {\r\n return internal.textTransform(d, i);\r\n })\r\n .style('text-anchor', function (d, i) {\r\n return internal.textTextAnchor(d, i);\r\n });\r\n tspanUpdate\r\n .attr('x', 0)\r\n .attr('dy', function (d, i) {\r\n return internal.tspanDy(d, i);\r\n })\r\n .attr('dx', function (d, i) {\r\n return internal.tspanDx(d, i);\r\n });\r\n pathUpdate.attr('d', 'M' +\r\n internal.range[0] +\r\n ',' +\r\n internal.outerTickSize +\r\n 'V0H' +\r\n internal.range[1] +\r\n 'V' +\r\n internal.outerTickSize);\r\n break;\r\n }\r\n case 'top': {\r\n // TODO: rotated tick text\r\n tickTransform = internal.axisX;\r\n lineUpdate\r\n .attr('x1', tickX)\r\n .attr('x2', tickX)\r\n .attr('y2', function (d, i) {\r\n return -1 * internal.lineY2(d, i);\r\n });\r\n textUpdate\r\n .attr('x', 0)\r\n .attr('y', function (d, i) {\r\n return (-1 * internal.textY(d, i) -\r\n (params.isCategory ? 2 : internal.tickLength - 2));\r\n })\r\n .attr('transform', function (d, i) {\r\n return internal.textTransform(d, i);\r\n })\r\n .style('text-anchor', function (d, i) {\r\n return internal.textTextAnchor(d, i);\r\n });\r\n tspanUpdate\r\n .attr('x', 0)\r\n .attr('dy', function (d, i) {\r\n return internal.tspanDy(d, i);\r\n })\r\n .attr('dx', function (d, i) {\r\n return internal.tspanDx(d, i);\r\n });\r\n pathUpdate.attr('d', 'M' +\r\n internal.range[0] +\r\n ',' +\r\n -internal.outerTickSize +\r\n 'V0H' +\r\n internal.range[1] +\r\n 'V' +\r\n -internal.outerTickSize);\r\n break;\r\n }\r\n case 'left': {\r\n tickTransform = internal.axisY;\r\n lineUpdate\r\n .attr('x2', -internal.innerTickSize)\r\n .attr('y1', tickY)\r\n .attr('y2', tickY);\r\n textUpdate\r\n .attr('x', -internal.tickLength)\r\n .attr('y', internal.tickOffset)\r\n .style('text-anchor', 'end');\r\n tspanUpdate\r\n .attr('x', -internal.tickLength)\r\n .attr('dy', function (d, i) {\r\n return internal.tspanDy(d, i);\r\n });\r\n pathUpdate.attr('d', 'M' +\r\n -internal.outerTickSize +\r\n ',' +\r\n internal.range[0] +\r\n 'H0V' +\r\n internal.range[1] +\r\n 'H' +\r\n -internal.outerTickSize);\r\n break;\r\n }\r\n case 'right': {\r\n tickTransform = internal.axisY;\r\n lineUpdate\r\n .attr('x2', internal.innerTickSize)\r\n .attr('y1', tickY)\r\n .attr('y2', tickY);\r\n textUpdate\r\n .attr('x', internal.tickLength)\r\n .attr('y', internal.tickOffset)\r\n .style('text-anchor', 'start');\r\n tspanUpdate.attr('x', internal.tickLength).attr('dy', function (d, i) {\r\n return internal.tspanDy(d, i);\r\n });\r\n pathUpdate.attr('d', 'M' +\r\n internal.outerTickSize +\r\n ',' +\r\n internal.range[0] +\r\n 'H0V' +\r\n internal.range[1] +\r\n 'H' +\r\n internal.outerTickSize);\r\n break;\r\n }\r\n }\r\n if (scale1.rangeBand) {\r\n var x = scale1, dx = x.rangeBand() / 2;\r\n scale0 = scale1 = function (d) {\r\n return x(d) + dx;\r\n };\r\n }\r\n else if (scale0.rangeBand) {\r\n scale0 = scale1;\r\n }\r\n else {\r\n tickExit.call(tickTransform, scale1, internal.tickOffset);\r\n }\r\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\r\n self = (transition ? tickUpdate.transition(transition) : tickUpdate)\r\n .style('opacity', 1)\r\n .call(tickTransform, scale1, internal.tickOffset);\r\n });\r\n return self;\r\n }\r\n axis.scale = function (x) {\r\n if (!arguments.length) {\r\n return internal.scale;\r\n }\r\n internal.scale = x;\r\n return axis;\r\n };\r\n axis.orient = function (x) {\r\n if (!arguments.length) {\r\n return internal.orient;\r\n }\r\n internal.orient =\r\n x in { top: 1, right: 1, bottom: 1, left: 1 } ? x + '' : 'bottom';\r\n return axis;\r\n };\r\n axis.tickFormat = function (format) {\r\n if (!arguments.length) {\r\n return internal.tickFormat;\r\n }\r\n internal.tickFormat = format;\r\n return axis;\r\n };\r\n axis.tickCentered = function (isCentered) {\r\n if (!arguments.length) {\r\n return internal.tickCentered;\r\n }\r\n internal.tickCentered = isCentered;\r\n return axis;\r\n };\r\n axis.tickOffset = function () {\r\n return internal.tickOffset;\r\n };\r\n axis.tickInterval = function () {\r\n var interval, length;\r\n if (params.isCategory) {\r\n interval = internal.tickOffset * 2;\r\n }\r\n else {\r\n length =\r\n axis.g\r\n .select('path.domain')\r\n .node()\r\n .getTotalLength() -\r\n internal.outerTickSize * 2;\r\n interval = length / axis.g.selectAll('line').size();\r\n }\r\n return interval === Infinity ? 0 : interval;\r\n };\r\n axis.ticks = function () {\r\n if (!arguments.length) {\r\n return internal.tickArguments;\r\n }\r\n internal.tickArguments = arguments;\r\n return axis;\r\n };\r\n axis.tickCulling = function (culling) {\r\n if (!arguments.length) {\r\n return internal.tickCulling;\r\n }\r\n internal.tickCulling = culling;\r\n return axis;\r\n };\r\n axis.tickValues = function (x) {\r\n if (typeof x === 'function') {\r\n internal.tickValues = function () {\r\n return x(internal.scale.domain());\r\n };\r\n }\r\n else {\r\n if (!arguments.length) {\r\n return internal.tickValues;\r\n }\r\n internal.tickValues = x;\r\n }\r\n return axis;\r\n };\r\n return axis;\r\n };\n\n var CLASS = {\r\n target: 'c3-target',\r\n chart: 'c3-chart',\r\n chartLine: 'c3-chart-line',\r\n chartLines: 'c3-chart-lines',\r\n chartBar: 'c3-chart-bar',\r\n chartBars: 'c3-chart-bars',\r\n chartText: 'c3-chart-text',\r\n chartTexts: 'c3-chart-texts',\r\n chartArc: 'c3-chart-arc',\r\n chartArcs: 'c3-chart-arcs',\r\n chartArcsTitle: 'c3-chart-arcs-title',\r\n chartArcsBackground: 'c3-chart-arcs-background',\r\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\r\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\r\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\r\n selectedCircle: 'c3-selected-circle',\r\n selectedCircles: 'c3-selected-circles',\r\n eventRect: 'c3-event-rect',\r\n eventRects: 'c3-event-rects',\r\n eventRectsSingle: 'c3-event-rects-single',\r\n eventRectsMultiple: 'c3-event-rects-multiple',\r\n zoomRect: 'c3-zoom-rect',\r\n brush: 'c3-brush',\r\n dragZoom: 'c3-drag-zoom',\r\n focused: 'c3-focused',\r\n defocused: 'c3-defocused',\r\n region: 'c3-region',\r\n regions: 'c3-regions',\r\n title: 'c3-title',\r\n tooltipContainer: 'c3-tooltip-container',\r\n tooltip: 'c3-tooltip',\r\n tooltipName: 'c3-tooltip-name',\r\n shape: 'c3-shape',\r\n shapes: 'c3-shapes',\r\n line: 'c3-line',\r\n lines: 'c3-lines',\r\n bar: 'c3-bar',\r\n bars: 'c3-bars',\r\n circle: 'c3-circle',\r\n circles: 'c3-circles',\r\n arc: 'c3-arc',\r\n arcLabelLine: 'c3-arc-label-line',\r\n arcs: 'c3-arcs',\r\n area: 'c3-area',\r\n areas: 'c3-areas',\r\n empty: 'c3-empty',\r\n text: 'c3-text',\r\n texts: 'c3-texts',\r\n gaugeValue: 'c3-gauge-value',\r\n grid: 'c3-grid',\r\n gridLines: 'c3-grid-lines',\r\n xgrid: 'c3-xgrid',\r\n xgrids: 'c3-xgrids',\r\n xgridLine: 'c3-xgrid-line',\r\n xgridLines: 'c3-xgrid-lines',\r\n xgridFocus: 'c3-xgrid-focus',\r\n ygrid: 'c3-ygrid',\r\n ygrids: 'c3-ygrids',\r\n ygridLine: 'c3-ygrid-line',\r\n ygridLines: 'c3-ygrid-lines',\r\n colorScale: 'c3-colorscale',\r\n stanfordElements: 'c3-stanford-elements',\r\n stanfordLine: 'c3-stanford-line',\r\n stanfordLines: 'c3-stanford-lines',\r\n stanfordRegion: 'c3-stanford-region',\r\n stanfordRegions: 'c3-stanford-regions',\r\n stanfordText: 'c3-stanford-text',\r\n stanfordTexts: 'c3-stanford-texts',\r\n axis: 'c3-axis',\r\n axisX: 'c3-axis-x',\r\n axisXLabel: 'c3-axis-x-label',\r\n axisY: 'c3-axis-y',\r\n axisYLabel: 'c3-axis-y-label',\r\n axisY2: 'c3-axis-y2',\r\n axisY2Label: 'c3-axis-y2-label',\r\n legendBackground: 'c3-legend-background',\r\n legendItem: 'c3-legend-item',\r\n legendItemEvent: 'c3-legend-item-event',\r\n legendItemTile: 'c3-legend-item-tile',\r\n legendItemHidden: 'c3-legend-item-hidden',\r\n legendItemFocused: 'c3-legend-item-focused',\r\n dragarea: 'c3-dragarea',\r\n EXPANDED: '_expanded_',\r\n SELECTED: '_selected_',\r\n INCLUDED: '_included_'\r\n };\n\n var AxisClass = /** @class */ (function () {\r\n function AxisClass(owner) {\r\n this.owner = owner;\r\n this.d3 = owner.d3;\r\n this.internal = AxisInternal;\r\n }\r\n return AxisClass;\r\n }());\r\n var Axis = AxisClass;\r\n Axis.prototype.init = function init() {\r\n var $$ = this.owner, config = $$.config, main = $$.main;\r\n $$.axes.x = main\r\n .append('g')\r\n .attr('class', CLASS.axis + ' ' + CLASS.axisX)\r\n .attr('clip-path', config.axis_x_inner ? '' : $$.clipPathForXAxis)\r\n .attr('transform', $$.getTranslate('x'))\r\n .style('visibility', config.axis_x_show ? 'visible' : 'hidden');\r\n $$.axes.x\r\n .append('text')\r\n .attr('class', CLASS.axisXLabel)\r\n .attr('transform', config.axis_rotated ? 'rotate(-90)' : '')\r\n .style('text-anchor', this.textAnchorForXAxisLabel.bind(this));\r\n $$.axes.y = main\r\n .append('g')\r\n .attr('class', CLASS.axis + ' ' + CLASS.axisY)\r\n .attr('clip-path', config.axis_y_inner ? '' : $$.clipPathForYAxis)\r\n .attr('transform', $$.getTranslate('y'))\r\n .style('visibility', config.axis_y_show ? 'visible' : 'hidden');\r\n $$.axes.y\r\n .append('text')\r\n .attr('class', CLASS.axisYLabel)\r\n .attr('transform', config.axis_rotated ? '' : 'rotate(-90)')\r\n .style('text-anchor', this.textAnchorForYAxisLabel.bind(this));\r\n $$.axes.y2 = main\r\n .append('g')\r\n .attr('class', CLASS.axis + ' ' + CLASS.axisY2)\r\n // clip-path?\r\n .attr('transform', $$.getTranslate('y2'))\r\n .style('visibility', config.axis_y2_show ? 'visible' : 'hidden');\r\n $$.axes.y2\r\n .append('text')\r\n .attr('class', CLASS.axisY2Label)\r\n .attr('transform', config.axis_rotated ? '' : 'rotate(-90)')\r\n .style('text-anchor', this.textAnchorForY2AxisLabel.bind(this));\r\n };\r\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\r\n var $$ = this.owner, config = $$.config, axisParams = {\r\n isCategory: $$.isCategorized(),\r\n withOuterTick: withOuterTick,\r\n tickMultiline: config.axis_x_tick_multiline,\r\n tickMultilineMax: config.axis_x_tick_multiline\r\n ? Number(config.axis_x_tick_multilineMax)\r\n : 0,\r\n tickWidth: config.axis_x_tick_width,\r\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\r\n withoutTransition: withoutTransition\r\n }, axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\r\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== 'function') {\r\n tickValues = tickValues.map(function (v) {\r\n return $$.parseDate(v);\r\n });\r\n }\r\n // Set tick\r\n axis.tickFormat(tickFormat).tickValues(tickValues);\r\n if ($$.isCategorized()) {\r\n axis.tickCentered(config.axis_x_tick_centered);\r\n if (isEmpty(config.axis_x_tick_culling)) {\r\n config.axis_x_tick_culling = false;\r\n }\r\n }\r\n return axis;\r\n };\r\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\r\n var $$ = this.owner, config = $$.config, tickValues;\r\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\r\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\r\n }\r\n if (axis) {\r\n axis.tickValues(tickValues);\r\n }\r\n else {\r\n $$.xAxis.tickValues(tickValues);\r\n $$.subXAxis.tickValues(tickValues);\r\n }\r\n return tickValues;\r\n };\r\n Axis.prototype.getYAxis = function getYAxis(axisId, scale, orient, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\r\n var $$ = this.owner;\r\n var config = $$.config;\r\n var tickFormat = config[\"axis_\" + axisId + \"_tick_format\"];\r\n if (!tickFormat && $$.isAxisNormalized(axisId)) {\r\n tickFormat = function (x) { return x + \"%\"; };\r\n }\r\n var axis = new this.internal(this, {\r\n withOuterTick: withOuterTick,\r\n withoutTransition: withoutTransition,\r\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\r\n }).axis\r\n .scale(scale)\r\n .orient(orient);\r\n if (tickFormat) {\r\n axis.tickFormat(tickFormat);\r\n }\r\n if ($$.isTimeSeriesY()) {\r\n axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\r\n }\r\n else {\r\n axis.tickValues(tickValues);\r\n }\r\n return axis;\r\n };\r\n Axis.prototype.getId = function getId(id) {\r\n var config = this.owner.config;\r\n return id in config.data_axes ? config.data_axes[id] : 'y';\r\n };\r\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\r\n // #2251 previously set any negative values to a whole number,\r\n // however both should be truncated according to the users format specification\r\n var $$ = this.owner, config = $$.config;\r\n var format = $$.isTimeSeries()\r\n ? $$.defaultAxisTimeFormat\r\n : $$.isCategorized()\r\n ? $$.categoryName\r\n : function (v) {\r\n return v;\r\n };\r\n if (config.axis_x_tick_format) {\r\n if (isFunction(config.axis_x_tick_format)) {\r\n format = config.axis_x_tick_format;\r\n }\r\n else if ($$.isTimeSeries()) {\r\n format = function (date) {\r\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : '';\r\n };\r\n }\r\n }\r\n return isFunction(format)\r\n ? function (v) {\r\n return format.call($$, v);\r\n }\r\n : format;\r\n };\r\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\r\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\r\n };\r\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\r\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\r\n };\r\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\r\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\r\n };\r\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\r\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\r\n };\r\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\r\n var $$ = this.owner, config = $$.config, option;\r\n if (axisId === 'y') {\r\n option = config.axis_y_label;\r\n }\r\n else if (axisId === 'y2') {\r\n option = config.axis_y2_label;\r\n }\r\n else if (axisId === 'x') {\r\n option = config.axis_x_label;\r\n }\r\n return option;\r\n };\r\n Axis.prototype.getLabelText = function getLabelText(axisId) {\r\n var option = this.getLabelOptionByAxisId(axisId);\r\n return isString(option) ? option : option ? option.text : null;\r\n };\r\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\r\n var $$ = this.owner, config = $$.config, option = this.getLabelOptionByAxisId(axisId);\r\n if (isString(option)) {\r\n if (axisId === 'y') {\r\n config.axis_y_label = text;\r\n }\r\n else if (axisId === 'y2') {\r\n config.axis_y2_label = text;\r\n }\r\n else if (axisId === 'x') {\r\n config.axis_x_label = text;\r\n }\r\n }\r\n else if (option) {\r\n option.text = text;\r\n }\r\n };\r\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\r\n var option = this.getLabelOptionByAxisId(axisId), position = option && typeof option === 'object' && option.position\r\n ? option.position\r\n : defaultPosition;\r\n return {\r\n isInner: position.indexOf('inner') >= 0,\r\n isOuter: position.indexOf('outer') >= 0,\r\n isLeft: position.indexOf('left') >= 0,\r\n isCenter: position.indexOf('center') >= 0,\r\n isRight: position.indexOf('right') >= 0,\r\n isTop: position.indexOf('top') >= 0,\r\n isMiddle: position.indexOf('middle') >= 0,\r\n isBottom: position.indexOf('bottom') >= 0\r\n };\r\n };\r\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\r\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\r\n };\r\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\r\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\r\n };\r\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\r\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\r\n };\r\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\r\n return id === 'y2'\r\n ? this.getY2AxisLabelPosition()\r\n : id === 'y'\r\n ? this.getYAxisLabelPosition()\r\n : this.getXAxisLabelPosition();\r\n };\r\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\r\n return this.getLabelText('x');\r\n };\r\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\r\n return this.getLabelText('y');\r\n };\r\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\r\n return this.getLabelText('y2');\r\n };\r\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\r\n var $$ = this.owner;\r\n if (forHorizontal) {\r\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\r\n }\r\n else {\r\n return position.isBottom\r\n ? -$$.height\r\n : position.isMiddle\r\n ? -$$.height / 2\r\n : 0;\r\n }\r\n };\r\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\r\n if (forHorizontal) {\r\n return position.isLeft ? '0.5em' : position.isRight ? '-0.5em' : '0';\r\n }\r\n else {\r\n return position.isTop ? '-0.5em' : position.isBottom ? '0.5em' : '0';\r\n }\r\n };\r\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\r\n if (forHorizontal) {\r\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\r\n }\r\n else {\r\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\r\n }\r\n };\r\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\r\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\r\n };\r\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\r\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\r\n };\r\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\r\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\r\n };\r\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\r\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\r\n };\r\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\r\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\r\n };\r\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\r\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\r\n };\r\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\r\n var $$ = this.owner, config = $$.config, position = this.getXAxisLabelPosition();\r\n if (config.axis_rotated) {\r\n return position.isInner\r\n ? '1.2em'\r\n : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\r\n }\r\n else {\r\n return position.isInner ? '-0.5em' : $$.getHorizontalAxisHeight('x') - 10;\r\n }\r\n };\r\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\r\n var $$ = this.owner, position = this.getYAxisLabelPosition();\r\n if ($$.config.axis_rotated) {\r\n return position.isInner ? '-0.5em' : '3em';\r\n }\r\n else {\r\n return position.isInner\r\n ? '1.2em'\r\n : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\r\n }\r\n };\r\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\r\n var $$ = this.owner, position = this.getY2AxisLabelPosition();\r\n if ($$.config.axis_rotated) {\r\n return position.isInner ? '1.2em' : '-2.2em';\r\n }\r\n else {\r\n return position.isInner\r\n ? '-0.5em'\r\n : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\r\n }\r\n };\r\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\r\n var $$ = this.owner;\r\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\r\n };\r\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\r\n var $$ = this.owner;\r\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\r\n };\r\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\r\n var $$ = this.owner;\r\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\r\n };\r\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\r\n var $$ = this.owner, maxWidth = 0, targetsToShow, scale, axis, dummy, svg;\r\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\r\n return $$.currentMaxTickWidths[id];\r\n }\r\n if ($$.svg) {\r\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\r\n if (id === 'y') {\r\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\r\n axis = this.getYAxis(id, scale, $$.yOrient, $$.yAxisTickValues, false, true, true);\r\n }\r\n else if (id === 'y2') {\r\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\r\n axis = this.getYAxis(id, scale, $$.y2Orient, $$.y2AxisTickValues, false, true, true);\r\n }\r\n else {\r\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\r\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\r\n this.updateXAxisTickValues(targetsToShow, axis);\r\n }\r\n dummy = $$.d3\r\n .select('body')\r\n .append('div')\r\n .classed('c3', true);\r\n (svg = dummy\r\n .append('svg')\r\n .style('visibility', 'hidden')\r\n .style('position', 'fixed')\r\n .style('top', 0)\r\n .style('left', 0)),\r\n svg\r\n .append('g')\r\n .call(axis)\r\n .each(function () {\r\n $$.d3\r\n .select(this)\r\n .selectAll('text')\r\n .each(function () {\r\n var box = getBBox(this);\r\n if (maxWidth < box.width) {\r\n maxWidth = box.width;\r\n }\r\n });\r\n dummy.remove();\r\n });\r\n }\r\n $$.currentMaxTickWidths[id] =\r\n maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\r\n return $$.currentMaxTickWidths[id];\r\n };\r\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\r\n var $$ = this.owner;\r\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel), axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel), axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\r\n (withTransition ? axisXLabel.transition() : axisXLabel)\r\n .attr('x', this.xForXAxisLabel.bind(this))\r\n .attr('dx', this.dxForXAxisLabel.bind(this))\r\n .attr('dy', this.dyForXAxisLabel.bind(this))\r\n .text(this.textForXAxisLabel.bind(this));\r\n (withTransition ? axisYLabel.transition() : axisYLabel)\r\n .attr('x', this.xForYAxisLabel.bind(this))\r\n .attr('dx', this.dxForYAxisLabel.bind(this))\r\n .attr('dy', this.dyForYAxisLabel.bind(this))\r\n .text(this.textForYAxisLabel.bind(this));\r\n (withTransition ? axisY2Label.transition() : axisY2Label)\r\n .attr('x', this.xForY2AxisLabel.bind(this))\r\n .attr('dx', this.dxForY2AxisLabel.bind(this))\r\n .attr('dy', this.dyForY2AxisLabel.bind(this))\r\n .text(this.textForY2AxisLabel.bind(this));\r\n };\r\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\r\n var p = typeof padding === 'number' ? padding : padding[key];\r\n if (!isValue(p)) {\r\n return defaultValue;\r\n }\r\n if (padding.unit === 'ratio') {\r\n return padding[key] * domainLength;\r\n }\r\n // assume padding is pixels if unit is not specified\r\n return this.convertPixelsToAxisPadding(p, domainLength);\r\n };\r\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\r\n var $$ = this.owner, length = $$.config.axis_rotated ? $$.width : $$.height;\r\n return domainLength * (pixels / length);\r\n };\r\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\r\n var tickValues = values, targetCount, start, end, count, interval, i, tickValue;\r\n if (tickCount) {\r\n targetCount = isFunction(tickCount) ? tickCount() : tickCount;\r\n // compute ticks according to tickCount\r\n if (targetCount === 1) {\r\n tickValues = [values[0]];\r\n }\r\n else if (targetCount === 2) {\r\n tickValues = [values[0], values[values.length - 1]];\r\n }\r\n else if (targetCount > 2) {\r\n count = targetCount - 2;\r\n start = values[0];\r\n end = values[values.length - 1];\r\n interval = (end - start) / (count + 1);\r\n // re-construct unique values\r\n tickValues = [start];\r\n for (i = 0; i < count; i++) {\r\n tickValue = +start + interval * (i + 1);\r\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\r\n }\r\n tickValues.push(end);\r\n }\r\n }\r\n if (!forTimeSeries) {\r\n tickValues = tickValues.sort(function (a, b) {\r\n return a - b;\r\n });\r\n }\r\n return tickValues;\r\n };\r\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\r\n var $$ = this.owner, axes = $$.axes;\r\n return {\r\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\r\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\r\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\r\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\r\n };\r\n };\r\n Axis.prototype.redraw = function redraw(duration, isHidden) {\r\n var $$ = this.owner, transition = duration ? $$.d3.transition().duration(duration) : null;\r\n $$.axes.x.style('opacity', isHidden ? 0 : 1).call($$.xAxis, transition);\r\n $$.axes.y.style('opacity', isHidden ? 0 : 1).call($$.yAxis, transition);\r\n $$.axes.y2.style('opacity', isHidden ? 0 : 1).call($$.y2Axis, transition);\r\n $$.axes.subx.style('opacity', isHidden ? 0 : 1).call($$.subXAxis, transition);\r\n };\n\n var c3 = {\r\n version: '0.7.20',\r\n chart: {\r\n fn: Chart.prototype,\r\n internal: {\r\n fn: ChartInternal.prototype,\r\n axis: {\r\n fn: AxisClass.prototype,\r\n internal: {\r\n fn: AxisInternal.prototype\r\n }\r\n }\r\n }\r\n },\r\n generate: function (config) {\r\n return new Chart(config);\r\n }\r\n };\r\n ChartInternal.prototype.beforeInit = function () {\r\n // can do something\r\n };\r\n ChartInternal.prototype.afterInit = function () {\r\n // can do something\r\n };\r\n ChartInternal.prototype.init = function () {\r\n var $$ = this, config = $$.config;\r\n $$.initParams();\r\n if (config.data_url) {\r\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\r\n }\r\n else if (config.data_json) {\r\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\r\n }\r\n else if (config.data_rows) {\r\n $$.initWithData($$.convertRowsToData(config.data_rows));\r\n }\r\n else if (config.data_columns) {\r\n $$.initWithData($$.convertColumnsToData(config.data_columns));\r\n }\r\n else {\r\n throw Error('url or json or rows or columns is required.');\r\n }\r\n };\r\n ChartInternal.prototype.initParams = function () {\r\n var $$ = this, d3 = $$.d3, config = $$.config;\r\n // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\r\n $$.clipId = 'c3-' + new Date().valueOf() + '-clip';\r\n $$.clipIdForXAxis = $$.clipId + '-xaxis';\r\n $$.clipIdForYAxis = $$.clipId + '-yaxis';\r\n $$.clipIdForGrid = $$.clipId + '-grid';\r\n $$.clipIdForSubchart = $$.clipId + '-subchart';\r\n $$.clipPath = $$.getClipPath($$.clipId);\r\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis);\r\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\r\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid);\r\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart);\r\n $$.dragStart = null;\r\n $$.dragging = false;\r\n $$.flowing = false;\r\n $$.cancelClick = false;\r\n $$.mouseover = undefined;\r\n $$.transiting = false;\r\n $$.color = $$.generateColor();\r\n $$.levelColor = $$.generateLevelColor();\r\n $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\r\n $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\r\n $$.defaultAxisTimeFormat = function (date) {\r\n if (date.getMilliseconds()) {\r\n return d3.timeFormat('.%L')(date);\r\n }\r\n if (date.getSeconds()) {\r\n return d3.timeFormat(':%S')(date);\r\n }\r\n if (date.getMinutes()) {\r\n return d3.timeFormat('%I:%M')(date);\r\n }\r\n if (date.getHours()) {\r\n return d3.timeFormat('%I %p')(date);\r\n }\r\n if (date.getDay() && date.getDate() !== 1) {\r\n return d3.timeFormat('%-m/%-d')(date);\r\n }\r\n if (date.getDate() !== 1) {\r\n return d3.timeFormat('%-m/%-d')(date);\r\n }\r\n if (date.getMonth()) {\r\n return d3.timeFormat('%-m/%-d')(date);\r\n }\r\n return d3.timeFormat('%Y/%-m/%-d')(date);\r\n };\r\n $$.hiddenTargetIds = [];\r\n $$.hiddenLegendIds = [];\r\n $$.focusedTargetIds = [];\r\n $$.defocusedTargetIds = [];\r\n $$.xOrient = config.axis_rotated\r\n ? config.axis_x_inner\r\n ? 'right'\r\n : 'left'\r\n : config.axis_x_inner\r\n ? 'top'\r\n : 'bottom';\r\n $$.yOrient = config.axis_rotated\r\n ? config.axis_y_inner\r\n ? 'top'\r\n : 'bottom'\r\n : config.axis_y_inner\r\n ? 'right'\r\n : 'left';\r\n $$.y2Orient = config.axis_rotated\r\n ? config.axis_y2_inner\r\n ? 'bottom'\r\n : 'top'\r\n : config.axis_y2_inner\r\n ? 'left'\r\n : 'right';\r\n $$.subXOrient = config.axis_rotated ? 'left' : 'bottom';\r\n $$.isLegendRight = config.legend_position === 'right';\r\n $$.isLegendInset = config.legend_position === 'inset';\r\n $$.isLegendTop =\r\n config.legend_inset_anchor === 'top-left' ||\r\n config.legend_inset_anchor === 'top-right';\r\n $$.isLegendLeft =\r\n config.legend_inset_anchor === 'top-left' ||\r\n config.legend_inset_anchor === 'bottom-left';\r\n $$.legendStep = 0;\r\n $$.legendItemWidth = 0;\r\n $$.legendItemHeight = 0;\r\n $$.currentMaxTickWidths = {\r\n x: 0,\r\n y: 0,\r\n y2: 0\r\n };\r\n $$.rotated_padding_left = 30;\r\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\r\n $$.rotated_padding_top = 5;\r\n $$.withoutFadeIn = {};\r\n $$.intervalForObserveInserted = undefined;\r\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\r\n };\r\n ChartInternal.prototype.initChartElements = function () {\r\n if (this.initBar) {\r\n this.initBar();\r\n }\r\n if (this.initLine) {\r\n this.initLine();\r\n }\r\n if (this.initArc) {\r\n this.initArc();\r\n }\r\n if (this.initGauge) {\r\n this.initGauge();\r\n }\r\n if (this.initText) {\r\n this.initText();\r\n }\r\n };\r\n ChartInternal.prototype.initWithData = function (data) {\r\n var $$ = this, d3 = $$.d3, config = $$.config;\r\n var defs, main, binding = true;\r\n $$.axis = new AxisClass($$);\r\n if (!config.bindto) {\r\n $$.selectChart = d3.selectAll([]);\r\n }\r\n else if (typeof config.bindto.node === 'function') {\r\n $$.selectChart = config.bindto;\r\n }\r\n else {\r\n $$.selectChart = d3.select(config.bindto);\r\n }\r\n if ($$.selectChart.empty()) {\r\n $$.selectChart = d3\r\n .select(document.createElement('div'))\r\n .style('opacity', 0);\r\n $$.observeInserted($$.selectChart);\r\n binding = false;\r\n }\r\n $$.selectChart.html('').classed('c3', true);\r\n // Init data as targets\r\n $$.data.xs = {};\r\n $$.data.targets = $$.convertDataToTargets(data);\r\n if (config.data_filter) {\r\n $$.data.targets = $$.data.targets.filter(config.data_filter);\r\n }\r\n // Set targets to hide if needed\r\n if (config.data_hide) {\r\n $$.addHiddenTargetIds(config.data_hide === true\r\n ? $$.mapToIds($$.data.targets)\r\n : config.data_hide);\r\n }\r\n if (config.legend_hide) {\r\n $$.addHiddenLegendIds(config.legend_hide === true\r\n ? $$.mapToIds($$.data.targets)\r\n : config.legend_hide);\r\n }\r\n if ($$.isStanfordGraphType()) {\r\n $$.initStanfordData();\r\n }\r\n // Init sizes and scales\r\n $$.updateSizes();\r\n $$.updateScales();\r\n // Set domains for each scale\r\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\r\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\r\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\r\n $$.subX.domain($$.x.domain());\r\n $$.subY.domain($$.y.domain());\r\n $$.subY2.domain($$.y2.domain());\r\n // Save original x domain for zoom update\r\n $$.orgXDomain = $$.x.domain();\r\n /*-- Basic Elements --*/\r\n // Define svgs\r\n $$.svg = $$.selectChart\r\n .append('svg')\r\n .style('overflow', 'hidden')\r\n .on('mouseenter', function () {\r\n return config.onmouseover.call($$);\r\n })\r\n .on('mouseleave', function () {\r\n return config.onmouseout.call($$);\r\n });\r\n if ($$.config.svg_classname) {\r\n $$.svg.attr('class', $$.config.svg_classname);\r\n }\r\n // Define defs\r\n defs = $$.svg.append('defs');\r\n $$.clipChart = $$.appendClip(defs, $$.clipId);\r\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\r\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\r\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\r\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\r\n $$.updateSvgSize();\r\n // Define regions\r\n main = $$.main = $$.svg.append('g').attr('transform', $$.getTranslate('main'));\r\n if ($$.initPie) {\r\n $$.initPie();\r\n }\r\n if ($$.initDragZoom) {\r\n $$.initDragZoom();\r\n }\r\n if (config.subchart_show && $$.initSubchart) {\r\n $$.initSubchart();\r\n }\r\n if ($$.initTooltip) {\r\n $$.initTooltip();\r\n }\r\n if ($$.initLegend) {\r\n $$.initLegend();\r\n }\r\n if ($$.initTitle) {\r\n $$.initTitle();\r\n }\r\n if ($$.initZoom) {\r\n $$.initZoom();\r\n }\r\n if ($$.isStanfordGraphType()) {\r\n $$.drawColorScale();\r\n }\r\n // Update selection based on size and scale\r\n // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\r\n if (config.subchart_show && $$.initSubchartBrush) {\r\n $$.initSubchartBrush();\r\n }\r\n /*-- Main Region --*/\r\n // text when empty\r\n main\r\n .append('text')\r\n .attr('class', CLASS.text + ' ' + CLASS.empty)\r\n .attr('text-anchor', 'middle') // horizontal centering of text at x position in all browsers.\r\n .attr('dominant-baseline', 'middle'); // vertical centering of text at y position in all browsers, except IE.\r\n // Regions\r\n $$.initRegion();\r\n // Grids\r\n $$.initGrid();\r\n // Define g for chart area\r\n main\r\n .append('g')\r\n .attr('clip-path', $$.clipPath)\r\n .attr('class', CLASS.chart);\r\n // Grid lines\r\n if (config.grid_lines_front) {\r\n $$.initGridLines();\r\n }\r\n $$.initStanfordElements();\r\n // Cover whole with rects for events\r\n $$.initEventRect();\r\n // Define g for chart\r\n $$.initChartElements();\r\n // Add Axis\r\n $$.axis.init();\r\n // Set targets\r\n $$.updateTargets($$.data.targets);\r\n // Set default extent if defined\r\n if (config.axis_x_selection) {\r\n $$.brush.selectionAsValue($$.getDefaultSelection());\r\n }\r\n // Draw with targets\r\n if (binding) {\r\n $$.updateDimension();\r\n $$.config.oninit.call($$);\r\n $$.redraw({\r\n withTransition: false,\r\n withTransform: true,\r\n withUpdateXDomain: true,\r\n withUpdateOrgXDomain: true,\r\n withTransitionForAxis: false\r\n });\r\n }\r\n // Bind to resize event\r\n $$.bindResize();\r\n // Bind to window focus event\r\n $$.bindWindowFocus();\r\n // export element of the chart\r\n $$.api.element = $$.selectChart.node();\r\n };\r\n ChartInternal.prototype.smoothLines = function (el, type) {\r\n var $$ = this;\r\n if (type === 'grid') {\r\n el.each(function () {\r\n var g = $$.d3.select(this), x1 = g.attr('x1'), x2 = g.attr('x2'), y1 = g.attr('y1'), y2 = g.attr('y2');\r\n g.attr({\r\n x1: Math.ceil(x1),\r\n x2: Math.ceil(x2),\r\n y1: Math.ceil(y1),\r\n y2: Math.ceil(y2)\r\n });\r\n });\r\n }\r\n };\r\n ChartInternal.prototype.updateSizes = function () {\r\n var $$ = this, config = $$.config;\r\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0, legendWidth = $$.legend ? $$.getLegendWidth() : 0, legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight, hasArc = $$.hasArcType(), xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'), subchartXAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x', true), subchartHeight = config.subchart_show && !hasArc\r\n ? config.subchart_size_height + subchartXAxisHeight\r\n : 0;\r\n $$.currentWidth = $$.getCurrentWidth();\r\n $$.currentHeight = $$.getCurrentHeight();\r\n // for main\r\n $$.margin = config.axis_rotated\r\n ? {\r\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\r\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\r\n bottom: $$.getHorizontalAxisHeight('y') +\r\n legendHeightForBottom +\r\n $$.getCurrentPaddingBottom(),\r\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\r\n }\r\n : {\r\n top: 4 + $$.getCurrentPaddingTop(),\r\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\r\n bottom: xAxisHeight +\r\n subchartHeight +\r\n legendHeightForBottom +\r\n $$.getCurrentPaddingBottom(),\r\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\r\n };\r\n // for subchart\r\n $$.margin2 = config.axis_rotated\r\n ? {\r\n top: $$.margin.top,\r\n right: NaN,\r\n bottom: 20 + legendHeightForBottom,\r\n left: $$.rotated_padding_left\r\n }\r\n : {\r\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\r\n right: NaN,\r\n bottom: subchartXAxisHeight + legendHeightForBottom,\r\n left: $$.margin.left\r\n };\r\n // for legend\r\n $$.margin3 = {\r\n top: 0,\r\n right: NaN,\r\n bottom: 0,\r\n left: 0\r\n };\r\n if ($$.updateSizeForLegend) {\r\n $$.updateSizeForLegend(legendHeight, legendWidth);\r\n }\r\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\r\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\r\n if ($$.width < 0) {\r\n $$.width = 0;\r\n }\r\n if ($$.height < 0) {\r\n $$.height = 0;\r\n }\r\n $$.width2 = config.axis_rotated\r\n ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right\r\n : $$.width;\r\n $$.height2 = config.axis_rotated\r\n ? $$.height\r\n : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\r\n if ($$.width2 < 0) {\r\n $$.width2 = 0;\r\n }\r\n if ($$.height2 < 0) {\r\n $$.height2 = 0;\r\n }\r\n // for arc\r\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\r\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\r\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\r\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\r\n }\r\n if ($$.updateRadius) {\r\n $$.updateRadius();\r\n }\r\n if ($$.isLegendRight && hasArc) {\r\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\r\n }\r\n };\r\n ChartInternal.prototype.updateTargets = function (targets) {\r\n var $$ = this, config = $$.config;\r\n /*-- Main --*/\r\n //-- Text --//\r\n $$.updateTargetsForText(targets);\r\n //-- Bar --//\r\n $$.updateTargetsForBar(targets);\r\n //-- Line --//\r\n $$.updateTargetsForLine(targets);\r\n //-- Arc --//\r\n if ($$.hasArcType() && $$.updateTargetsForArc) {\r\n $$.updateTargetsForArc(targets);\r\n }\r\n /*-- Sub --*/\r\n if (config.subchart_show && $$.updateTargetsForSubchart) {\r\n $$.updateTargetsForSubchart(targets);\r\n }\r\n // Fade-in each chart\r\n $$.showTargets();\r\n };\r\n ChartInternal.prototype.showTargets = function () {\r\n var $$ = this;\r\n $$.svg\r\n .selectAll('.' + CLASS.target)\r\n .filter(function (d) {\r\n return $$.isTargetToShow(d.id);\r\n })\r\n .transition()\r\n .duration($$.config.transition_duration)\r\n .style('opacity', 1);\r\n };\r\n ChartInternal.prototype.redraw = function (options, transitions) {\r\n var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;\r\n var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);\r\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\r\n var hideAxis = $$.hasArcType();\r\n var drawArea, drawBar, drawLine, xForText, yForText;\r\n var duration, durationForExit, durationForAxis;\r\n var transitionsToWait, waitForDraw, flow, transition;\r\n var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom;\r\n var xv = $$.xv.bind($$), cx, cy;\r\n options = options || {};\r\n withY = getOption(options, 'withY', true);\r\n withSubchart = getOption(options, 'withSubchart', true);\r\n withTransition = getOption(options, 'withTransition', true);\r\n withTransform = getOption(options, 'withTransform', false);\r\n withUpdateXDomain = getOption(options, 'withUpdateXDomain', false);\r\n withUpdateOrgXDomain = getOption(options, 'withUpdateOrgXDomain', false);\r\n withTrimXDomain = getOption(options, 'withTrimXDomain', true);\r\n withUpdateXAxis = getOption(options, 'withUpdateXAxis', withUpdateXDomain);\r\n withLegend = getOption(options, 'withLegend', false);\r\n withEventRect = getOption(options, 'withEventRect', true);\r\n withDimension = getOption(options, 'withDimension', true);\r\n withTransitionForExit = getOption(options, 'withTransitionForExit', withTransition);\r\n withTransitionForAxis = getOption(options, 'withTransitionForAxis', withTransition);\r\n duration = withTransition ? config.transition_duration : 0;\r\n durationForExit = withTransitionForExit ? duration : 0;\r\n durationForAxis = withTransitionForAxis ? duration : 0;\r\n transitions = transitions || $$.axis.generateTransitions(durationForAxis);\r\n // update legend and transform each g\r\n if (withLegend && config.legend_show) {\r\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\r\n }\r\n else if (withDimension) {\r\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\r\n // no need to update axis in it because they will be updated in redraw()\r\n $$.updateDimension(true);\r\n }\r\n // MEMO: needed for grids calculation\r\n if ($$.isCategorized() && targetsToShow.length === 0) {\r\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\r\n }\r\n if (targetsToShow.length) {\r\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\r\n if (!config.axis_x_tick_values) {\r\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\r\n }\r\n }\r\n else {\r\n $$.xAxis.tickValues([]);\r\n $$.subXAxis.tickValues([]);\r\n }\r\n if (config.zoom_rescale && !options.flow) {\r\n xDomainForZoom = $$.x.orgDomain();\r\n }\r\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\r\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\r\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\r\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\r\n }\r\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\r\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\r\n }\r\n // axes\r\n $$.axis.redraw(durationForAxis, hideAxis);\r\n // Update axis label\r\n $$.axis.updateLabels(withTransition);\r\n // show/hide if manual culling needed\r\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\r\n if (config.axis_x_tick_culling && tickValues) {\r\n for (i = 1; i < tickValues.length; i++) {\r\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\r\n intervalForCulling = i;\r\n break;\r\n }\r\n }\r\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\r\n var index = tickValues.indexOf(e);\r\n if (index >= 0) {\r\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\r\n }\r\n });\r\n }\r\n else {\r\n $$.svg\r\n .selectAll('.' + CLASS.axisX + ' .tick text')\r\n .style('display', 'block');\r\n }\r\n }\r\n // setup drawer - MEMO: these must be called after axis updated\r\n drawArea = $$.generateDrawArea\r\n ? $$.generateDrawArea(areaIndices, false)\r\n : undefined;\r\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\r\n drawLine = $$.generateDrawLine\r\n ? $$.generateDrawLine(lineIndices, false)\r\n : undefined;\r\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\r\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\r\n // update circleY based on updated parameters\r\n $$.updateCircleY();\r\n // generate circle x/y functions depending on updated params\r\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\r\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\r\n // Update sub domain\r\n if (withY) {\r\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\r\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\r\n }\r\n // xgrid focus\r\n $$.updateXgridFocus();\r\n // Data empty label positioning and text.\r\n main\r\n .select('text.' + CLASS.text + '.' + CLASS.empty)\r\n .attr('x', $$.width / 2)\r\n .attr('y', $$.height / 2)\r\n .text(config.data_empty_label_text)\r\n .transition()\r\n .style('opacity', targetsToShow.length ? 0 : 1);\r\n // event rect\r\n if (withEventRect) {\r\n $$.redrawEventRect();\r\n }\r\n // grid\r\n $$.updateGrid(duration);\r\n $$.updateStanfordElements(duration);\r\n // rect for regions\r\n $$.updateRegion(duration);\r\n // bars\r\n $$.updateBar(durationForExit);\r\n // lines, areas and circles\r\n $$.updateLine(durationForExit);\r\n $$.updateArea(durationForExit);\r\n $$.updateCircle(cx, cy);\r\n // text\r\n if ($$.hasDataLabel()) {\r\n $$.updateText(xForText, yForText, durationForExit);\r\n }\r\n // title\r\n if ($$.redrawTitle) {\r\n $$.redrawTitle();\r\n }\r\n // arc\r\n if ($$.redrawArc) {\r\n $$.redrawArc(duration, durationForExit, withTransform);\r\n }\r\n // subchart\r\n if (config.subchart_show && $$.redrawSubchart) {\r\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\r\n }\r\n if ($$.isStanfordGraphType()) {\r\n $$.drawColorScale();\r\n }\r\n // circles for select\r\n main\r\n .selectAll('.' + CLASS.selectedCircles)\r\n .filter($$.isBarType.bind($$))\r\n .selectAll('circle')\r\n .remove();\r\n if (options.flow) {\r\n flow = $$.generateFlow({\r\n targets: targetsToShow,\r\n flow: options.flow,\r\n duration: options.flow.duration,\r\n drawBar: drawBar,\r\n drawLine: drawLine,\r\n drawArea: drawArea,\r\n cx: cx,\r\n cy: cy,\r\n xv: xv,\r\n xForText: xForText,\r\n yForText: yForText\r\n });\r\n }\r\n if (duration && $$.isTabVisible()) {\r\n // Only use transition if tab visible. See #938.\r\n // transition should be derived from one transition\r\n transition = d3.transition().duration(duration);\r\n transitionsToWait = [];\r\n [\r\n $$.redrawBar(drawBar, true, transition),\r\n $$.redrawLine(drawLine, true, transition),\r\n $$.redrawArea(drawArea, true, transition),\r\n $$.redrawCircle(cx, cy, true, transition),\r\n $$.redrawText(xForText, yForText, options.flow, true, transition),\r\n $$.redrawRegion(true, transition),\r\n $$.redrawGrid(true, transition)\r\n ].forEach(function (transitions) {\r\n transitions.forEach(function (transition) {\r\n transitionsToWait.push(transition);\r\n });\r\n });\r\n // Wait for end of transitions to call flow and onrendered callback\r\n waitForDraw = $$.generateWait();\r\n transitionsToWait.forEach(function (t) {\r\n waitForDraw.add(t);\r\n });\r\n waitForDraw(function () {\r\n if (flow) {\r\n flow();\r\n }\r\n if (config.onrendered) {\r\n config.onrendered.call($$);\r\n }\r\n });\r\n }\r\n else {\r\n $$.redrawBar(drawBar);\r\n $$.redrawLine(drawLine);\r\n $$.redrawArea(drawArea);\r\n $$.redrawCircle(cx, cy);\r\n $$.redrawText(xForText, yForText, options.flow);\r\n $$.redrawRegion();\r\n $$.redrawGrid();\r\n if (flow) {\r\n flow();\r\n }\r\n if (config.onrendered) {\r\n config.onrendered.call($$);\r\n }\r\n }\r\n // update fadein condition\r\n $$.mapToIds($$.data.targets).forEach(function (id) {\r\n $$.withoutFadeIn[id] = true;\r\n });\r\n };\r\n ChartInternal.prototype.updateAndRedraw = function (options) {\r\n var $$ = this, config = $$.config, transitions;\r\n options = options || {};\r\n // same with redraw\r\n options.withTransition = getOption(options, 'withTransition', true);\r\n options.withTransform = getOption(options, 'withTransform', false);\r\n options.withLegend = getOption(options, 'withLegend', false);\r\n // NOT same with redraw\r\n options.withUpdateXDomain = getOption(options, 'withUpdateXDomain', true);\r\n options.withUpdateOrgXDomain = getOption(options, 'withUpdateOrgXDomain', true);\r\n options.withTransitionForExit = false;\r\n options.withTransitionForTransform = getOption(options, 'withTransitionForTransform', options.withTransition);\r\n // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\r\n $$.updateSizes();\r\n // MEMO: called in updateLegend in redraw if withLegend\r\n if (!(options.withLegend && config.legend_show)) {\r\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\r\n // Update scales\r\n $$.updateScales();\r\n $$.updateSvgSize();\r\n // Update g positions\r\n $$.transformAll(options.withTransitionForTransform, transitions);\r\n }\r\n // Draw with new sizes & scales\r\n $$.redraw(options, transitions);\r\n };\r\n ChartInternal.prototype.redrawWithoutRescale = function () {\r\n this.redraw({\r\n withY: false,\r\n withSubchart: false,\r\n withEventRect: false,\r\n withTransitionForAxis: false\r\n });\r\n };\r\n ChartInternal.prototype.isTimeSeries = function () {\r\n return this.config.axis_x_type === 'timeseries';\r\n };\r\n ChartInternal.prototype.isCategorized = function () {\r\n return this.config.axis_x_type.indexOf('categor') >= 0;\r\n };\r\n ChartInternal.prototype.isCustomX = function () {\r\n var $$ = this, config = $$.config;\r\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\r\n };\r\n ChartInternal.prototype.isTimeSeriesY = function () {\r\n return this.config.axis_y_type === 'timeseries';\r\n };\r\n ChartInternal.prototype.getTranslate = function (target) {\r\n var $$ = this, config = $$.config, x, y;\r\n if (target === 'main') {\r\n x = asHalfPixel($$.margin.left);\r\n y = asHalfPixel($$.margin.top);\r\n }\r\n else if (target === 'context') {\r\n x = asHalfPixel($$.margin2.left);\r\n y = asHalfPixel($$.margin2.top);\r\n }\r\n else if (target === 'legend') {\r\n x = $$.margin3.left;\r\n y = $$.margin3.top;\r\n }\r\n else if (target === 'x') {\r\n x = 0;\r\n y = config.axis_rotated ? 0 : $$.height;\r\n }\r\n else if (target === 'y') {\r\n x = 0;\r\n y = config.axis_rotated ? $$.height : 0;\r\n }\r\n else if (target === 'y2') {\r\n x = config.axis_rotated ? 0 : $$.width;\r\n y = config.axis_rotated ? 1 : 0;\r\n }\r\n else if (target === 'subx') {\r\n x = 0;\r\n y = config.axis_rotated ? 0 : $$.height2;\r\n }\r\n else if (target === 'arc') {\r\n x = $$.arcWidth / 2;\r\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\r\n }\r\n return 'translate(' + x + ',' + y + ')';\r\n };\r\n ChartInternal.prototype.initialOpacity = function (d) {\r\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\r\n };\r\n ChartInternal.prototype.initialOpacityForCircle = function (d) {\r\n return d.value !== null && this.withoutFadeIn[d.id]\r\n ? this.opacityForCircle(d)\r\n : 0;\r\n };\r\n ChartInternal.prototype.opacityForCircle = function (d) {\r\n var isPointShouldBeShown = isFunction(this.config.point_show)\r\n ? this.config.point_show(d)\r\n : this.config.point_show;\r\n var opacity = isPointShouldBeShown || this.isStanfordType(d) ? 1 : 0;\r\n return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;\r\n };\r\n ChartInternal.prototype.opacityForText = function () {\r\n return this.hasDataLabel() ? 1 : 0;\r\n };\r\n ChartInternal.prototype.xx = function (d) {\r\n return d ? this.x(d.x) : null;\r\n };\r\n ChartInternal.prototype.xvCustom = function (d, xyValue) {\r\n var $$ = this, value = xyValue ? d[xyValue] : d.value;\r\n if ($$.isTimeSeries()) {\r\n value = $$.parseDate(d.value);\r\n }\r\n else if ($$.isCategorized() && typeof d.value === 'string') {\r\n value = $$.config.axis_x_categories.indexOf(d.value);\r\n }\r\n return Math.ceil($$.x(value));\r\n };\r\n ChartInternal.prototype.yvCustom = function (d, xyValue) {\r\n var $$ = this, yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y, value = xyValue ? d[xyValue] : d.value;\r\n return Math.ceil(yScale(value));\r\n };\r\n ChartInternal.prototype.xv = function (d) {\r\n var $$ = this, value = d.value;\r\n if ($$.isTimeSeries()) {\r\n value = $$.parseDate(d.value);\r\n }\r\n else if ($$.isCategorized() && typeof d.value === 'string') {\r\n value = $$.config.axis_x_categories.indexOf(d.value);\r\n }\r\n return Math.ceil($$.x(value));\r\n };\r\n ChartInternal.prototype.yv = function (d) {\r\n var $$ = this, yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\r\n return Math.ceil(yScale(d.value));\r\n };\r\n ChartInternal.prototype.subxx = function (d) {\r\n return d ? this.subX(d.x) : null;\r\n };\r\n ChartInternal.prototype.transformMain = function (withTransition, transitions) {\r\n var $$ = this, xAxis, yAxis, y2Axis;\r\n if (transitions && transitions.axisX) {\r\n xAxis = transitions.axisX;\r\n }\r\n else {\r\n xAxis = $$.main.select('.' + CLASS.axisX);\r\n if (withTransition) {\r\n xAxis = xAxis.transition();\r\n }\r\n }\r\n if (transitions && transitions.axisY) {\r\n yAxis = transitions.axisY;\r\n }\r\n else {\r\n yAxis = $$.main.select('.' + CLASS.axisY);\r\n if (withTransition) {\r\n yAxis = yAxis.transition();\r\n }\r\n }\r\n if (transitions && transitions.axisY2) {\r\n y2Axis = transitions.axisY2;\r\n }\r\n else {\r\n y2Axis = $$.main.select('.' + CLASS.axisY2);\r\n if (withTransition) {\r\n y2Axis = y2Axis.transition();\r\n }\r\n }\r\n (withTransition ? $$.main.transition() : $$.main).attr('transform', $$.getTranslate('main'));\r\n xAxis.attr('transform', $$.getTranslate('x'));\r\n yAxis.attr('transform', $$.getTranslate('y'));\r\n y2Axis.attr('transform', $$.getTranslate('y2'));\r\n $$.main\r\n .select('.' + CLASS.chartArcs)\r\n .attr('transform', $$.getTranslate('arc'));\r\n };\r\n ChartInternal.prototype.transformAll = function (withTransition, transitions) {\r\n var $$ = this;\r\n $$.transformMain(withTransition, transitions);\r\n if ($$.config.subchart_show) {\r\n $$.transformContext(withTransition, transitions);\r\n }\r\n if ($$.legend) {\r\n $$.transformLegend(withTransition);\r\n }\r\n };\r\n ChartInternal.prototype.updateSvgSize = function () {\r\n var $$ = this, brush = $$.svg.select(\".\" + CLASS.brush + \" .overlay\");\r\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\r\n $$.svg\r\n .selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid])\r\n .select('rect')\r\n .attr('width', $$.width)\r\n .attr('height', $$.height);\r\n $$.svg\r\n .select('#' + $$.clipIdForXAxis)\r\n .select('rect')\r\n .attr('x', $$.getXAxisClipX.bind($$))\r\n .attr('y', $$.getXAxisClipY.bind($$))\r\n .attr('width', $$.getXAxisClipWidth.bind($$))\r\n .attr('height', $$.getXAxisClipHeight.bind($$));\r\n $$.svg\r\n .select('#' + $$.clipIdForYAxis)\r\n .select('rect')\r\n .attr('x', $$.getYAxisClipX.bind($$))\r\n .attr('y', $$.getYAxisClipY.bind($$))\r\n .attr('width', $$.getYAxisClipWidth.bind($$))\r\n .attr('height', $$.getYAxisClipHeight.bind($$));\r\n $$.svg\r\n .select('#' + $$.clipIdForSubchart)\r\n .select('rect')\r\n .attr('width', $$.width)\r\n .attr('height', (brush.size() && brush.attr('height')) || 0);\r\n // MEMO: parent div's height will be bigger than svg when \r\n $$.selectChart.style('max-height', $$.currentHeight + 'px');\r\n };\r\n ChartInternal.prototype.updateDimension = function (withoutAxis) {\r\n var $$ = this;\r\n if (!withoutAxis) {\r\n if ($$.config.axis_rotated) {\r\n $$.axes.x.call($$.xAxis);\r\n $$.axes.subx.call($$.subXAxis);\r\n }\r\n else {\r\n $$.axes.y.call($$.yAxis);\r\n $$.axes.y2.call($$.y2Axis);\r\n }\r\n }\r\n $$.updateSizes();\r\n $$.updateScales();\r\n $$.updateSvgSize();\r\n $$.transformAll(false);\r\n };\r\n ChartInternal.prototype.observeInserted = function (selection) {\r\n var $$ = this, observer;\r\n if (typeof MutationObserver === 'undefined') {\r\n window.console.error('MutationObserver not defined.');\r\n return;\r\n }\r\n observer = new MutationObserver(function (mutations) {\r\n mutations.forEach(function (mutation) {\r\n if (mutation.type === 'childList' && mutation.previousSibling) {\r\n observer.disconnect();\r\n // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\r\n $$.intervalForObserveInserted = window.setInterval(function () {\r\n // parentNode will NOT be null when completed\r\n if (selection.node().parentNode) {\r\n window.clearInterval($$.intervalForObserveInserted);\r\n $$.updateDimension();\r\n if ($$.brush) {\r\n $$.brush.update();\r\n }\r\n $$.config.oninit.call($$);\r\n $$.redraw({\r\n withTransform: true,\r\n withUpdateXDomain: true,\r\n withUpdateOrgXDomain: true,\r\n withTransition: false,\r\n withTransitionForTransform: false,\r\n withLegend: true\r\n });\r\n selection.transition().style('opacity', 1);\r\n }\r\n }, 10);\r\n }\r\n });\r\n });\r\n observer.observe(selection.node(), {\r\n attributes: true,\r\n childList: true,\r\n characterData: true\r\n });\r\n };\r\n /**\r\n * Binds handlers to the window resize event.\r\n */\r\n ChartInternal.prototype.bindResize = function () {\r\n var $$ = this, config = $$.config;\r\n $$.resizeFunction = $$.generateResize(); // need to call .remove\r\n $$.resizeFunction.add(function () {\r\n config.onresize.call($$);\r\n });\r\n if (config.resize_auto) {\r\n $$.resizeFunction.add(function () {\r\n if ($$.resizeTimeout !== undefined) {\r\n window.clearTimeout($$.resizeTimeout);\r\n }\r\n $$.resizeTimeout = window.setTimeout(function () {\r\n delete $$.resizeTimeout;\r\n $$.updateAndRedraw({\r\n withUpdateXDomain: false,\r\n withUpdateOrgXDomain: false,\r\n withTransition: false,\r\n withTransitionForTransform: false,\r\n withLegend: true\r\n });\r\n if ($$.brush) {\r\n $$.brush.update();\r\n }\r\n }, 100);\r\n });\r\n }\r\n $$.resizeFunction.add(function () {\r\n config.onresized.call($$);\r\n });\r\n $$.resizeIfElementDisplayed = function () {\r\n // if element not displayed skip it\r\n if ($$.api == null || !$$.api.element.offsetParent) {\r\n return;\r\n }\r\n $$.resizeFunction();\r\n };\r\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\r\n };\r\n /**\r\n * Binds handlers to the window focus event.\r\n */\r\n ChartInternal.prototype.bindWindowFocus = function () {\r\n var _this = this;\r\n if (this.windowFocusHandler) {\r\n // The handler is already set\r\n return;\r\n }\r\n this.windowFocusHandler = function () {\r\n _this.redraw();\r\n };\r\n window.addEventListener('focus', this.windowFocusHandler);\r\n };\r\n /**\r\n * Unbinds from the window focus event.\r\n */\r\n ChartInternal.prototype.unbindWindowFocus = function () {\r\n window.removeEventListener('focus', this.windowFocusHandler);\r\n delete this.windowFocusHandler;\r\n };\r\n ChartInternal.prototype.generateResize = function () {\r\n var resizeFunctions = [];\r\n function callResizeFunctions() {\r\n resizeFunctions.forEach(function (f) {\r\n f();\r\n });\r\n }\r\n callResizeFunctions.add = function (f) {\r\n resizeFunctions.push(f);\r\n };\r\n callResizeFunctions.remove = function (f) {\r\n for (var i = 0; i < resizeFunctions.length; i++) {\r\n if (resizeFunctions[i] === f) {\r\n resizeFunctions.splice(i, 1);\r\n break;\r\n }\r\n }\r\n };\r\n return callResizeFunctions;\r\n };\r\n ChartInternal.prototype.endall = function (transition, callback) {\r\n var n = 0;\r\n transition\r\n .each(function () {\r\n ++n;\r\n })\r\n .on('end', function () {\r\n if (!--n) {\r\n callback.apply(this, arguments);\r\n }\r\n });\r\n };\r\n ChartInternal.prototype.generateWait = function () {\r\n var $$ = this;\r\n var transitionsToWait = [], f = function (callback) {\r\n var timer = setInterval(function () {\r\n if (!$$.isTabVisible()) {\r\n return;\r\n }\r\n var done = 0;\r\n transitionsToWait.forEach(function (t) {\r\n if (t.empty()) {\r\n done += 1;\r\n return;\r\n }\r\n try {\r\n t.transition();\r\n }\r\n catch (e) {\r\n done += 1;\r\n }\r\n });\r\n if (done === transitionsToWait.length) {\r\n clearInterval(timer);\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }, 50);\r\n };\r\n f.add = function (transition) {\r\n transitionsToWait.push(transition);\r\n };\r\n return f;\r\n };\r\n ChartInternal.prototype.parseDate = function (date) {\r\n var $$ = this, parsedDate;\r\n if (date instanceof Date) {\r\n parsedDate = date;\r\n }\r\n else if (typeof date === 'string') {\r\n parsedDate = $$.dataTimeParse(date);\r\n }\r\n else if (typeof date === 'object') {\r\n parsedDate = new Date(+date);\r\n }\r\n else if (typeof date === 'number' && !isNaN(date)) {\r\n parsedDate = new Date(+date);\r\n }\r\n if (!parsedDate || isNaN(+parsedDate)) {\r\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\r\n }\r\n return parsedDate;\r\n };\r\n ChartInternal.prototype.isTabVisible = function () {\r\n return !document.hidden;\r\n };\r\n ChartInternal.prototype.getPathBox = getPathBox;\r\n ChartInternal.prototype.CLASS = CLASS;\n\n /* jshint ignore:start */\r\n (function () {\r\n if (!('SVGPathSeg' in window)) {\r\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\r\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\r\n this.pathSegType = type;\r\n this.pathSegTypeAsLetter = typeAsLetter;\r\n this._owningPathSegList = owningPathSegList;\r\n };\r\n window.SVGPathSeg.prototype.classname = 'SVGPathSeg';\r\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\r\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\r\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\r\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\r\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\r\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\r\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\r\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\r\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\r\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\r\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\r\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\r\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\r\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\r\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\r\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\r\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\r\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\r\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\r\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\r\n // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\r\n window.SVGPathSeg.prototype._segmentChanged = function () {\r\n if (this._owningPathSegList)\r\n this._owningPathSegList.segmentChanged(this);\r\n };\r\n window.SVGPathSegClosePath = function (owningPathSegList) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, 'z', owningPathSegList);\r\n };\r\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegClosePath.prototype.toString = function () {\r\n return '[object SVGPathSegClosePath]';\r\n };\r\n window.SVGPathSegClosePath.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter;\r\n };\r\n window.SVGPathSegClosePath.prototype.clone = function () {\r\n return new window.SVGPathSegClosePath(undefined);\r\n };\r\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, 'M', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n };\r\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\r\n return '[object SVGPathSegMovetoAbs]';\r\n };\r\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y;\r\n };\r\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\r\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, 'm', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n };\r\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegMovetoRel.prototype.toString = function () {\r\n return '[object SVGPathSegMovetoRel]';\r\n };\r\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y;\r\n };\r\n window.SVGPathSegMovetoRel.prototype.clone = function () {\r\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, 'L', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n };\r\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\r\n return '[object SVGPathSegLinetoAbs]';\r\n };\r\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y;\r\n };\r\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\r\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, 'l', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n };\r\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegLinetoRel.prototype.toString = function () {\r\n return '[object SVGPathSegLinetoRel]';\r\n };\r\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y;\r\n };\r\n window.SVGPathSegLinetoRel.prototype.clone = function () {\r\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, 'C', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._x1 = x1;\r\n this._y1 = y1;\r\n this._x2 = x2;\r\n this._y2 = y2;\r\n };\r\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoCubicAbs]';\r\n };\r\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._x1 +\r\n ' ' +\r\n this._y1 +\r\n ' ' +\r\n this._x2 +\r\n ' ' +\r\n this._y2 +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x1', {\r\n get: function () {\r\n return this._x1;\r\n },\r\n set: function (x1) {\r\n this._x1 = x1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y1', {\r\n get: function () {\r\n return this._y1;\r\n },\r\n set: function (y1) {\r\n this._y1 = y1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x2', {\r\n get: function () {\r\n return this._x2;\r\n },\r\n set: function (x2) {\r\n this._x2 = x2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y2', {\r\n get: function () {\r\n return this._y2;\r\n },\r\n set: function (y2) {\r\n this._y2 = y2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, 'c', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._x1 = x1;\r\n this._y1 = y1;\r\n this._x2 = x2;\r\n this._y2 = y2;\r\n };\r\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoCubicRel]';\r\n };\r\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._x1 +\r\n ' ' +\r\n this._y1 +\r\n ' ' +\r\n this._x2 +\r\n ' ' +\r\n this._y2 +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x1', {\r\n get: function () {\r\n return this._x1;\r\n },\r\n set: function (x1) {\r\n this._x1 = x1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y1', {\r\n get: function () {\r\n return this._y1;\r\n },\r\n set: function (y1) {\r\n this._y1 = y1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x2', {\r\n get: function () {\r\n return this._x2;\r\n },\r\n set: function (x2) {\r\n this._x2 = x2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y2', {\r\n get: function () {\r\n return this._y2;\r\n },\r\n set: function (y2) {\r\n this._y2 = y2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, 'Q', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._x1 = x1;\r\n this._y1 = y1;\r\n };\r\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoQuadraticAbs]';\r\n };\r\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._x1 +\r\n ' ' +\r\n this._y1 +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x1', {\r\n get: function () {\r\n return this._x1;\r\n },\r\n set: function (x1) {\r\n this._x1 = x1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y1', {\r\n get: function () {\r\n return this._y1;\r\n },\r\n set: function (y1) {\r\n this._y1 = y1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, 'q', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._x1 = x1;\r\n this._y1 = y1;\r\n };\r\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoQuadraticRel]';\r\n };\r\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._x1 +\r\n ' ' +\r\n this._y1 +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x1', {\r\n get: function () {\r\n return this._x1;\r\n },\r\n set: function (x1) {\r\n this._x1 = x1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y1', {\r\n get: function () {\r\n return this._y1;\r\n },\r\n set: function (y1) {\r\n this._y1 = y1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, 'A', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._r1 = r1;\r\n this._r2 = r2;\r\n this._angle = angle;\r\n this._largeArcFlag = largeArcFlag;\r\n this._sweepFlag = sweepFlag;\r\n };\r\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegArcAbs.prototype.toString = function () {\r\n return '[object SVGPathSegArcAbs]';\r\n };\r\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._r1 +\r\n ' ' +\r\n this._r2 +\r\n ' ' +\r\n this._angle +\r\n ' ' +\r\n (this._largeArcFlag ? '1' : '0') +\r\n ' ' +\r\n (this._sweepFlag ? '1' : '0') +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegArcAbs.prototype.clone = function () {\r\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\r\n };\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r1', {\r\n get: function () {\r\n return this._r1;\r\n },\r\n set: function (r1) {\r\n this._r1 = r1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r2', {\r\n get: function () {\r\n return this._r2;\r\n },\r\n set: function (r2) {\r\n this._r2 = r2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'angle', {\r\n get: function () {\r\n return this._angle;\r\n },\r\n set: function (angle) {\r\n this._angle = angle;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'largeArcFlag', {\r\n get: function () {\r\n return this._largeArcFlag;\r\n },\r\n set: function (largeArcFlag) {\r\n this._largeArcFlag = largeArcFlag;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'sweepFlag', {\r\n get: function () {\r\n return this._sweepFlag;\r\n },\r\n set: function (sweepFlag) {\r\n this._sweepFlag = sweepFlag;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, 'a', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._r1 = r1;\r\n this._r2 = r2;\r\n this._angle = angle;\r\n this._largeArcFlag = largeArcFlag;\r\n this._sweepFlag = sweepFlag;\r\n };\r\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegArcRel.prototype.toString = function () {\r\n return '[object SVGPathSegArcRel]';\r\n };\r\n window.SVGPathSegArcRel.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._r1 +\r\n ' ' +\r\n this._r2 +\r\n ' ' +\r\n this._angle +\r\n ' ' +\r\n (this._largeArcFlag ? '1' : '0') +\r\n ' ' +\r\n (this._sweepFlag ? '1' : '0') +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegArcRel.prototype.clone = function () {\r\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\r\n };\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r1', {\r\n get: function () {\r\n return this._r1;\r\n },\r\n set: function (r1) {\r\n this._r1 = r1;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r2', {\r\n get: function () {\r\n return this._r2;\r\n },\r\n set: function (r2) {\r\n this._r2 = r2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'angle', {\r\n get: function () {\r\n return this._angle;\r\n },\r\n set: function (angle) {\r\n this._angle = angle;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'largeArcFlag', {\r\n get: function () {\r\n return this._largeArcFlag;\r\n },\r\n set: function (largeArcFlag) {\r\n this._largeArcFlag = largeArcFlag;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegArcRel.prototype, 'sweepFlag', {\r\n get: function () {\r\n return this._sweepFlag;\r\n },\r\n set: function (sweepFlag) {\r\n this._sweepFlag = sweepFlag;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, 'H', owningPathSegList);\r\n this._x = x;\r\n };\r\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\r\n return '[object SVGPathSegLinetoHorizontalAbs]';\r\n };\r\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x;\r\n };\r\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\r\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\r\n };\r\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, 'h', owningPathSegList);\r\n this._x = x;\r\n };\r\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\r\n return '[object SVGPathSegLinetoHorizontalRel]';\r\n };\r\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x;\r\n };\r\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\r\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\r\n };\r\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, 'V', owningPathSegList);\r\n this._y = y;\r\n };\r\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\r\n return '[object SVGPathSegLinetoVerticalAbs]';\r\n };\r\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._y;\r\n };\r\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\r\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, 'v', owningPathSegList);\r\n this._y = y;\r\n };\r\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\r\n return '[object SVGPathSegLinetoVerticalRel]';\r\n };\r\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._y;\r\n };\r\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\r\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, 'S', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._x2 = x2;\r\n this._y2 = y2;\r\n };\r\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoCubicSmoothAbs]';\r\n };\r\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._x2 +\r\n ' ' +\r\n this._y2 +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x2', {\r\n get: function () {\r\n return this._x2;\r\n },\r\n set: function (x2) {\r\n this._x2 = x2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y2', {\r\n get: function () {\r\n return this._y2;\r\n },\r\n set: function (y2) {\r\n this._y2 = y2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, 's', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n this._x2 = x2;\r\n this._y2 = y2;\r\n };\r\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoCubicSmoothRel]';\r\n };\r\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\r\n return (this.pathSegTypeAsLetter +\r\n ' ' +\r\n this._x2 +\r\n ' ' +\r\n this._y2 +\r\n ' ' +\r\n this._x +\r\n ' ' +\r\n this._y);\r\n };\r\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x2', {\r\n get: function () {\r\n return this._x2;\r\n },\r\n set: function (x2) {\r\n this._x2 = x2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y2', {\r\n get: function () {\r\n return this._y2;\r\n },\r\n set: function (y2) {\r\n this._y2 = y2;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, 'T', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n };\r\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoQuadraticSmoothAbs]';\r\n };\r\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y;\r\n };\r\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\r\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, 't', owningPathSegList);\r\n this._x = x;\r\n this._y = y;\r\n };\r\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\r\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\r\n return '[object SVGPathSegCurvetoQuadraticSmoothRel]';\r\n };\r\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\r\n return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y;\r\n };\r\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\r\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\r\n };\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'x', {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (x) {\r\n this._x = x;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'y', {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (y) {\r\n this._y = y;\r\n this._segmentChanged();\r\n },\r\n enumerable: true\r\n });\r\n // Add createSVGPathSeg* functions to window.SVGPathElement.\r\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\r\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\r\n return new window.SVGPathSegClosePath(undefined);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\r\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\r\n return new window.SVGPathSegMovetoRel(undefined, x, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\r\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\r\n return new window.SVGPathSegLinetoRel(undefined, x, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\r\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\r\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\r\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\r\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\r\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\r\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\r\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\r\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\r\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\r\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\r\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\r\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\r\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\r\n };\r\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\r\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\r\n };\r\n if (!('getPathSegAtLength' in window.SVGPathElement.prototype)) {\r\n // Add getPathSegAtLength to SVGPathElement.\r\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\r\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\r\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\r\n if (distance === undefined || !isFinite(distance))\r\n throw 'Invalid arguments.';\r\n var measurementElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n measurementElement.setAttribute('d', this.getAttribute('d'));\r\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;\r\n // If the path is empty, return 0.\r\n if (lastPathSegment <= 0)\r\n return 0;\r\n do {\r\n measurementElement.pathSegList.removeItem(lastPathSegment);\r\n if (distance > measurementElement.getTotalLength())\r\n break;\r\n lastPathSegment--;\r\n } while (lastPathSegment > 0);\r\n return lastPathSegment;\r\n };\r\n }\r\n }\r\n if (!('SVGPathSegList' in window)) {\r\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\r\n window.SVGPathSegList = function (pathElement) {\r\n this._pathElement = pathElement;\r\n this._list = this._parsePath(this._pathElement.getAttribute('d'));\r\n // Use a MutationObserver to catch changes to the path's \"d\" attribute.\r\n this._mutationObserverConfig = {\r\n attributes: true,\r\n attributeFilter: ['d']\r\n };\r\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\r\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\r\n };\r\n window.SVGPathSegList.prototype.classname = 'SVGPathSegList';\r\n Object.defineProperty(window.SVGPathSegList.prototype, 'numberOfItems', {\r\n get: function () {\r\n this._checkPathSynchronizedToList();\r\n return this._list.length;\r\n },\r\n enumerable: true\r\n });\r\n // Add the pathSegList accessors to window.SVGPathElement.\r\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\r\n Object.defineProperty(window.SVGPathElement.prototype, 'pathSegList', {\r\n get: function () {\r\n if (!this._pathSegList)\r\n this._pathSegList = new window.SVGPathSegList(this);\r\n return this._pathSegList;\r\n },\r\n enumerable: true\r\n });\r\n // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\r\n Object.defineProperty(window.SVGPathElement.prototype, 'normalizedPathSegList', {\r\n get: function () {\r\n return this.pathSegList;\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathElement.prototype, 'animatedPathSegList', {\r\n get: function () {\r\n return this.pathSegList;\r\n },\r\n enumerable: true\r\n });\r\n Object.defineProperty(window.SVGPathElement.prototype, 'animatedNormalizedPathSegList', {\r\n get: function () {\r\n return this.pathSegList;\r\n },\r\n enumerable: true\r\n });\r\n // Process any pending mutations to the path element and update the list as needed.\r\n // This should be the first call of all public functions and is needed because\r\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\r\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\r\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\r\n };\r\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\r\n if (!this._pathElement)\r\n return;\r\n var hasPathMutations = false;\r\n mutationRecords.forEach(function (record) {\r\n if (record.attributeName == 'd')\r\n hasPathMutations = true;\r\n });\r\n if (hasPathMutations)\r\n this._list = this._parsePath(this._pathElement.getAttribute('d'));\r\n };\r\n // Serialize the list and update the path's 'd' attribute.\r\n window.SVGPathSegList.prototype._writeListToPath = function () {\r\n this._pathElementMutationObserver.disconnect();\r\n this._pathElement.setAttribute('d', window.SVGPathSegList._pathSegArrayAsString(this._list));\r\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\r\n };\r\n // When a path segment changes the list needs to be synchronized back to the path element.\r\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\r\n this._writeListToPath();\r\n };\r\n window.SVGPathSegList.prototype.clear = function () {\r\n this._checkPathSynchronizedToList();\r\n this._list.forEach(function (pathSeg) {\r\n pathSeg._owningPathSegList = null;\r\n });\r\n this._list = [];\r\n this._writeListToPath();\r\n };\r\n window.SVGPathSegList.prototype.initialize = function (newItem) {\r\n this._checkPathSynchronizedToList();\r\n this._list = [newItem];\r\n newItem._owningPathSegList = this;\r\n this._writeListToPath();\r\n return newItem;\r\n };\r\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\r\n if (isNaN(index) || index < 0 || index >= this.numberOfItems)\r\n throw 'INDEX_SIZE_ERR';\r\n };\r\n window.SVGPathSegList.prototype.getItem = function (index) {\r\n this._checkPathSynchronizedToList();\r\n this._checkValidIndex(index);\r\n return this._list[index];\r\n };\r\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\r\n this._checkPathSynchronizedToList();\r\n // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\r\n if (index > this.numberOfItems)\r\n index = this.numberOfItems;\r\n if (newItem._owningPathSegList) {\r\n // SVG2 spec says to make a copy.\r\n newItem = newItem.clone();\r\n }\r\n this._list.splice(index, 0, newItem);\r\n newItem._owningPathSegList = this;\r\n this._writeListToPath();\r\n return newItem;\r\n };\r\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\r\n this._checkPathSynchronizedToList();\r\n if (newItem._owningPathSegList) {\r\n // SVG2 spec says to make a copy.\r\n newItem = newItem.clone();\r\n }\r\n this._checkValidIndex(index);\r\n this._list[index] = newItem;\r\n newItem._owningPathSegList = this;\r\n this._writeListToPath();\r\n return newItem;\r\n };\r\n window.SVGPathSegList.prototype.removeItem = function (index) {\r\n this._checkPathSynchronizedToList();\r\n this._checkValidIndex(index);\r\n var item = this._list[index];\r\n this._list.splice(index, 1);\r\n this._writeListToPath();\r\n return item;\r\n };\r\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\r\n this._checkPathSynchronizedToList();\r\n if (newItem._owningPathSegList) {\r\n // SVG2 spec says to make a copy.\r\n newItem = newItem.clone();\r\n }\r\n this._list.push(newItem);\r\n newItem._owningPathSegList = this;\r\n // TODO: Optimize this to just append to the existing attribute.\r\n this._writeListToPath();\r\n return newItem;\r\n };\r\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\r\n var string = '';\r\n var first = true;\r\n pathSegArray.forEach(function (pathSeg) {\r\n if (first) {\r\n first = false;\r\n string += pathSeg._asPathString();\r\n }\r\n else {\r\n string += ' ' + pathSeg._asPathString();\r\n }\r\n });\r\n return string;\r\n };\r\n // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\r\n window.SVGPathSegList.prototype._parsePath = function (string) {\r\n if (!string || string.length == 0)\r\n return [];\r\n var owningPathSegList = this;\r\n var Builder = function () {\r\n this.pathSegList = [];\r\n };\r\n Builder.prototype.appendSegment = function (pathSeg) {\r\n this.pathSegList.push(pathSeg);\r\n };\r\n var Source = function (string) {\r\n this._string = string;\r\n this._currentIndex = 0;\r\n this._endIndex = this._string.length;\r\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\r\n this._skipOptionalSpaces();\r\n };\r\n Source.prototype._isCurrentSpace = function () {\r\n var character = this._string[this._currentIndex];\r\n return (character <= ' ' &&\r\n (character == ' ' ||\r\n character == '\\n' ||\r\n character == '\\t' ||\r\n character == '\\r' ||\r\n character == '\\f'));\r\n };\r\n Source.prototype._skipOptionalSpaces = function () {\r\n while (this._currentIndex < this._endIndex && this._isCurrentSpace())\r\n this._currentIndex++;\r\n return this._currentIndex < this._endIndex;\r\n };\r\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\r\n if (this._currentIndex < this._endIndex &&\r\n !this._isCurrentSpace() &&\r\n this._string.charAt(this._currentIndex) != ',')\r\n return false;\r\n if (this._skipOptionalSpaces()) {\r\n if (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) == ',') {\r\n this._currentIndex++;\r\n this._skipOptionalSpaces();\r\n }\r\n }\r\n return this._currentIndex < this._endIndex;\r\n };\r\n Source.prototype.hasMoreData = function () {\r\n return this._currentIndex < this._endIndex;\r\n };\r\n Source.prototype.peekSegmentType = function () {\r\n var lookahead = this._string[this._currentIndex];\r\n return this._pathSegTypeFromChar(lookahead);\r\n };\r\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\r\n switch (lookahead) {\r\n case 'Z':\r\n case 'z':\r\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\r\n case 'M':\r\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\r\n case 'm':\r\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\r\n case 'L':\r\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\r\n case 'l':\r\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\r\n case 'C':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\r\n case 'c':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\r\n case 'Q':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\r\n case 'q':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\r\n case 'A':\r\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\r\n case 'a':\r\n return window.SVGPathSeg.PATHSEG_ARC_REL;\r\n case 'H':\r\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\r\n case 'h':\r\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\r\n case 'V':\r\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\r\n case 'v':\r\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\r\n case 'S':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r\n case 's':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r\n case 'T':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r\n case 't':\r\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r\n default:\r\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\r\n }\r\n };\r\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\r\n // Check for remaining coordinates in the current command.\r\n if ((lookahead == '+' ||\r\n lookahead == '-' ||\r\n lookahead == '.' ||\r\n (lookahead >= '0' && lookahead <= '9')) &&\r\n previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\r\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS)\r\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\r\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL)\r\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\r\n return previousCommand;\r\n }\r\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\r\n };\r\n Source.prototype.initialCommandIsMoveTo = function () {\r\n // If the path is empty it is still valid, so return true.\r\n if (!this.hasMoreData())\r\n return true;\r\n var command = this.peekSegmentType();\r\n // Path must start with moveTo.\r\n return (command == window.SVGPathSeg.PATHSEG_MOVETO_ABS ||\r\n command == window.SVGPathSeg.PATHSEG_MOVETO_REL);\r\n };\r\n // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\r\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\r\n Source.prototype._parseNumber = function () {\r\n var exponent = 0;\r\n var integer = 0;\r\n var frac = 1;\r\n var decimal = 0;\r\n var sign = 1;\r\n var expsign = 1;\r\n var startIndex = this._currentIndex;\r\n this._skipOptionalSpaces();\r\n // Read the sign.\r\n if (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) == '+')\r\n this._currentIndex++;\r\n else if (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) == '-') {\r\n this._currentIndex++;\r\n sign = -1;\r\n }\r\n if (this._currentIndex == this._endIndex ||\r\n ((this._string.charAt(this._currentIndex) < '0' ||\r\n this._string.charAt(this._currentIndex) > '9') &&\r\n this._string.charAt(this._currentIndex) != '.'))\r\n // The first character of a number must be one of [0-9+-.].\r\n return undefined;\r\n // Read the integer part, build right-to-left.\r\n var startIntPartIndex = this._currentIndex;\r\n while (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) >= '0' &&\r\n this._string.charAt(this._currentIndex) <= '9')\r\n this._currentIndex++; // Advance to first non-digit.\r\n if (this._currentIndex != startIntPartIndex) {\r\n var scanIntPartIndex = this._currentIndex - 1;\r\n var multiplier = 1;\r\n while (scanIntPartIndex >= startIntPartIndex) {\r\n integer +=\r\n multiplier * (this._string.charAt(scanIntPartIndex--) - '0');\r\n multiplier *= 10;\r\n }\r\n }\r\n // Read the decimals.\r\n if (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) == '.') {\r\n this._currentIndex++;\r\n // There must be a least one digit following the .\r\n if (this._currentIndex >= this._endIndex ||\r\n this._string.charAt(this._currentIndex) < '0' ||\r\n this._string.charAt(this._currentIndex) > '9')\r\n return undefined;\r\n while (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) >= '0' &&\r\n this._string.charAt(this._currentIndex) <= '9') {\r\n frac *= 10;\r\n decimal += (this._string.charAt(this._currentIndex) - '0') / frac;\r\n this._currentIndex += 1;\r\n }\r\n }\r\n // Read the exponent part.\r\n if (this._currentIndex != startIndex &&\r\n this._currentIndex + 1 < this._endIndex &&\r\n (this._string.charAt(this._currentIndex) == 'e' ||\r\n this._string.charAt(this._currentIndex) == 'E') &&\r\n this._string.charAt(this._currentIndex + 1) != 'x' &&\r\n this._string.charAt(this._currentIndex + 1) != 'm') {\r\n this._currentIndex++;\r\n // Read the sign of the exponent.\r\n if (this._string.charAt(this._currentIndex) == '+') {\r\n this._currentIndex++;\r\n }\r\n else if (this._string.charAt(this._currentIndex) == '-') {\r\n this._currentIndex++;\r\n expsign = -1;\r\n }\r\n // There must be an exponent.\r\n if (this._currentIndex >= this._endIndex ||\r\n this._string.charAt(this._currentIndex) < '0' ||\r\n this._string.charAt(this._currentIndex) > '9')\r\n return undefined;\r\n while (this._currentIndex < this._endIndex &&\r\n this._string.charAt(this._currentIndex) >= '0' &&\r\n this._string.charAt(this._currentIndex) <= '9') {\r\n exponent *= 10;\r\n exponent += this._string.charAt(this._currentIndex) - '0';\r\n this._currentIndex++;\r\n }\r\n }\r\n var number = integer + decimal;\r\n number *= sign;\r\n if (exponent)\r\n number *= Math.pow(10, expsign * exponent);\r\n if (startIndex == this._currentIndex)\r\n return undefined;\r\n this._skipOptionalSpacesOrDelimiter();\r\n return number;\r\n };\r\n Source.prototype._parseArcFlag = function () {\r\n if (this._currentIndex >= this._endIndex)\r\n return undefined;\r\n var flag = false;\r\n var flagChar = this._string.charAt(this._currentIndex++);\r\n if (flagChar == '0')\r\n flag = false;\r\n else if (flagChar == '1')\r\n flag = true;\r\n else\r\n return undefined;\r\n this._skipOptionalSpacesOrDelimiter();\r\n return flag;\r\n };\r\n Source.prototype.parseSegment = function () {\r\n var lookahead = this._string[this._currentIndex];\r\n var command = this._pathSegTypeFromChar(lookahead);\r\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\r\n // Possibly an implicit command. Not allowed if this is the first command.\r\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN)\r\n return null;\r\n command = this._nextCommandHelper(lookahead, this._previousCommand);\r\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN)\r\n return null;\r\n }\r\n else {\r\n this._currentIndex++;\r\n }\r\n this._previousCommand = command;\r\n switch (command) {\r\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\r\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\r\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\r\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\r\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\r\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\r\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\r\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\r\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\r\n this._skipOptionalSpaces();\r\n return new window.SVGPathSegClosePath(owningPathSegList);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\r\n var points = {\r\n x1: this._parseNumber(),\r\n y1: this._parseNumber(),\r\n x2: this._parseNumber(),\r\n y2: this._parseNumber(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\r\n var points = {\r\n x1: this._parseNumber(),\r\n y1: this._parseNumber(),\r\n x2: this._parseNumber(),\r\n y2: this._parseNumber(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\r\n var points = {\r\n x2: this._parseNumber(),\r\n y2: this._parseNumber(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\r\n var points = {\r\n x2: this._parseNumber(),\r\n y2: this._parseNumber(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\r\n var points = {\r\n x1: this._parseNumber(),\r\n y1: this._parseNumber(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\r\n var points = {\r\n x1: this._parseNumber(),\r\n y1: this._parseNumber(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\r\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\r\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\r\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\r\n case window.SVGPathSeg.PATHSEG_ARC_REL:\r\n var points = {\r\n x1: this._parseNumber(),\r\n y1: this._parseNumber(),\r\n arcAngle: this._parseNumber(),\r\n arcLarge: this._parseArcFlag(),\r\n arcSweep: this._parseArcFlag(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\r\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\r\n var points = {\r\n x1: this._parseNumber(),\r\n y1: this._parseNumber(),\r\n arcAngle: this._parseNumber(),\r\n arcLarge: this._parseArcFlag(),\r\n arcSweep: this._parseArcFlag(),\r\n x: this._parseNumber(),\r\n y: this._parseNumber()\r\n };\r\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\r\n default:\r\n throw 'Unknown path seg type.';\r\n }\r\n };\r\n var builder = new Builder();\r\n var source = new Source(string);\r\n if (!source.initialCommandIsMoveTo())\r\n return [];\r\n while (source.hasMoreData()) {\r\n var pathSeg = source.parseSegment();\r\n if (!pathSeg)\r\n return [];\r\n builder.appendSegment(pathSeg);\r\n }\r\n return builder.pathSegList;\r\n };\r\n }\r\n })();\r\n // String.padEnd polyfill for IE11\r\n //\r\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\r\n if (!String.prototype.padEnd) {\r\n String.prototype.padEnd = function padEnd(targetLength, padString) {\r\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\r\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\r\n if (this.length > targetLength) {\r\n return String(this);\r\n }\r\n else {\r\n targetLength = targetLength - this.length;\r\n if (targetLength > padString.length) {\r\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\r\n }\r\n return String(this) + padString.slice(0, targetLength);\r\n }\r\n };\r\n }\r\n // Object.assign polyfill for IE11\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\r\n if (typeof Object.assign !== 'function') {\r\n // Must be writable: true, enumerable: false, configurable: true\r\n Object.defineProperty(Object, 'assign', {\r\n value: function assign(target, varArgs) {\r\n if (target === null || target === undefined) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n var to = Object(target);\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n if (nextSource !== null && nextSource !== undefined) {\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true\r\n });\r\n }\r\n /* jshint ignore:end */\n\n Chart.prototype.axis = function () { };\r\n Chart.prototype.axis.labels = function (labels) {\r\n var $$ = this.internal;\r\n if (arguments.length) {\r\n Object.keys(labels).forEach(function (axisId) {\r\n $$.axis.setLabelText(axisId, labels[axisId]);\r\n });\r\n $$.axis.updateLabels();\r\n }\r\n // TODO: return some values?\r\n };\r\n Chart.prototype.axis.max = function (max) {\r\n var $$ = this.internal, config = $$.config;\r\n if (arguments.length) {\r\n if (typeof max === 'object') {\r\n if (isValue(max.x)) {\r\n config.axis_x_max = max.x;\r\n }\r\n if (isValue(max.y)) {\r\n config.axis_y_max = max.y;\r\n }\r\n if (isValue(max.y2)) {\r\n config.axis_y2_max = max.y2;\r\n }\r\n }\r\n else {\r\n config.axis_y_max = config.axis_y2_max = max;\r\n }\r\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\r\n }\r\n else {\r\n return {\r\n x: config.axis_x_max,\r\n y: config.axis_y_max,\r\n y2: config.axis_y2_max\r\n };\r\n }\r\n };\r\n Chart.prototype.axis.min = function (min) {\r\n var $$ = this.internal, config = $$.config;\r\n if (arguments.length) {\r\n if (typeof min === 'object') {\r\n if (isValue(min.x)) {\r\n config.axis_x_min = min.x;\r\n }\r\n if (isValue(min.y)) {\r\n config.axis_y_min = min.y;\r\n }\r\n if (isValue(min.y2)) {\r\n config.axis_y2_min = min.y2;\r\n }\r\n }\r\n else {\r\n config.axis_y_min = config.axis_y2_min = min;\r\n }\r\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\r\n }\r\n else {\r\n return {\r\n x: config.axis_x_min,\r\n y: config.axis_y_min,\r\n y2: config.axis_y2_min\r\n };\r\n }\r\n };\r\n Chart.prototype.axis.range = function (range) {\r\n if (arguments.length) {\r\n if (isDefined(range.max)) {\r\n this.axis.max(range.max);\r\n }\r\n if (isDefined(range.min)) {\r\n this.axis.min(range.min);\r\n }\r\n }\r\n else {\r\n return {\r\n max: this.axis.max(),\r\n min: this.axis.min()\r\n };\r\n }\r\n };\r\n Chart.prototype.axis.types = function (types) {\r\n var $$ = this.internal;\r\n if (types === undefined) {\r\n return {\r\n y: $$.config.axis_y_type,\r\n y2: $$.config.axis_y2_type\r\n };\r\n }\r\n else {\r\n if (isDefined(types.y)) {\r\n $$.config.axis_y_type = types.y;\r\n }\r\n if (isDefined(types.y2)) {\r\n $$.config.axis_y2_type = types.y2;\r\n }\r\n $$.updateScales();\r\n $$.redraw();\r\n }\r\n };\n\n Chart.prototype.category = function (i, category) {\r\n var $$ = this.internal, config = $$.config;\r\n if (arguments.length > 1) {\r\n config.axis_x_categories[i] = category;\r\n $$.redraw();\r\n }\r\n return config.axis_x_categories[i];\r\n };\r\n Chart.prototype.categories = function (categories) {\r\n var $$ = this.internal, config = $$.config;\r\n if (!arguments.length) {\r\n return config.axis_x_categories;\r\n }\r\n config.axis_x_categories = categories;\r\n $$.redraw();\r\n return config.axis_x_categories;\r\n };\n\n Chart.prototype.resize = function (size) {\r\n var $$ = this.internal, config = $$.config;\r\n config.size_width = size ? size.width : null;\r\n config.size_height = size ? size.height : null;\r\n this.flush();\r\n };\r\n Chart.prototype.flush = function () {\r\n var $$ = this.internal;\r\n $$.updateAndRedraw({\r\n withLegend: true,\r\n withTransition: false,\r\n withTransitionForTransform: false\r\n });\r\n };\r\n Chart.prototype.destroy = function () {\r\n var $$ = this.internal;\r\n window.clearInterval($$.intervalForObserveInserted);\r\n if ($$.resizeTimeout !== undefined) {\r\n window.clearTimeout($$.resizeTimeout);\r\n }\r\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\r\n // Removes the inner resize functions\r\n $$.resizeFunction.remove();\r\n // Unbinds from the window focus event\r\n $$.unbindWindowFocus();\r\n $$.selectChart.classed('c3', false).html('');\r\n // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\r\n Object.keys($$).forEach(function (key) {\r\n $$[key] = null;\r\n });\r\n return null;\r\n };\n\n // TODO: fix\r\n Chart.prototype.color = function (id) {\r\n var $$ = this.internal;\r\n return $$.color(id); // more patterns\r\n };\n\n Chart.prototype.data = function (targetIds) {\r\n var targets = this.internal.data.targets;\r\n return typeof targetIds === 'undefined'\r\n ? targets\r\n : targets.filter(function (t) {\r\n return [].concat(targetIds).indexOf(t.id) >= 0;\r\n });\r\n };\r\n Chart.prototype.data.shown = function (targetIds) {\r\n return this.internal.filterTargetsToShow(this.data(targetIds));\r\n };\r\n /**\r\n * Get values of the data loaded in the chart.\r\n *\r\n * @param {String|Array} targetId This API returns the value of specified target.\r\n * @param flat\r\n * @return {Array} Data values\r\n */\r\n Chart.prototype.data.values = function (targetId, flat) {\r\n if (flat === void 0) { flat = true; }\r\n var values = null;\r\n if (targetId) {\r\n var targets = this.data(targetId);\r\n if (targets && isArray(targets)) {\r\n values = targets.reduce(function (ret, v) {\r\n var dataValue = v.values.map(function (d) { return d.value; });\r\n if (flat) {\r\n ret = ret.concat(dataValue);\r\n }\r\n else {\r\n ret.push(dataValue);\r\n }\r\n return ret;\r\n }, []);\r\n }\r\n }\r\n return values;\r\n };\r\n Chart.prototype.data.names = function (names) {\r\n this.internal.clearLegendItemTextBoxCache();\r\n return this.internal.updateDataAttributes('names', names);\r\n };\r\n Chart.prototype.data.colors = function (colors) {\r\n return this.internal.updateDataAttributes('colors', colors);\r\n };\r\n Chart.prototype.data.axes = function (axes) {\r\n return this.internal.updateDataAttributes('axes', axes);\r\n };\r\n Chart.prototype.data.stackNormalized = function (normalized) {\r\n if (normalized === undefined) {\r\n return this.internal.isStackNormalized();\r\n }\r\n this.internal.config.data_stack_normalize = !!normalized;\r\n this.internal.redraw();\r\n };\n\n Chart.prototype.donut = function () { };\r\n Chart.prototype.donut.padAngle = function (padAngle) {\r\n if (padAngle === undefined) {\r\n return this.internal.config.donut_padAngle;\r\n }\r\n this.internal.config.donut_padAngle = padAngle;\r\n this.flush();\r\n };\n\n Chart.prototype.flow = function (args) {\r\n var $$ = this.internal, targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(), dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to;\r\n if (args.json) {\r\n data = $$.convertJsonToData(args.json, args.keys);\r\n }\r\n else if (args.rows) {\r\n data = $$.convertRowsToData(args.rows);\r\n }\r\n else if (args.columns) {\r\n data = $$.convertColumnsToData(args.columns);\r\n }\r\n else {\r\n return;\r\n }\r\n targets = $$.convertDataToTargets(data, true);\r\n // Update/Add data\r\n $$.data.targets.forEach(function (t) {\r\n var found = false, i, j;\r\n for (i = 0; i < targets.length; i++) {\r\n if (t.id === targets[i].id) {\r\n found = true;\r\n if (t.values[t.values.length - 1]) {\r\n tail = t.values[t.values.length - 1].index + 1;\r\n }\r\n length = targets[i].values.length;\r\n for (j = 0; j < length; j++) {\r\n targets[i].values[j].index = tail + j;\r\n if (!$$.isTimeSeries()) {\r\n targets[i].values[j].x = tail + j;\r\n }\r\n }\r\n t.values = t.values.concat(targets[i].values);\r\n targets.splice(i, 1);\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n notfoundIds.push(t.id);\r\n }\r\n });\r\n // Append null for not found targets\r\n $$.data.targets.forEach(function (t) {\r\n var i, j;\r\n for (i = 0; i < notfoundIds.length; i++) {\r\n if (t.id === notfoundIds[i]) {\r\n tail = t.values[t.values.length - 1].index + 1;\r\n for (j = 0; j < length; j++) {\r\n t.values.push({\r\n id: t.id,\r\n index: tail + j,\r\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\r\n value: null\r\n });\r\n }\r\n }\r\n }\r\n });\r\n // Generate null values for new target\r\n if ($$.data.targets.length) {\r\n targets.forEach(function (t) {\r\n var i, missing = [];\r\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\r\n missing.push({\r\n id: t.id,\r\n index: i,\r\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\r\n value: null\r\n });\r\n }\r\n t.values.forEach(function (v) {\r\n v.index += tail;\r\n if (!$$.isTimeSeries()) {\r\n v.x += tail;\r\n }\r\n });\r\n t.values = missing.concat(t.values);\r\n });\r\n }\r\n $$.data.targets = $$.data.targets.concat(targets); // add remained\r\n // check data count because behavior needs to change when it's only one\r\n dataCount = $$.getMaxDataCount();\r\n baseTarget = $$.data.targets[0];\r\n baseValue = baseTarget.values[0];\r\n // Update length to flow if needed\r\n if (isDefined(args.to)) {\r\n length = 0;\r\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\r\n baseTarget.values.forEach(function (v) {\r\n if (v.x < to) {\r\n length++;\r\n }\r\n });\r\n }\r\n else if (isDefined(args.length)) {\r\n length = args.length;\r\n }\r\n // If only one data, update the domain to flow from left edge of the chart\r\n if (!orgDataCount) {\r\n if ($$.isTimeSeries()) {\r\n if (baseTarget.values.length > 1) {\r\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\r\n }\r\n else {\r\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\r\n }\r\n }\r\n else {\r\n diff = 1;\r\n }\r\n domain = [baseValue.x - diff, baseValue.x];\r\n $$.updateXDomain(null, true, true, false, domain);\r\n }\r\n else if (orgDataCount === 1) {\r\n if ($$.isTimeSeries()) {\r\n diff =\r\n (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\r\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\r\n $$.updateXDomain(null, true, true, false, domain);\r\n }\r\n }\r\n // Set targets\r\n $$.updateTargets($$.data.targets);\r\n // Redraw with new targets\r\n $$.redraw({\r\n flow: {\r\n index: baseValue.index,\r\n length: length,\r\n duration: isValue(args.duration)\r\n ? args.duration\r\n : $$.config.transition_duration,\r\n done: args.done,\r\n orgDataCount: orgDataCount\r\n },\r\n withLegend: true,\r\n withTransition: orgDataCount > 1,\r\n withTrimXDomain: false,\r\n withUpdateXAxis: true\r\n });\r\n };\r\n ChartInternal.prototype.generateFlow = function (args) {\r\n var $$ = this, config = $$.config, d3 = $$.d3;\r\n return function () {\r\n var targets = args.targets, flow = args.flow, drawBar = args.drawBar, drawLine = args.drawLine, drawArea = args.drawArea, cx = args.cx, cy = args.cy, xv = args.xv, xForText = args.xForText, yForText = args.yForText, duration = args.duration;\r\n var translateX, scaleX = 1, transform, flowIndex = flow.index, flowLength = flow.length, flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex), flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength), orgDomain = $$.x.domain(), domain, durationForFlow = flow.duration || duration, done = flow.done || function () { }, wait = $$.generateWait();\r\n var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle;\r\n // set flag\r\n $$.flowing = true;\r\n // remove head data after rendered\r\n $$.data.targets.forEach(function (d) {\r\n d.values.splice(0, flowLength);\r\n });\r\n // update x domain to generate axis elements for flow\r\n domain = $$.updateXDomain(targets, true, true);\r\n // update elements related to x scale\r\n if ($$.updateXGrid) {\r\n $$.updateXGrid(true);\r\n }\r\n xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\r\n xgridLines = $$.xgridLines || d3.selectAll([]);\r\n mainRegion = $$.mainRegion || d3.selectAll([]);\r\n mainText = $$.mainText || d3.selectAll([]);\r\n mainBar = $$.mainBar || d3.selectAll([]);\r\n mainLine = $$.mainLine || d3.selectAll([]);\r\n mainArea = $$.mainArea || d3.selectAll([]);\r\n mainCircle = $$.mainCircle || d3.selectAll([]);\r\n // generate transform to flow\r\n if (!flow.orgDataCount) {\r\n // if empty\r\n if ($$.data.targets[0].values.length !== 1) {\r\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\r\n }\r\n else {\r\n if ($$.isTimeSeries()) {\r\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\r\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\r\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\r\n }\r\n else {\r\n translateX = diffDomain(domain) / 2;\r\n }\r\n }\r\n }\r\n else if (flow.orgDataCount === 1 ||\r\n (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\r\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\r\n }\r\n else {\r\n if ($$.isTimeSeries()) {\r\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\r\n }\r\n else {\r\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\r\n }\r\n }\r\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\r\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\r\n $$.hideXGridFocus();\r\n var flowTransition = d3\r\n .transition()\r\n .ease(d3.easeLinear)\r\n .duration(durationForFlow);\r\n wait.add($$.xAxis($$.axes.x, flowTransition));\r\n wait.add(mainBar.transition(flowTransition).attr('transform', transform));\r\n wait.add(mainLine.transition(flowTransition).attr('transform', transform));\r\n wait.add(mainArea.transition(flowTransition).attr('transform', transform));\r\n wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\r\n wait.add(mainText.transition(flowTransition).attr('transform', transform));\r\n wait.add(mainRegion\r\n .filter($$.isRegionOnX)\r\n .transition(flowTransition)\r\n .attr('transform', transform));\r\n wait.add(xgrid.transition(flowTransition).attr('transform', transform));\r\n wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\r\n wait(function () {\r\n var i, shapes = [], texts = [];\r\n // remove flowed elements\r\n if (flowLength) {\r\n for (i = 0; i < flowLength; i++) {\r\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\r\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\r\n }\r\n $$.svg\r\n .selectAll('.' + CLASS.shapes)\r\n .selectAll(shapes)\r\n .remove();\r\n $$.svg\r\n .selectAll('.' + CLASS.texts)\r\n .selectAll(texts)\r\n .remove();\r\n $$.svg.select('.' + CLASS.xgrid).remove();\r\n }\r\n // draw again for removing flowed elements and reverting attr\r\n xgrid\r\n .attr('transform', null)\r\n .attr('x1', $$.xgridAttr.x1)\r\n .attr('x2', $$.xgridAttr.x2)\r\n .attr('y1', $$.xgridAttr.y1)\r\n .attr('y2', $$.xgridAttr.y2)\r\n .style('opacity', $$.xgridAttr.opacity);\r\n xgridLines.attr('transform', null);\r\n xgridLines\r\n .select('line')\r\n .attr('x1', config.axis_rotated ? 0 : xv)\r\n .attr('x2', config.axis_rotated ? $$.width : xv);\r\n xgridLines\r\n .select('text')\r\n .attr('x', config.axis_rotated ? $$.width : 0)\r\n .attr('y', xv);\r\n mainBar.attr('transform', null).attr('d', drawBar);\r\n mainLine.attr('transform', null).attr('d', drawLine);\r\n mainArea.attr('transform', null).attr('d', drawArea);\r\n mainCircle\r\n .attr('transform', null)\r\n .attr('cx', cx)\r\n .attr('cy', cy);\r\n mainText\r\n .attr('transform', null)\r\n .attr('x', xForText)\r\n .attr('y', yForText)\r\n .style('fill-opacity', $$.opacityForText.bind($$));\r\n mainRegion.attr('transform', null);\r\n mainRegion\r\n .filter($$.isRegionOnX)\r\n .attr('x', $$.regionX.bind($$))\r\n .attr('width', $$.regionWidth.bind($$));\r\n // callback for end of flow\r\n done();\r\n $$.flowing = false;\r\n });\r\n };\r\n };\n\n Chart.prototype.focus = function (targetIds) {\r\n var $$ = this.internal, candidates;\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n (candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$)))),\r\n this.revert();\r\n this.defocus();\r\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\r\n if ($$.hasArcType()) {\r\n $$.expandArc(targetIds);\r\n }\r\n $$.toggleFocusLegend(targetIds, true);\r\n $$.focusedTargetIds = targetIds;\r\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\r\n return targetIds.indexOf(id) < 0;\r\n });\r\n };\r\n Chart.prototype.defocus = function (targetIds) {\r\n var $$ = this.internal, candidates;\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n (candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$)))),\r\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\r\n if ($$.hasArcType()) {\r\n $$.unexpandArc(targetIds);\r\n }\r\n $$.toggleFocusLegend(targetIds, false);\r\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\r\n return targetIds.indexOf(id) < 0;\r\n });\r\n $$.defocusedTargetIds = targetIds;\r\n };\r\n Chart.prototype.revert = function (targetIds) {\r\n var $$ = this.internal, candidates;\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\r\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\r\n if ($$.hasArcType()) {\r\n $$.unexpandArc(targetIds);\r\n }\r\n if ($$.config.legend_show) {\r\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\r\n $$.legend\r\n .selectAll($$.selectorLegends(targetIds))\r\n .filter(function () {\r\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\r\n })\r\n .classed(CLASS.legendItemFocused, false);\r\n }\r\n $$.focusedTargetIds = [];\r\n $$.defocusedTargetIds = [];\r\n };\n\n Chart.prototype.xgrids = function (grids) {\r\n var $$ = this.internal, config = $$.config;\r\n if (!grids) {\r\n return config.grid_x_lines;\r\n }\r\n config.grid_x_lines = grids;\r\n $$.redrawWithoutRescale();\r\n return config.grid_x_lines;\r\n };\r\n Chart.prototype.xgrids.add = function (grids) {\r\n var $$ = this.internal;\r\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\r\n };\r\n Chart.prototype.xgrids.remove = function (params) {\r\n // TODO: multiple\r\n var $$ = this.internal;\r\n $$.removeGridLines(params, true);\r\n };\r\n Chart.prototype.ygrids = function (grids) {\r\n var $$ = this.internal, config = $$.config;\r\n if (!grids) {\r\n return config.grid_y_lines;\r\n }\r\n config.grid_y_lines = grids;\r\n $$.redrawWithoutRescale();\r\n return config.grid_y_lines;\r\n };\r\n Chart.prototype.ygrids.add = function (grids) {\r\n var $$ = this.internal;\r\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\r\n };\r\n Chart.prototype.ygrids.remove = function (params) {\r\n // TODO: multiple\r\n var $$ = this.internal;\r\n $$.removeGridLines(params, false);\r\n };\n\n Chart.prototype.groups = function (groups) {\r\n var $$ = this.internal, config = $$.config;\r\n if (isUndefined(groups)) {\r\n return config.data_groups;\r\n }\r\n config.data_groups = groups;\r\n $$.redraw();\r\n return config.data_groups;\r\n };\n\n Chart.prototype.legend = function () { };\r\n Chart.prototype.legend.show = function (targetIds) {\r\n var $$ = this.internal;\r\n $$.showLegend($$.mapToTargetIds(targetIds));\r\n $$.updateAndRedraw({ withLegend: true });\r\n };\r\n Chart.prototype.legend.hide = function (targetIds) {\r\n var $$ = this.internal;\r\n $$.hideLegend($$.mapToTargetIds(targetIds));\r\n $$.updateAndRedraw({ withLegend: false });\r\n };\n\n Chart.prototype.load = function (args) {\r\n var $$ = this.internal, config = $$.config;\r\n // update xs if specified\r\n if (args.xs) {\r\n $$.addXs(args.xs);\r\n }\r\n // update names if exists\r\n if ('names' in args) {\r\n Chart.prototype.data.names.bind(this)(args.names);\r\n }\r\n // update classes if exists\r\n if ('classes' in args) {\r\n Object.keys(args.classes).forEach(function (id) {\r\n config.data_classes[id] = args.classes[id];\r\n });\r\n }\r\n // update categories if exists\r\n if ('categories' in args && $$.isCategorized()) {\r\n config.axis_x_categories = args.categories;\r\n }\r\n // update axes if exists\r\n if ('axes' in args) {\r\n Object.keys(args.axes).forEach(function (id) {\r\n config.data_axes[id] = args.axes[id];\r\n });\r\n }\r\n // update colors if exists\r\n if ('colors' in args) {\r\n Object.keys(args.colors).forEach(function (id) {\r\n config.data_colors[id] = args.colors[id];\r\n });\r\n }\r\n // use cache if exists\r\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\r\n $$.load($$.getCaches(args.cacheIds), args.done);\r\n return;\r\n }\r\n // unload if needed\r\n if (args.unload) {\r\n // TODO: do not unload if target will load (included in url/rows/columns)\r\n $$.unload($$.mapToTargetIds(args.unload === true ? null : args.unload), function () {\r\n $$.loadFromArgs(args);\r\n });\r\n }\r\n else {\r\n $$.loadFromArgs(args);\r\n }\r\n };\r\n Chart.prototype.unload = function (args) {\r\n var $$ = this.internal;\r\n args = args || {};\r\n if (args instanceof Array) {\r\n args = { ids: args };\r\n }\r\n else if (typeof args === 'string') {\r\n args = { ids: [args] };\r\n }\r\n $$.unload($$.mapToTargetIds(args.ids), function () {\r\n $$.redraw({\r\n withUpdateOrgXDomain: true,\r\n withUpdateXDomain: true,\r\n withLegend: true\r\n });\r\n if (args.done) {\r\n args.done();\r\n }\r\n });\r\n };\n\n Chart.prototype.pie = function () { };\r\n Chart.prototype.pie.padAngle = function (padAngle) {\r\n if (padAngle === undefined) {\r\n return this.internal.config.pie_padAngle;\r\n }\r\n this.internal.config.pie_padAngle = padAngle;\r\n this.flush();\r\n };\n\n Chart.prototype.regions = function (regions) {\r\n var $$ = this.internal, config = $$.config;\r\n if (!regions) {\r\n return config.regions;\r\n }\r\n config.regions = regions;\r\n $$.redrawWithoutRescale();\r\n return config.regions;\r\n };\r\n Chart.prototype.regions.add = function (regions) {\r\n var $$ = this.internal, config = $$.config;\r\n if (!regions) {\r\n return config.regions;\r\n }\r\n config.regions = config.regions.concat(regions);\r\n $$.redrawWithoutRescale();\r\n return config.regions;\r\n };\r\n Chart.prototype.regions.remove = function (options) {\r\n var $$ = this.internal, config = $$.config, duration, classes, regions;\r\n options = options || {};\r\n duration = getOption(options, 'duration', config.transition_duration);\r\n classes = getOption(options, 'classes', [CLASS.region]);\r\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\r\n return '.' + c;\r\n }));\r\n (duration ? regions.transition().duration(duration) : regions)\r\n .style('opacity', 0)\r\n .remove();\r\n config.regions = config.regions.filter(function (region) {\r\n var found = false;\r\n if (!region['class']) {\r\n return true;\r\n }\r\n region['class'].split(' ').forEach(function (c) {\r\n if (classes.indexOf(c) >= 0) {\r\n found = true;\r\n }\r\n });\r\n return !found;\r\n });\r\n return config.regions;\r\n };\n\n Chart.prototype.selected = function (targetId) {\r\n var $$ = this.internal, d3 = $$.d3;\r\n return $$.main\r\n .selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId))\r\n .selectAll('.' + CLASS.shape)\r\n .filter(function () {\r\n return d3.select(this).classed(CLASS.SELECTED);\r\n })\r\n .nodes()\r\n .map(function (d) {\r\n var data = d.__data__;\r\n return data.data ? data.data : data;\r\n });\r\n };\r\n Chart.prototype.select = function (ids, indices, resetOther) {\r\n var $$ = this.internal, d3 = $$.d3, config = $$.config;\r\n if (!config.data_selection_enabled) {\r\n return;\r\n }\r\n $$.main\r\n .selectAll('.' + CLASS.shapes)\r\n .selectAll('.' + CLASS.shape)\r\n .each(function (d, i) {\r\n var shape = d3.select(this), id = d.data ? d.data.id : d.id, toggle = $$.getToggle(this, d).bind($$), isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0, isTargetIndex = !indices || indices.indexOf(i) >= 0, isSelected = shape.classed(CLASS.SELECTED);\r\n // line/area selection not supported yet\r\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\r\n return;\r\n }\r\n if (isTargetId && isTargetIndex) {\r\n if (config.data_selection_isselectable(d) && !isSelected) {\r\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\r\n }\r\n }\r\n else if (isDefined(resetOther) && resetOther) {\r\n if (isSelected) {\r\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\r\n }\r\n }\r\n });\r\n };\r\n Chart.prototype.unselect = function (ids, indices) {\r\n var $$ = this.internal, d3 = $$.d3, config = $$.config;\r\n if (!config.data_selection_enabled) {\r\n return;\r\n }\r\n $$.main\r\n .selectAll('.' + CLASS.shapes)\r\n .selectAll('.' + CLASS.shape)\r\n .each(function (d, i) {\r\n var shape = d3.select(this), id = d.data ? d.data.id : d.id, toggle = $$.getToggle(this, d).bind($$), isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0, isTargetIndex = !indices || indices.indexOf(i) >= 0, isSelected = shape.classed(CLASS.SELECTED);\r\n // line/area selection not supported yet\r\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\r\n return;\r\n }\r\n if (isTargetId && isTargetIndex) {\r\n if (config.data_selection_isselectable(d)) {\r\n if (isSelected) {\r\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\r\n }\r\n }\r\n }\r\n });\r\n };\n\n Chart.prototype.show = function (targetIds, options) {\r\n var $$ = this.internal, targets;\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n options = options || {};\r\n $$.removeHiddenTargetIds(targetIds);\r\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\r\n targets\r\n .transition()\r\n .style('display', isIE() ? 'block' : 'initial', 'important')\r\n .style('opacity', 1, 'important')\r\n .call($$.endall, function () {\r\n targets.style('opacity', null).style('opacity', 1);\r\n });\r\n if (options.withLegend) {\r\n $$.showLegend(targetIds);\r\n }\r\n $$.redraw({\r\n withUpdateOrgXDomain: true,\r\n withUpdateXDomain: true,\r\n withLegend: true\r\n });\r\n };\r\n Chart.prototype.hide = function (targetIds, options) {\r\n var $$ = this.internal, targets;\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n options = options || {};\r\n $$.addHiddenTargetIds(targetIds);\r\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\r\n targets\r\n .transition()\r\n .style('opacity', 0, 'important')\r\n .call($$.endall, function () {\r\n targets.style('opacity', null).style('opacity', 0);\r\n targets.style('display', 'none');\r\n });\r\n if (options.withLegend) {\r\n $$.hideLegend(targetIds);\r\n }\r\n $$.redraw({\r\n withUpdateOrgXDomain: true,\r\n withUpdateXDomain: true,\r\n withLegend: true\r\n });\r\n };\r\n Chart.prototype.toggle = function (targetIds, options) {\r\n var that = this, $$ = this.internal;\r\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\r\n $$.isTargetToShow(targetId)\r\n ? that.hide(targetId, options)\r\n : that.show(targetId, options);\r\n });\r\n };\n\n Chart.prototype.subchart = function () { };\r\n Chart.prototype.subchart.isShown = function () {\r\n var $$ = this.internal;\r\n return $$.config.subchart_show;\r\n };\r\n Chart.prototype.subchart.show = function () {\r\n var $$ = this.internal;\r\n if ($$.config.subchart_show) {\r\n return;\r\n }\r\n $$.config.subchart_show = true;\r\n // insert DOM\r\n $$.initSubchart();\r\n // update dimensions with sub chart now visible\r\n $$.updateDimension();\r\n // insert brush (depends on sizes previously updated)\r\n $$.initSubchartBrush();\r\n // attach data\r\n $$.updateTargetsForSubchart($$.getTargets());\r\n // reset fade-in state\r\n $$.mapToIds($$.data.targets).forEach(function (id) {\r\n $$.withoutFadeIn[id] = false;\r\n });\r\n // redraw chart !\r\n $$.updateAndRedraw();\r\n // update visible targets !\r\n $$.showTargets();\r\n };\r\n Chart.prototype.subchart.hide = function () {\r\n var $$ = this.internal;\r\n if (!$$.config.subchart_show) {\r\n return;\r\n }\r\n $$.config.subchart_show = false;\r\n // remove DOM\r\n $$.removeSubchart();\r\n // re-render chart\r\n $$.redraw();\r\n };\n\n Chart.prototype.tooltip = function () { };\r\n Chart.prototype.tooltip.show = function (args) {\r\n var $$ = this.internal, targets, data, mouse = {};\r\n // determine mouse position on the chart\r\n if (args.mouse) {\r\n mouse = args.mouse;\r\n }\r\n else {\r\n // determine focus data\r\n if (args.data) {\r\n data = args.data;\r\n }\r\n else if (typeof args.x !== 'undefined') {\r\n if (args.id) {\r\n targets = $$.data.targets.filter(function (t) {\r\n return t.id === args.id;\r\n });\r\n }\r\n else {\r\n targets = $$.data.targets;\r\n }\r\n data = $$.filterByX(targets, args.x).slice(0, 1)[0];\r\n }\r\n mouse = data ? $$.getMousePosition(data) : null;\r\n }\r\n // emulate mouse events to show\r\n $$.dispatchEvent('mousemove', mouse);\r\n $$.config.tooltip_onshow.call($$, data);\r\n };\r\n Chart.prototype.tooltip.hide = function () {\r\n // TODO: get target data by checking the state of focus\r\n this.internal.dispatchEvent('mouseout', 0);\r\n this.internal.config.tooltip_onhide.call(this);\r\n };\n\n Chart.prototype.transform = function (type, targetIds) {\r\n var $$ = this.internal, options = ['pie', 'donut'].indexOf(type) >= 0 ? { withTransform: true } : null;\r\n $$.transformTo(targetIds, type, options);\r\n };\r\n ChartInternal.prototype.transformTo = function (targetIds, type, optionsForRedraw) {\r\n var $$ = this, withTransitionForAxis = !$$.hasArcType(), options = optionsForRedraw || {\r\n withTransitionForAxis: withTransitionForAxis\r\n };\r\n options.withTransitionForTransform = false;\r\n $$.transiting = false;\r\n $$.setTargetType(targetIds, type);\r\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\r\n $$.updateAndRedraw(options);\r\n };\n\n Chart.prototype.x = function (x) {\r\n var $$ = this.internal;\r\n if (arguments.length) {\r\n $$.updateTargetX($$.data.targets, x);\r\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\r\n }\r\n return $$.data.xs;\r\n };\r\n Chart.prototype.xs = function (xs) {\r\n var $$ = this.internal;\r\n if (arguments.length) {\r\n $$.updateTargetXs($$.data.targets, xs);\r\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\r\n }\r\n return $$.data.xs;\r\n };\n\n Chart.prototype.zoom = function (domain) {\r\n var $$ = this.internal;\r\n if (domain) {\r\n if ($$.isTimeSeries()) {\r\n domain = domain.map(function (x) {\r\n return $$.parseDate(x);\r\n });\r\n }\r\n if ($$.config.subchart_show) {\r\n $$.brush.selectionAsValue(domain, true);\r\n }\r\n else {\r\n $$.updateXDomain(null, true, false, false, domain);\r\n $$.redraw({ withY: $$.config.zoom_rescale, withSubchart: false });\r\n }\r\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\r\n return domain;\r\n }\r\n else {\r\n return $$.x.domain();\r\n }\r\n };\r\n Chart.prototype.zoom.enable = function (enabled) {\r\n var $$ = this.internal;\r\n $$.config.zoom_enabled = enabled;\r\n $$.updateAndRedraw();\r\n };\r\n Chart.prototype.unzoom = function () {\r\n var $$ = this.internal;\r\n if ($$.config.subchart_show) {\r\n $$.brush.clear();\r\n }\r\n else {\r\n $$.updateXDomain(null, true, false, false, $$.subX.domain());\r\n $$.redraw({ withY: $$.config.zoom_rescale, withSubchart: false });\r\n }\r\n };\r\n Chart.prototype.zoom.max = function (max) {\r\n var $$ = this.internal, config = $$.config, d3 = $$.d3;\r\n if (max === 0 || max) {\r\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\r\n }\r\n else {\r\n return config.zoom_x_max;\r\n }\r\n };\r\n Chart.prototype.zoom.min = function (min) {\r\n var $$ = this.internal, config = $$.config, d3 = $$.d3;\r\n if (min === 0 || min) {\r\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\r\n }\r\n else {\r\n return config.zoom_x_min;\r\n }\r\n };\r\n Chart.prototype.zoom.range = function (range) {\r\n if (arguments.length) {\r\n if (isDefined(range.max)) {\r\n this.domain.max(range.max);\r\n }\r\n if (isDefined(range.min)) {\r\n this.domain.min(range.min);\r\n }\r\n }\r\n else {\r\n return {\r\n max: this.domain.max(),\r\n min: this.domain.min()\r\n };\r\n }\r\n };\n\n ChartInternal.prototype.initPie = function () {\r\n var $$ = this, d3 = $$.d3;\r\n $$.pie = d3\r\n .pie()\r\n .padAngle(this.getPadAngle.bind(this))\r\n .value(function (d) {\r\n return d.values.reduce(function (a, b) {\r\n return a + b.value;\r\n }, 0);\r\n });\r\n var orderFct = $$.getOrderFunction();\r\n // we need to reverse the returned order if asc or desc to have the slice in expected order.\r\n if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\r\n var defaultSort_1 = orderFct;\r\n orderFct = function (t1, t2) { return defaultSort_1(t1, t2) * -1; };\r\n }\r\n $$.pie.sort(orderFct || null);\r\n };\r\n ChartInternal.prototype.updateRadius = function () {\r\n var $$ = this, config = $$.config, w = config.gauge_width || config.donut_width, gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length *\r\n $$.config.gauge_arcs_minWidth;\r\n $$.radiusExpanded =\r\n (Math.min($$.arcWidth, $$.arcHeight) / 2) * ($$.hasType('gauge') ? 0.85 : 1);\r\n $$.radius = $$.radiusExpanded * 0.95;\r\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\r\n $$.innerRadius =\r\n $$.hasType('donut') || $$.hasType('gauge')\r\n ? $$.radius * $$.innerRadiusRatio\r\n : 0;\r\n $$.gaugeArcWidth = w\r\n ? w\r\n : gaugeArcWidth <= $$.radius - $$.innerRadius\r\n ? $$.radius - $$.innerRadius\r\n : gaugeArcWidth <= $$.radius\r\n ? gaugeArcWidth\r\n : $$.radius;\r\n };\r\n ChartInternal.prototype.getPadAngle = function () {\r\n if (this.hasType('pie')) {\r\n return this.config.pie_padAngle || 0;\r\n }\r\n else if (this.hasType('donut')) {\r\n return this.config.donut_padAngle || 0;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n ChartInternal.prototype.updateArc = function () {\r\n var $$ = this;\r\n $$.svgArc = $$.getSvgArc();\r\n $$.svgArcExpanded = $$.getSvgArcExpanded();\r\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\r\n };\r\n ChartInternal.prototype.updateAngle = function (d) {\r\n var $$ = this, config = $$.config, found = false, index = 0, gMin, gMax, gTic, gValue;\r\n if (!config) {\r\n return null;\r\n }\r\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\r\n if (!found && t.data.id === d.data.id) {\r\n found = true;\r\n d = t;\r\n d.index = index;\r\n }\r\n index++;\r\n });\r\n if (isNaN(d.startAngle)) {\r\n d.startAngle = 0;\r\n }\r\n if (isNaN(d.endAngle)) {\r\n d.endAngle = d.startAngle;\r\n }\r\n if ($$.isGaugeType(d.data)) {\r\n gMin = config.gauge_min;\r\n gMax = config.gauge_max;\r\n gTic = (Math.PI * (config.gauge_fullCircle ? 2 : 1)) / (gMax - gMin);\r\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\r\n d.startAngle = config.gauge_startingAngle;\r\n d.endAngle = d.startAngle + gTic * gValue;\r\n }\r\n return found ? d : null;\r\n };\r\n ChartInternal.prototype.getSvgArc = function () {\r\n var $$ = this, hasGaugeType = $$.hasType('gauge'), singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length, arc = $$.d3\r\n .arc()\r\n .outerRadius(function (d) {\r\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\r\n })\r\n .innerRadius(function (d) {\r\n return hasGaugeType\r\n ? $$.radius - singleArcWidth * (d.index + 1)\r\n : $$.innerRadius;\r\n }), newArc = function (d, withoutUpdate) {\r\n var updated;\r\n if (withoutUpdate) {\r\n return arc(d);\r\n } // for interpolate\r\n updated = $$.updateAngle(d);\r\n return updated ? arc(updated) : 'M 0 0';\r\n };\r\n newArc.centroid = arc.centroid;\r\n return newArc;\r\n };\r\n ChartInternal.prototype.getSvgArcExpanded = function (rate) {\r\n rate = rate || 1;\r\n var $$ = this, hasGaugeType = $$.hasType('gauge'), singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length, expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100), arc = $$.d3\r\n .arc()\r\n .outerRadius(function (d) {\r\n return hasGaugeType\r\n ? $$.radius - singleArcWidth * d.index + expandWidth\r\n : $$.radiusExpanded * rate;\r\n })\r\n .innerRadius(function (d) {\r\n return hasGaugeType\r\n ? $$.radius - singleArcWidth * (d.index + 1)\r\n : $$.innerRadius;\r\n });\r\n return function (d) {\r\n var updated = $$.updateAngle(d);\r\n return updated ? arc(updated) : 'M 0 0';\r\n };\r\n };\r\n ChartInternal.prototype.getArc = function (d, withoutUpdate, force) {\r\n return force || this.isArcType(d.data)\r\n ? this.svgArc(d, withoutUpdate)\r\n : 'M 0 0';\r\n };\r\n ChartInternal.prototype.transformForArcLabel = function (d) {\r\n var $$ = this, config = $$.config, updated = $$.updateAngle(d), c, x, y, h, ratio, translate = '', hasGauge = $$.hasType('gauge');\r\n if (updated && !hasGauge) {\r\n c = this.svgArc.centroid(updated);\r\n x = isNaN(c[0]) ? 0 : c[0];\r\n y = isNaN(c[1]) ? 0 : c[1];\r\n h = Math.sqrt(x * x + y * y);\r\n if ($$.hasType('donut') && config.donut_label_ratio) {\r\n ratio = isFunction(config.donut_label_ratio)\r\n ? config.donut_label_ratio(d, $$.radius, h)\r\n : config.donut_label_ratio;\r\n }\r\n else if ($$.hasType('pie') && config.pie_label_ratio) {\r\n ratio = isFunction(config.pie_label_ratio)\r\n ? config.pie_label_ratio(d, $$.radius, h)\r\n : config.pie_label_ratio;\r\n }\r\n else {\r\n ratio =\r\n $$.radius && h\r\n ? ((36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) *\r\n $$.radius) /\r\n h\r\n : 0;\r\n }\r\n translate = 'translate(' + x * ratio + ',' + y * ratio + ')';\r\n }\r\n else if (updated &&\r\n hasGauge &&\r\n $$.filterTargetsToShow($$.data.targets).length > 1) {\r\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\r\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\r\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\r\n translate = 'translate(' + x + ',' + y + ')';\r\n }\r\n return translate;\r\n };\r\n /**\r\n * @deprecated Use `getRatio('arc', d)` instead.\r\n */\r\n ChartInternal.prototype.getArcRatio = function (d) {\r\n return this.getRatio('arc', d);\r\n };\r\n ChartInternal.prototype.convertToArcData = function (d) {\r\n return this.addName({\r\n id: d.data.id,\r\n value: d.value,\r\n ratio: this.getRatio('arc', d),\r\n index: d.index\r\n });\r\n };\r\n ChartInternal.prototype.textForArcLabel = function (d) {\r\n var $$ = this, updated, value, ratio, id, format;\r\n if (!$$.shouldShowArcLabel()) {\r\n return '';\r\n }\r\n updated = $$.updateAngle(d);\r\n value = updated ? updated.value : null;\r\n ratio = $$.getRatio('arc', updated);\r\n id = d.data.id;\r\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\r\n return '';\r\n }\r\n format = $$.getArcLabelFormat();\r\n return format\r\n ? format(value, ratio, id)\r\n : $$.defaultArcValueFormat(value, ratio);\r\n };\r\n ChartInternal.prototype.textForGaugeMinMax = function (value, isMax) {\r\n var $$ = this, format = $$.getGaugeLabelExtents();\r\n return format ? format(value, isMax) : value;\r\n };\r\n ChartInternal.prototype.expandArc = function (targetIds) {\r\n var $$ = this, interval;\r\n // MEMO: avoid to cancel transition\r\n if ($$.transiting) {\r\n interval = window.setInterval(function () {\r\n if (!$$.transiting) {\r\n window.clearInterval(interval);\r\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\r\n $$.expandArc(targetIds);\r\n }\r\n }\r\n }, 10);\r\n return;\r\n }\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n $$.svg\r\n .selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc))\r\n .each(function (d) {\r\n if (!$$.shouldExpand(d.data.id)) {\r\n return;\r\n }\r\n $$.d3\r\n .select(this)\r\n .selectAll('path')\r\n .transition()\r\n .duration($$.expandDuration(d.data.id))\r\n .attr('d', $$.svgArcExpanded)\r\n .transition()\r\n .duration($$.expandDuration(d.data.id) * 2)\r\n .attr('d', $$.svgArcExpandedSub)\r\n .each(function (d) {\r\n if ($$.isDonutType(d.data)) ;\r\n });\r\n });\r\n };\r\n ChartInternal.prototype.unexpandArc = function (targetIds) {\r\n var $$ = this;\r\n if ($$.transiting) {\r\n return;\r\n }\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n $$.svg\r\n .selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc))\r\n .selectAll('path')\r\n .transition()\r\n .duration(function (d) {\r\n return $$.expandDuration(d.data.id);\r\n })\r\n .attr('d', $$.svgArc);\r\n $$.svg.selectAll('.' + CLASS.arc);\r\n };\r\n ChartInternal.prototype.expandDuration = function (id) {\r\n var $$ = this, config = $$.config;\r\n if ($$.isDonutType(id)) {\r\n return config.donut_expand_duration;\r\n }\r\n else if ($$.isGaugeType(id)) {\r\n return config.gauge_expand_duration;\r\n }\r\n else if ($$.isPieType(id)) {\r\n return config.pie_expand_duration;\r\n }\r\n else {\r\n return 50;\r\n }\r\n };\r\n ChartInternal.prototype.shouldExpand = function (id) {\r\n var $$ = this, config = $$.config;\r\n return (($$.isDonutType(id) && config.donut_expand) ||\r\n ($$.isGaugeType(id) && config.gauge_expand) ||\r\n ($$.isPieType(id) && config.pie_expand));\r\n };\r\n ChartInternal.prototype.shouldShowArcLabel = function () {\r\n var $$ = this, config = $$.config, shouldShow = true;\r\n if ($$.hasType('donut')) {\r\n shouldShow = config.donut_label_show;\r\n }\r\n else if ($$.hasType('pie')) {\r\n shouldShow = config.pie_label_show;\r\n }\r\n // when gauge, always true\r\n return shouldShow;\r\n };\r\n ChartInternal.prototype.meetsArcLabelThreshold = function (ratio) {\r\n var $$ = this, config = $$.config, threshold = $$.hasType('donut')\r\n ? config.donut_label_threshold\r\n : config.pie_label_threshold;\r\n return ratio >= threshold;\r\n };\r\n ChartInternal.prototype.getArcLabelFormat = function () {\r\n var $$ = this, config = $$.config, format = config.pie_label_format;\r\n if ($$.hasType('gauge')) {\r\n format = config.gauge_label_format;\r\n }\r\n else if ($$.hasType('donut')) {\r\n format = config.donut_label_format;\r\n }\r\n return format;\r\n };\r\n ChartInternal.prototype.getGaugeLabelExtents = function () {\r\n var $$ = this, config = $$.config;\r\n return config.gauge_label_extents;\r\n };\r\n ChartInternal.prototype.getArcTitle = function () {\r\n var $$ = this;\r\n return $$.hasType('donut') ? $$.config.donut_title : '';\r\n };\r\n ChartInternal.prototype.updateTargetsForArc = function (targets) {\r\n var $$ = this, main = $$.main, mainPies, mainPieEnter, classChartArc = $$.classChartArc.bind($$), classArcs = $$.classArcs.bind($$), classFocus = $$.classFocus.bind($$);\r\n mainPies = main\r\n .select('.' + CLASS.chartArcs)\r\n .selectAll('.' + CLASS.chartArc)\r\n .data($$.pie(targets))\r\n .attr('class', function (d) {\r\n return classChartArc(d) + classFocus(d.data);\r\n });\r\n mainPieEnter = mainPies\r\n .enter()\r\n .append('g')\r\n .attr('class', classChartArc);\r\n mainPieEnter.append('g').attr('class', classArcs);\r\n mainPieEnter\r\n .append('text')\r\n .attr('dy', $$.hasType('gauge') ? '-.1em' : '.35em')\r\n .style('opacity', 0)\r\n .style('text-anchor', 'middle')\r\n .style('pointer-events', 'none');\r\n // MEMO: can not keep same color..., but not bad to update color in redraw\r\n //mainPieUpdate.exit().remove();\r\n };\r\n ChartInternal.prototype.initArc = function () {\r\n var $$ = this;\r\n $$.arcs = $$.main\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.chartArcs)\r\n .attr('transform', $$.getTranslate('arc'));\r\n $$.arcs\r\n .append('text')\r\n .attr('class', CLASS.chartArcsTitle)\r\n .style('text-anchor', 'middle')\r\n .text($$.getArcTitle());\r\n };\r\n ChartInternal.prototype.redrawArc = function (duration, durationForExit, withTransform) {\r\n var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main, arcs, mainArc, arcLabelLines, mainArcLabelLine, hasGaugeType = $$.hasType('gauge');\r\n arcs = main\r\n .selectAll('.' + CLASS.arcs)\r\n .selectAll('.' + CLASS.arc)\r\n .data($$.arcData.bind($$));\r\n mainArc = arcs\r\n .enter()\r\n .append('path')\r\n .attr('class', $$.classArc.bind($$))\r\n .style('fill', function (d) {\r\n return $$.color(d.data);\r\n })\r\n .style('cursor', function (d) {\r\n return config.interaction_enabled && config.data_selection_isselectable(d)\r\n ? 'pointer'\r\n : null;\r\n })\r\n .each(function (d) {\r\n if ($$.isGaugeType(d.data)) {\r\n d.startAngle = d.endAngle = config.gauge_startingAngle;\r\n }\r\n this._current = d;\r\n })\r\n .merge(arcs);\r\n if (hasGaugeType) {\r\n arcLabelLines = main\r\n .selectAll('.' + CLASS.arcs)\r\n .selectAll('.' + CLASS.arcLabelLine)\r\n .data($$.arcData.bind($$));\r\n mainArcLabelLine = arcLabelLines\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d) {\r\n return (CLASS.arcLabelLine +\r\n ' ' +\r\n CLASS.target +\r\n ' ' +\r\n CLASS.target +\r\n '-' +\r\n d.data.id);\r\n })\r\n .merge(arcLabelLines);\r\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\r\n mainArcLabelLine.style('display', 'none');\r\n }\r\n else {\r\n mainArcLabelLine\r\n .style('fill', function (d) {\r\n return $$.levelColor\r\n ? $$.levelColor(d.data.values.reduce(function (total, item) {\r\n return total + item.value;\r\n }, 0))\r\n : $$.color(d.data);\r\n })\r\n .style('display', config.gauge_labelLine_show ? '' : 'none')\r\n .each(function (d) {\r\n var lineLength = 0, lineThickness = 2, x = 0, y = 0, transform = '';\r\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\r\n var updated = $$.updateAngle(d), innerLineLength = ($$.gaugeArcWidth /\r\n $$.filterTargetsToShow($$.data.targets).length) *\r\n (updated.index + 1), lineAngle = updated.endAngle - Math.PI / 2, arcInnerRadius = $$.radius - innerLineLength, linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\r\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\r\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\r\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\r\n transform =\r\n 'rotate(' +\r\n (lineAngle * 180) / Math.PI +\r\n ', ' +\r\n x +\r\n ', ' +\r\n y +\r\n ')';\r\n }\r\n d3.select(this)\r\n .attr('x', x)\r\n .attr('y', y)\r\n .attr('width', lineLength)\r\n .attr('height', lineThickness)\r\n .attr('transform', transform)\r\n .style('stroke-dasharray', '0, ' + (lineLength + lineThickness) + ', 0');\r\n });\r\n }\r\n }\r\n mainArc\r\n .attr('transform', function (d) {\r\n return !$$.isGaugeType(d.data) && withTransform ? 'scale(0)' : '';\r\n })\r\n .on('mouseover', config.interaction_enabled\r\n ? function (d) {\r\n var updated, arcData;\r\n if ($$.transiting) {\r\n // skip while transiting\r\n return;\r\n }\r\n updated = $$.updateAngle(d);\r\n if (updated) {\r\n arcData = $$.convertToArcData(updated);\r\n // transitions\r\n $$.expandArc(updated.data.id);\r\n $$.api.focus(updated.data.id);\r\n $$.toggleFocusLegend(updated.data.id, true);\r\n $$.config.data_onmouseover(arcData, this);\r\n }\r\n }\r\n : null)\r\n .on('mousemove', config.interaction_enabled\r\n ? function (d) {\r\n var updated = $$.updateAngle(d), arcData, selectedData;\r\n if (updated) {\r\n (arcData = $$.convertToArcData(updated)),\r\n (selectedData = [arcData]);\r\n $$.showTooltip(selectedData, this);\r\n }\r\n }\r\n : null)\r\n .on('mouseout', config.interaction_enabled\r\n ? function (d) {\r\n var updated, arcData;\r\n if ($$.transiting) {\r\n // skip while transiting\r\n return;\r\n }\r\n updated = $$.updateAngle(d);\r\n if (updated) {\r\n arcData = $$.convertToArcData(updated);\r\n // transitions\r\n $$.unexpandArc(updated.data.id);\r\n $$.api.revert();\r\n $$.revertLegend();\r\n $$.hideTooltip();\r\n $$.config.data_onmouseout(arcData, this);\r\n }\r\n }\r\n : null)\r\n .on('click', config.interaction_enabled\r\n ? function (d, i) {\r\n var updated = $$.updateAngle(d), arcData;\r\n if (updated) {\r\n arcData = $$.convertToArcData(updated);\r\n if ($$.toggleShape) {\r\n $$.toggleShape(this, arcData, i);\r\n }\r\n $$.config.data_onclick.call($$.api, arcData, this);\r\n }\r\n }\r\n : null)\r\n .each(function () {\r\n $$.transiting = true;\r\n })\r\n .transition()\r\n .duration(duration)\r\n .attrTween('d', function (d) {\r\n var updated = $$.updateAngle(d), interpolate;\r\n if (!updated) {\r\n return function () {\r\n return 'M 0 0';\r\n };\r\n }\r\n // if (this._current === d) {\r\n // this._current = {\r\n // startAngle: Math.PI*2,\r\n // endAngle: Math.PI*2,\r\n // };\r\n // }\r\n if (isNaN(this._current.startAngle)) {\r\n this._current.startAngle = 0;\r\n }\r\n if (isNaN(this._current.endAngle)) {\r\n this._current.endAngle = this._current.startAngle;\r\n }\r\n interpolate = d3.interpolate(this._current, updated);\r\n this._current = interpolate(0);\r\n return function (t) {\r\n // prevents crashing the charts once in transition and chart.destroy() has been called\r\n if ($$.config === null) {\r\n return 'M 0 0';\r\n }\r\n var interpolated = interpolate(t);\r\n interpolated.data = d.data; // data.id will be updated by interporator\r\n return $$.getArc(interpolated, true);\r\n };\r\n })\r\n .attr('transform', withTransform ? 'scale(1)' : '')\r\n .style('fill', function (d) {\r\n return $$.levelColor\r\n ? $$.levelColor(d.data.values.reduce(function (total, item) {\r\n return total + item.value;\r\n }, 0))\r\n : $$.color(d.data.id);\r\n }) // Where gauge reading color would receive customization.\r\n .call($$.endall, function () {\r\n $$.transiting = false;\r\n });\r\n arcs\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0)\r\n .remove();\r\n main\r\n .selectAll('.' + CLASS.chartArc)\r\n .select('text')\r\n .style('opacity', 0)\r\n .attr('class', function (d) {\r\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\r\n })\r\n .text($$.textForArcLabel.bind($$))\r\n .attr('transform', $$.transformForArcLabel.bind($$))\r\n .style('font-size', function (d) {\r\n return $$.isGaugeType(d.data) &&\r\n $$.filterTargetsToShow($$.data.targets).length === 1\r\n ? Math.round($$.radius / 5) + 'px'\r\n : '';\r\n })\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', function (d) {\r\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\r\n });\r\n main\r\n .select('.' + CLASS.chartArcsTitle)\r\n .style('opacity', $$.hasType('donut') || hasGaugeType ? 1 : 0);\r\n if (hasGaugeType) {\r\n var index_1 = 0;\r\n var backgroundArc = $$.arcs\r\n .select('g.' + CLASS.chartArcsBackground)\r\n .selectAll('path.' + CLASS.chartArcsBackground)\r\n .data($$.data.targets);\r\n backgroundArc\r\n .enter()\r\n .append('path')\r\n .attr('class', function (d, i) {\r\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\r\n })\r\n .merge(backgroundArc)\r\n .attr('d', function (d1) {\r\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\r\n return 'M 0 0';\r\n }\r\n var d = {\r\n data: [{ value: config.gauge_max }],\r\n startAngle: config.gauge_startingAngle,\r\n endAngle: -1 *\r\n config.gauge_startingAngle *\r\n (config.gauge_fullCircle ? Math.PI : 1),\r\n index: index_1++\r\n };\r\n return $$.getArc(d, true, true);\r\n });\r\n backgroundArc.exit().remove();\r\n $$.arcs\r\n .select('.' + CLASS.chartArcsGaugeUnit)\r\n .attr('dy', '.75em')\r\n .text(config.gauge_label_show ? config.gauge_units : '');\r\n $$.arcs\r\n .select('.' + CLASS.chartArcsGaugeMin)\r\n .attr('dx', -1 *\r\n ($$.innerRadius +\r\n ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) +\r\n 'px')\r\n .attr('dy', '1.2em')\r\n .text(config.gauge_label_show\r\n ? $$.textForGaugeMinMax(config.gauge_min, false)\r\n : '');\r\n $$.arcs\r\n .select('.' + CLASS.chartArcsGaugeMax)\r\n .attr('dx', $$.innerRadius +\r\n ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) +\r\n 'px')\r\n .attr('dy', '1.2em')\r\n .text(config.gauge_label_show\r\n ? $$.textForGaugeMinMax(config.gauge_max, true)\r\n : '');\r\n }\r\n };\r\n ChartInternal.prototype.initGauge = function () {\r\n var arcs = this.arcs;\r\n if (this.hasType('gauge')) {\r\n arcs.append('g').attr('class', CLASS.chartArcsBackground);\r\n arcs\r\n .append('text')\r\n .attr('class', CLASS.chartArcsGaugeUnit)\r\n .style('text-anchor', 'middle')\r\n .style('pointer-events', 'none');\r\n arcs\r\n .append('text')\r\n .attr('class', CLASS.chartArcsGaugeMin)\r\n .style('text-anchor', 'middle')\r\n .style('pointer-events', 'none');\r\n arcs\r\n .append('text')\r\n .attr('class', CLASS.chartArcsGaugeMax)\r\n .style('text-anchor', 'middle')\r\n .style('pointer-events', 'none');\r\n }\r\n };\r\n ChartInternal.prototype.getGaugeLabelHeight = function () {\r\n return this.config.gauge_label_show ? 20 : 0;\r\n };\n\n /**\r\n * Store value into cache\r\n *\r\n * @param key\r\n * @param value\r\n */\r\n ChartInternal.prototype.addToCache = function (key, value) {\r\n this.cache[\"$\" + key] = value;\r\n };\r\n /**\r\n * Returns a cached value or undefined\r\n *\r\n * @param key\r\n * @return {*}\r\n */\r\n ChartInternal.prototype.getFromCache = function (key) {\r\n return this.cache[\"$\" + key];\r\n };\r\n /**\r\n * Reset cached data\r\n */\r\n ChartInternal.prototype.resetCache = function () {\r\n var _this = this;\r\n Object.keys(this.cache)\r\n .filter(function (key) { return /^\\$/.test(key); })\r\n .forEach(function (key) {\r\n delete _this.cache[key];\r\n });\r\n };\r\n // Old API that stores Targets\r\n ChartInternal.prototype.hasCaches = function (ids) {\r\n for (var i = 0; i < ids.length; i++) {\r\n if (!(ids[i] in this.cache)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n ChartInternal.prototype.addCache = function (id, target) {\r\n this.cache[id] = this.cloneTarget(target);\r\n };\r\n ChartInternal.prototype.getCaches = function (ids) {\r\n var targets = [], i;\r\n for (i = 0; i < ids.length; i++) {\r\n if (ids[i] in this.cache) {\r\n targets.push(this.cloneTarget(this.cache[ids[i]]));\r\n }\r\n }\r\n return targets;\r\n };\n\n ChartInternal.prototype.categoryName = function (i) {\r\n var config = this.config;\r\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\r\n };\n\n ChartInternal.prototype.generateTargetClass = function (targetId) {\r\n return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\r\n };\r\n ChartInternal.prototype.generateClass = function (prefix, targetId) {\r\n return ' ' + prefix + ' ' + prefix + this.generateTargetClass(targetId);\r\n };\r\n ChartInternal.prototype.classText = function (d) {\r\n return this.generateClass(CLASS.text, d.index);\r\n };\r\n ChartInternal.prototype.classTexts = function (d) {\r\n return this.generateClass(CLASS.texts, d.id);\r\n };\r\n ChartInternal.prototype.classShape = function (d) {\r\n return this.generateClass(CLASS.shape, d.index);\r\n };\r\n ChartInternal.prototype.classShapes = function (d) {\r\n return this.generateClass(CLASS.shapes, d.id);\r\n };\r\n ChartInternal.prototype.classLine = function (d) {\r\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\r\n };\r\n ChartInternal.prototype.classLines = function (d) {\r\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\r\n };\r\n ChartInternal.prototype.classCircle = function (d) {\r\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\r\n };\r\n ChartInternal.prototype.classCircles = function (d) {\r\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\r\n };\r\n ChartInternal.prototype.classBar = function (d) {\r\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\r\n };\r\n ChartInternal.prototype.classBars = function (d) {\r\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\r\n };\r\n ChartInternal.prototype.classArc = function (d) {\r\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\r\n };\r\n ChartInternal.prototype.classArcs = function (d) {\r\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\r\n };\r\n ChartInternal.prototype.classArea = function (d) {\r\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\r\n };\r\n ChartInternal.prototype.classAreas = function (d) {\r\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\r\n };\r\n ChartInternal.prototype.classRegion = function (d, i) {\r\n return (this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : ''));\r\n };\r\n ChartInternal.prototype.classEvent = function (d) {\r\n return this.generateClass(CLASS.eventRect, d.index);\r\n };\r\n ChartInternal.prototype.classTarget = function (id) {\r\n var $$ = this;\r\n var additionalClassSuffix = $$.config.data_classes[id], additionalClass = '';\r\n if (additionalClassSuffix) {\r\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\r\n }\r\n return $$.generateClass(CLASS.target, id) + additionalClass;\r\n };\r\n ChartInternal.prototype.classFocus = function (d) {\r\n return this.classFocused(d) + this.classDefocused(d);\r\n };\r\n ChartInternal.prototype.classFocused = function (d) {\r\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\r\n };\r\n ChartInternal.prototype.classDefocused = function (d) {\r\n return (' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : ''));\r\n };\r\n ChartInternal.prototype.classChartText = function (d) {\r\n return CLASS.chartText + this.classTarget(d.id);\r\n };\r\n ChartInternal.prototype.classChartLine = function (d) {\r\n return CLASS.chartLine + this.classTarget(d.id);\r\n };\r\n ChartInternal.prototype.classChartBar = function (d) {\r\n return CLASS.chartBar + this.classTarget(d.id);\r\n };\r\n ChartInternal.prototype.classChartArc = function (d) {\r\n return CLASS.chartArc + this.classTarget(d.data.id);\r\n };\r\n ChartInternal.prototype.getTargetSelectorSuffix = function (targetId) {\r\n var targetClass = this.generateTargetClass(targetId);\r\n if (window.CSS && window.CSS.escape) {\r\n return window.CSS.escape(targetClass);\r\n }\r\n // fallback on imperfect method for old browsers (does not handles unicode)\r\n return targetClass.replace(/([?!@#$%^&*()=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\r\n };\r\n ChartInternal.prototype.selectorTarget = function (id, prefix) {\r\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\r\n };\r\n ChartInternal.prototype.selectorTargets = function (ids, prefix) {\r\n var $$ = this;\r\n ids = ids || [];\r\n return ids.length\r\n ? ids.map(function (id) {\r\n return $$.selectorTarget(id, prefix);\r\n })\r\n : null;\r\n };\r\n ChartInternal.prototype.selectorLegend = function (id) {\r\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\r\n };\r\n ChartInternal.prototype.selectorLegends = function (ids) {\r\n var $$ = this;\r\n return ids && ids.length\r\n ? ids.map(function (id) {\r\n return $$.selectorLegend(id);\r\n })\r\n : null;\r\n };\n\n ChartInternal.prototype.getClipPath = function (id) {\r\n return 'url(' + (isIE(9) ? '' : document.URL.split('#')[0]) + '#' + id + ')';\r\n };\r\n ChartInternal.prototype.appendClip = function (parent, id) {\r\n return parent\r\n .append('clipPath')\r\n .attr('id', id)\r\n .append('rect');\r\n };\r\n ChartInternal.prototype.getAxisClipX = function (forHorizontal) {\r\n // axis line width + padding for left\r\n var left = Math.max(30, this.margin.left);\r\n return forHorizontal ? -(1 + left) : -(left - 1);\r\n };\r\n ChartInternal.prototype.getAxisClipY = function (forHorizontal) {\r\n return forHorizontal ? -20 : -this.margin.top;\r\n };\r\n ChartInternal.prototype.getXAxisClipX = function () {\r\n var $$ = this;\r\n return $$.getAxisClipX(!$$.config.axis_rotated);\r\n };\r\n ChartInternal.prototype.getXAxisClipY = function () {\r\n var $$ = this;\r\n return $$.getAxisClipY(!$$.config.axis_rotated);\r\n };\r\n ChartInternal.prototype.getYAxisClipX = function () {\r\n var $$ = this;\r\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\r\n };\r\n ChartInternal.prototype.getYAxisClipY = function () {\r\n var $$ = this;\r\n return $$.getAxisClipY($$.config.axis_rotated);\r\n };\r\n ChartInternal.prototype.getAxisClipWidth = function (forHorizontal) {\r\n var $$ = this, left = Math.max(30, $$.margin.left), right = Math.max(30, $$.margin.right);\r\n // width + axis line width + padding for left/right\r\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\r\n };\r\n ChartInternal.prototype.getAxisClipHeight = function (forHorizontal) {\r\n // less than 20 is not enough to show the axis label 'outer' without legend\r\n return ((forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20);\r\n };\r\n ChartInternal.prototype.getXAxisClipWidth = function () {\r\n var $$ = this;\r\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\r\n };\r\n ChartInternal.prototype.getXAxisClipHeight = function () {\r\n var $$ = this;\r\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\r\n };\r\n ChartInternal.prototype.getYAxisClipWidth = function () {\r\n var $$ = this;\r\n return ($$.getAxisClipWidth($$.config.axis_rotated) +\r\n ($$.config.axis_y_inner ? 20 : 0));\r\n };\r\n ChartInternal.prototype.getYAxisClipHeight = function () {\r\n var $$ = this;\r\n return $$.getAxisClipHeight($$.config.axis_rotated);\r\n };\n\n ChartInternal.prototype.generateColor = function () {\r\n var $$ = this, config = $$.config, d3 = $$.d3, colors = config.data_colors, pattern = notEmpty(config.color_pattern)\r\n ? config.color_pattern\r\n : d3.schemeCategory10, callback = config.data_color, ids = [];\r\n return function (d) {\r\n var id = d.id || (d.data && d.data.id) || d, color;\r\n // if callback function is provided\r\n if (colors[id] instanceof Function) {\r\n color = colors[id](d);\r\n }\r\n // if specified, choose that color\r\n else if (colors[id]) {\r\n color = colors[id];\r\n }\r\n // if not specified, choose from pattern\r\n else {\r\n if (ids.indexOf(id) < 0) {\r\n ids.push(id);\r\n }\r\n color = pattern[ids.indexOf(id) % pattern.length];\r\n colors[id] = color;\r\n }\r\n return callback instanceof Function ? callback(color, d) : color;\r\n };\r\n };\r\n ChartInternal.prototype.generateLevelColor = function () {\r\n var $$ = this, config = $$.config, colors = config.color_pattern, threshold = config.color_threshold, asValue = threshold.unit === 'value', values = threshold.values && threshold.values.length ? threshold.values : [], max = threshold.max || 100;\r\n return notEmpty(threshold) && notEmpty(colors)\r\n ? function (value) {\r\n var i, v, color = colors[colors.length - 1];\r\n for (i = 0; i < values.length; i++) {\r\n v = asValue ? value : (value * 100) / max;\r\n if (v < values[i]) {\r\n color = colors[i];\r\n break;\r\n }\r\n }\r\n return color;\r\n }\r\n : null;\r\n };\n\n ChartInternal.prototype.getDefaultConfig = function () {\r\n var config = {\r\n bindto: '#chart',\r\n svg_classname: undefined,\r\n size_width: undefined,\r\n size_height: undefined,\r\n padding_left: undefined,\r\n padding_right: undefined,\r\n padding_top: undefined,\r\n padding_bottom: undefined,\r\n resize_auto: true,\r\n zoom_enabled: false,\r\n zoom_initialRange: undefined,\r\n zoom_type: 'scroll',\r\n zoom_disableDefaultBehavior: false,\r\n zoom_privileged: false,\r\n zoom_rescale: false,\r\n zoom_onzoom: function () { },\r\n zoom_onzoomstart: function () { },\r\n zoom_onzoomend: function () { },\r\n zoom_x_min: undefined,\r\n zoom_x_max: undefined,\r\n interaction_brighten: true,\r\n interaction_enabled: true,\r\n onmouseover: function () { },\r\n onmouseout: function () { },\r\n onresize: function () { },\r\n onresized: function () { },\r\n oninit: function () { },\r\n onrendered: function () { },\r\n transition_duration: 350,\r\n data_epochs: 'epochs',\r\n data_x: undefined,\r\n data_xs: {},\r\n data_xFormat: '%Y-%m-%d',\r\n data_xLocaltime: true,\r\n data_xSort: true,\r\n data_idConverter: function (id) {\r\n return id;\r\n },\r\n data_names: {},\r\n data_classes: {},\r\n data_groups: [],\r\n data_axes: {},\r\n data_type: undefined,\r\n data_types: {},\r\n data_labels: {},\r\n data_order: 'desc',\r\n data_regions: {},\r\n data_color: undefined,\r\n data_colors: {},\r\n data_hide: false,\r\n data_filter: undefined,\r\n data_selection_enabled: false,\r\n data_selection_grouped: false,\r\n data_selection_isselectable: function () {\r\n return true;\r\n },\r\n data_selection_multiple: true,\r\n data_selection_draggable: false,\r\n data_stack_normalize: false,\r\n data_onclick: function () { },\r\n data_onmouseover: function () { },\r\n data_onmouseout: function () { },\r\n data_onselected: function () { },\r\n data_onunselected: function () { },\r\n data_url: undefined,\r\n data_headers: undefined,\r\n data_json: undefined,\r\n data_rows: undefined,\r\n data_columns: undefined,\r\n data_mimeType: undefined,\r\n data_keys: undefined,\r\n // configuration for no plot-able data supplied.\r\n data_empty_label_text: '',\r\n // subchart\r\n subchart_show: false,\r\n subchart_size_height: 60,\r\n subchart_axis_x_show: true,\r\n subchart_onbrush: function () { },\r\n // color\r\n color_pattern: [],\r\n color_threshold: {},\r\n // legend\r\n legend_show: true,\r\n legend_hide: false,\r\n legend_position: 'bottom',\r\n legend_inset_anchor: 'top-left',\r\n legend_inset_x: 10,\r\n legend_inset_y: 0,\r\n legend_inset_step: undefined,\r\n legend_item_onclick: undefined,\r\n legend_item_onmouseover: undefined,\r\n legend_item_onmouseout: undefined,\r\n legend_equally: false,\r\n legend_padding: 0,\r\n legend_item_tile_width: 10,\r\n legend_item_tile_height: 10,\r\n // axis\r\n axis_rotated: false,\r\n axis_x_show: true,\r\n axis_x_type: 'indexed',\r\n axis_x_localtime: true,\r\n axis_x_categories: [],\r\n axis_x_tick_centered: false,\r\n axis_x_tick_format: undefined,\r\n axis_x_tick_culling: {},\r\n axis_x_tick_culling_max: 10,\r\n axis_x_tick_count: undefined,\r\n axis_x_tick_fit: true,\r\n axis_x_tick_values: null,\r\n axis_x_tick_rotate: 0,\r\n axis_x_tick_outer: true,\r\n axis_x_tick_multiline: true,\r\n axis_x_tick_multilineMax: 0,\r\n axis_x_tick_width: null,\r\n axis_x_max: undefined,\r\n axis_x_min: undefined,\r\n axis_x_padding: {},\r\n axis_x_height: undefined,\r\n axis_x_selection: undefined,\r\n axis_x_label: {},\r\n axis_x_inner: undefined,\r\n axis_y_show: true,\r\n axis_y_type: 'linear',\r\n axis_y_max: undefined,\r\n axis_y_min: undefined,\r\n axis_y_inverted: false,\r\n axis_y_center: undefined,\r\n axis_y_inner: undefined,\r\n axis_y_label: {},\r\n axis_y_tick_format: undefined,\r\n axis_y_tick_outer: true,\r\n axis_y_tick_values: null,\r\n axis_y_tick_rotate: 0,\r\n axis_y_tick_count: undefined,\r\n axis_y_tick_time_type: undefined,\r\n axis_y_tick_time_interval: undefined,\r\n axis_y_padding: {},\r\n axis_y_default: undefined,\r\n axis_y2_show: false,\r\n axis_y2_type: 'linear',\r\n axis_y2_max: undefined,\r\n axis_y2_min: undefined,\r\n axis_y2_inverted: false,\r\n axis_y2_center: undefined,\r\n axis_y2_inner: undefined,\r\n axis_y2_label: {},\r\n axis_y2_tick_format: undefined,\r\n axis_y2_tick_outer: true,\r\n axis_y2_tick_values: null,\r\n axis_y2_tick_count: undefined,\r\n axis_y2_padding: {},\r\n axis_y2_default: undefined,\r\n // grid\r\n grid_x_show: false,\r\n grid_x_type: 'tick',\r\n grid_x_lines: [],\r\n grid_y_show: false,\r\n // not used\r\n // grid_y_type: 'tick',\r\n grid_y_lines: [],\r\n grid_y_ticks: 10,\r\n grid_focus_show: true,\r\n grid_lines_front: true,\r\n // point - point of each data\r\n point_show: true,\r\n point_r: 2.5,\r\n point_sensitivity: 10,\r\n point_focus_expand_enabled: true,\r\n point_focus_expand_r: undefined,\r\n point_select_r: undefined,\r\n // line\r\n line_connectNull: false,\r\n line_step_type: 'step',\r\n // bar\r\n bar_width: undefined,\r\n bar_width_ratio: 0.6,\r\n bar_width_max: undefined,\r\n bar_zerobased: true,\r\n bar_space: 0,\r\n // area\r\n area_zerobased: true,\r\n area_above: false,\r\n // pie\r\n pie_label_show: true,\r\n pie_label_format: undefined,\r\n pie_label_threshold: 0.05,\r\n pie_label_ratio: undefined,\r\n pie_expand: {},\r\n pie_expand_duration: 50,\r\n pie_padAngle: 0,\r\n // gauge\r\n gauge_fullCircle: false,\r\n gauge_label_show: true,\r\n gauge_labelLine_show: true,\r\n gauge_label_format: undefined,\r\n gauge_min: 0,\r\n gauge_max: 100,\r\n gauge_startingAngle: (-1 * Math.PI) / 2,\r\n gauge_label_extents: undefined,\r\n gauge_units: undefined,\r\n gauge_width: undefined,\r\n gauge_arcs_minWidth: 5,\r\n gauge_expand: {},\r\n gauge_expand_duration: 50,\r\n // donut\r\n donut_label_show: true,\r\n donut_label_format: undefined,\r\n donut_label_threshold: 0.05,\r\n donut_label_ratio: undefined,\r\n donut_width: undefined,\r\n donut_title: '',\r\n donut_expand: {},\r\n donut_expand_duration: 50,\r\n donut_padAngle: 0,\r\n // spline\r\n spline_interpolation_type: 'cardinal',\r\n // stanford\r\n stanford_lines: [],\r\n stanford_regions: [],\r\n stanford_texts: [],\r\n stanford_scaleMin: undefined,\r\n stanford_scaleMax: undefined,\r\n stanford_scaleWidth: undefined,\r\n stanford_scaleFormat: undefined,\r\n stanford_scaleValues: undefined,\r\n stanford_colors: undefined,\r\n stanford_padding: {\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n },\r\n // region - region to change style\r\n regions: [],\r\n // tooltip - show when mouseover on each data\r\n tooltip_show: true,\r\n tooltip_grouped: true,\r\n tooltip_order: undefined,\r\n tooltip_format_title: undefined,\r\n tooltip_format_name: undefined,\r\n tooltip_format_value: undefined,\r\n tooltip_horizontal: undefined,\r\n tooltip_position: undefined,\r\n tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) {\r\n return this.getTooltipContent\r\n ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color)\r\n : '';\r\n },\r\n tooltip_init_show: false,\r\n tooltip_init_x: 0,\r\n tooltip_init_position: { top: '0px', left: '50px' },\r\n tooltip_onshow: function () { },\r\n tooltip_onhide: function () { },\r\n // title\r\n title_text: undefined,\r\n title_padding: {\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n },\r\n title_position: 'top-center'\r\n };\r\n Object.keys(this.additionalConfig).forEach(function (key) {\r\n config[key] = this.additionalConfig[key];\r\n }, this);\r\n return config;\r\n };\r\n ChartInternal.prototype.additionalConfig = {};\r\n ChartInternal.prototype.loadConfig = function (config) {\r\n var this_config = this.config, target, keys, read;\r\n function find() {\r\n var key = keys.shift();\r\n // console.log(\"key =>\", key, \", target =>\", target);\r\n if (key && target && typeof target === 'object' && key in target) {\r\n target = target[key];\r\n return find();\r\n }\r\n else if (!key) {\r\n return target;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n Object.keys(this_config).forEach(function (key) {\r\n target = config;\r\n keys = key.split('_');\r\n read = find();\r\n // console.log(\"CONFIG : \", key, read);\r\n if (isDefined(read)) {\r\n this_config[key] = read;\r\n }\r\n });\r\n };\n\n ChartInternal.prototype.convertUrlToData = function (url, mimeType, headers, keys, done) {\r\n var $$ = this, type = mimeType ? mimeType : 'csv', f, converter;\r\n if (type === 'json') {\r\n f = $$.d3.json;\r\n converter = $$.convertJsonToData;\r\n }\r\n else if (type === 'tsv') {\r\n f = $$.d3.tsv;\r\n converter = $$.convertXsvToData;\r\n }\r\n else {\r\n f = $$.d3.csv;\r\n converter = $$.convertXsvToData;\r\n }\r\n f(url, headers)\r\n .then(function (data) {\r\n done.call($$, converter.call($$, data, keys));\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n };\r\n ChartInternal.prototype.convertXsvToData = function (xsv) {\r\n var keys = xsv.columns, rows = xsv;\r\n if (rows.length === 0) {\r\n return {\r\n keys: keys,\r\n rows: [keys.reduce(function (row, key) {\r\n var _a;\r\n return Object.assign(row, (_a = {}, _a[key] = null, _a));\r\n }, {})]\r\n };\r\n }\r\n else {\r\n // [].concat() is to convert result into a plain array otherwise\r\n // test is not happy because rows have properties.\r\n return { keys: keys, rows: [].concat(xsv) };\r\n }\r\n };\r\n ChartInternal.prototype.convertJsonToData = function (json, keys) {\r\n var $$ = this, new_rows = [], targetKeys, data;\r\n if (keys) {\r\n // when keys specified, json would be an array that includes objects\r\n if (keys.x) {\r\n targetKeys = keys.value.concat(keys.x);\r\n $$.config.data_x = keys.x;\r\n }\r\n else {\r\n targetKeys = keys.value;\r\n }\r\n new_rows.push(targetKeys);\r\n json.forEach(function (o) {\r\n var new_row = [];\r\n targetKeys.forEach(function (key) {\r\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\r\n var v = $$.findValueInJson(o, key);\r\n if (isUndefined(v)) {\r\n v = null;\r\n }\r\n new_row.push(v);\r\n });\r\n new_rows.push(new_row);\r\n });\r\n data = $$.convertRowsToData(new_rows);\r\n }\r\n else {\r\n Object.keys(json).forEach(function (key) {\r\n new_rows.push([key].concat(json[key]));\r\n });\r\n data = $$.convertColumnsToData(new_rows);\r\n }\r\n return data;\r\n };\r\n /**\r\n * Finds value from the given nested object by the given path.\r\n * If it's not found, then this returns undefined.\r\n * @param {Object} object the object\r\n * @param {string} path the path\r\n */\r\n ChartInternal.prototype.findValueInJson = function (object, path) {\r\n if (path in object) {\r\n // If object has a key that contains . or [], return the key's value\r\n // instead of searching for an inner object.\r\n // See https://github.com/c3js/c3/issues/1691 for details.\r\n return object[path];\r\n }\r\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\r\n path = path.replace(/^\\./, ''); // strip a leading dot\r\n var pathArray = path.split('.');\r\n for (var i = 0; i < pathArray.length; ++i) {\r\n var k = pathArray[i];\r\n if (k in object) {\r\n object = object[k];\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n return object;\r\n };\r\n /**\r\n * Converts the rows to normalized data.\r\n * @param {any[][]} rows The row data\r\n * @return {Object}\r\n */\r\n ChartInternal.prototype.convertRowsToData = function (rows) {\r\n var newRows = [];\r\n var keys = rows[0];\r\n for (var i = 1; i < rows.length; i++) {\r\n var newRow = {};\r\n for (var j = 0; j < rows[i].length; j++) {\r\n if (isUndefined(rows[i][j])) {\r\n throw new Error('Source data is missing a component at (' + i + ',' + j + ')!');\r\n }\r\n newRow[keys[j]] = rows[i][j];\r\n }\r\n newRows.push(newRow);\r\n }\r\n return { keys: keys, rows: newRows };\r\n };\r\n /**\r\n * Converts the columns to normalized data.\r\n * @param {any[][]} columns The column data\r\n * @return {Object}\r\n */\r\n ChartInternal.prototype.convertColumnsToData = function (columns) {\r\n var newRows = [];\r\n var keys = [];\r\n for (var i = 0; i < columns.length; i++) {\r\n var key = columns[i][0];\r\n for (var j = 1; j < columns[i].length; j++) {\r\n if (isUndefined(newRows[j - 1])) {\r\n newRows[j - 1] = {};\r\n }\r\n if (isUndefined(columns[i][j])) {\r\n throw new Error('Source data is missing a component at (' + i + ',' + j + ')!');\r\n }\r\n newRows[j - 1][key] = columns[i][j];\r\n }\r\n keys.push(key);\r\n }\r\n return { keys: keys, rows: newRows };\r\n };\r\n /**\r\n * Converts the data format into the target format.\r\n * @param {!Object} data\r\n * @param {!Array} data.keys Ordered list of target IDs.\r\n * @param {!Array} data.rows Rows of data to convert.\r\n * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\r\n * @return {!Array}\r\n */\r\n ChartInternal.prototype.convertDataToTargets = function (data, appendXs) {\r\n var $$ = this, config = $$.config, targets, ids, xs, keys, epochs;\r\n // handles format where keys are not orderly provided\r\n if (isArray(data)) {\r\n keys = Object.keys(data[0]);\r\n }\r\n else {\r\n keys = data.keys;\r\n data = data.rows;\r\n }\r\n xs = keys.filter($$.isX, $$);\r\n if (!$$.isStanfordGraphType()) {\r\n ids = keys.filter($$.isNotX, $$);\r\n }\r\n else {\r\n epochs = keys.filter($$.isEpochs, $$);\r\n ids = keys.filter($$.isNotXAndNotEpochs, $$);\r\n if (xs.length !== 1 || epochs.length !== 1 || ids.length !== 1) {\r\n throw new Error(\"You must define the 'x' key name and the 'epochs' for Stanford Diagrams\");\r\n }\r\n }\r\n // save x for update data by load when custom x and c3.x API\r\n ids.forEach(function (id) {\r\n var xKey = $$.getXKey(id);\r\n if ($$.isCustomX() || $$.isTimeSeries()) {\r\n // if included in input data\r\n if (xs.indexOf(xKey) >= 0) {\r\n $$.data.xs[id] = (appendXs && $$.data.xs[id]\r\n ? $$.data.xs[id]\r\n : []).concat(data\r\n .map(function (d) {\r\n return d[xKey];\r\n })\r\n .filter(isValue)\r\n .map(function (rawX, i) {\r\n return $$.generateTargetX(rawX, id, i);\r\n }));\r\n }\r\n // if not included in input data, find from preloaded data of other id's x\r\n else if (config.data_x) {\r\n $$.data.xs[id] = $$.getOtherTargetXs();\r\n }\r\n // if not included in input data, find from preloaded data\r\n else if (notEmpty(config.data_xs)) {\r\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\r\n }\r\n // MEMO: if no x included, use same x of current will be used\r\n }\r\n else {\r\n $$.data.xs[id] = data.map(function (d, i) {\r\n return i;\r\n });\r\n }\r\n });\r\n // check x is defined\r\n ids.forEach(function (id) {\r\n if (!$$.data.xs[id]) {\r\n throw new Error('x is not defined for id = \"' + id + '\".');\r\n }\r\n });\r\n // convert to target\r\n targets = ids.map(function (id, index) {\r\n var convertedId = config.data_idConverter(id);\r\n return {\r\n id: convertedId,\r\n id_org: id,\r\n values: data\r\n .map(function (d, i) {\r\n var xKey = $$.getXKey(id), rawX = d[xKey], value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null, x, returnData;\r\n // use x as categories if custom x and categorized\r\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\r\n if (index === 0 && i === 0) {\r\n config.axis_x_categories = [];\r\n }\r\n x = config.axis_x_categories.indexOf(rawX);\r\n if (x === -1) {\r\n x = config.axis_x_categories.length;\r\n config.axis_x_categories.push(rawX);\r\n }\r\n }\r\n else {\r\n x = $$.generateTargetX(rawX, id, i);\r\n }\r\n // mark as x = undefined if value is undefined and filter to remove after mapped\r\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\r\n x = undefined;\r\n }\r\n returnData = { x: x, value: value, id: convertedId };\r\n if ($$.isStanfordGraphType()) {\r\n returnData.epochs = d[epochs];\r\n }\r\n return returnData;\r\n })\r\n .filter(function (v) {\r\n return isDefined(v.x);\r\n })\r\n };\r\n });\r\n // finish targets\r\n targets.forEach(function (t) {\r\n var i;\r\n // sort values by its x\r\n if (config.data_xSort) {\r\n t.values = t.values.sort(function (v1, v2) {\r\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity, x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\r\n return x1 - x2;\r\n });\r\n }\r\n // indexing each value\r\n i = 0;\r\n t.values.forEach(function (v) {\r\n v.index = i++;\r\n });\r\n // this needs to be sorted because its index and value.index is identical\r\n $$.data.xs[t.id].sort(function (v1, v2) {\r\n return v1 - v2;\r\n });\r\n });\r\n // cache information about values\r\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\r\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\r\n // set target types\r\n if (config.data_type) {\r\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\r\n return !(id in config.data_types);\r\n }), config.data_type);\r\n }\r\n // cache as original id keyed\r\n targets.forEach(function (d) {\r\n $$.addCache(d.id_org, d);\r\n });\r\n return targets;\r\n };\n\n ChartInternal.prototype.isEpochs = function (key) {\r\n var $$ = this, config = $$.config;\r\n return config.data_epochs && key === config.data_epochs;\r\n };\r\n ChartInternal.prototype.isX = function (key) {\r\n var $$ = this, config = $$.config;\r\n return ((config.data_x && key === config.data_x) ||\r\n (notEmpty(config.data_xs) && hasValue(config.data_xs, key)));\r\n };\r\n ChartInternal.prototype.isNotX = function (key) {\r\n return !this.isX(key);\r\n };\r\n ChartInternal.prototype.isNotXAndNotEpochs = function (key) {\r\n return !this.isX(key) && !this.isEpochs(key);\r\n };\r\n /**\r\n * Returns whether the normalized stack option is enabled or not.\r\n *\r\n * To be enabled it must also have data.groups defined.\r\n *\r\n * @return {boolean}\r\n */\r\n ChartInternal.prototype.isStackNormalized = function () {\r\n return this.config.data_stack_normalize && this.config.data_groups.length > 0;\r\n };\r\n /**\r\n * Returns whether the axis is normalized or not.\r\n *\r\n * An axis is normalized as long as one of its associated target\r\n * is normalized.\r\n *\r\n * @param axisId Axis ID (y or y2)\r\n * @return {Boolean}\r\n */\r\n ChartInternal.prototype.isAxisNormalized = function (axisId) {\r\n var $$ = this;\r\n if (!$$.isStackNormalized()) {\r\n // shortcut\r\n return false;\r\n }\r\n return $$.data.targets\r\n .filter(function (target) { return $$.axis.getId(target.id) === axisId; })\r\n .some(function (target) { return $$.isTargetNormalized(target.id); });\r\n };\r\n /**\r\n * Returns whether the values for this target ID is normalized or not.\r\n *\r\n * To be normalized the option needs to be enabled and target needs\r\n * to be defined in `data.groups`.\r\n *\r\n * @param targetId ID of the target\r\n * @return {Boolean} True if the target is normalized, false otherwise.\r\n */\r\n ChartInternal.prototype.isTargetNormalized = function (targetId) {\r\n var $$ = this;\r\n return ($$.isStackNormalized() &&\r\n $$.config.data_groups.some(function (group) { return group.includes(targetId); }));\r\n };\r\n ChartInternal.prototype.getXKey = function (id) {\r\n var $$ = this, config = $$.config;\r\n return config.data_x\r\n ? config.data_x\r\n : notEmpty(config.data_xs)\r\n ? config.data_xs[id]\r\n : null;\r\n };\r\n /**\r\n * Get sum of visible data per index for given axis.\r\n *\r\n * Expect axisId to be either 'y' or 'y2'.\r\n *\r\n * @private\r\n * @param axisId Compute sum for data associated to given axis.\r\n * @return {Array}\r\n */\r\n ChartInternal.prototype.getTotalPerIndex = function (axisId) {\r\n var $$ = this;\r\n if (!$$.isStackNormalized()) {\r\n return null;\r\n }\r\n var cached = $$.getFromCache('getTotalPerIndex');\r\n if (cached !== undefined) {\r\n return cached[axisId];\r\n }\r\n var sum = { y: [], y2: [] };\r\n $$.data.targets\r\n // keep only target that are normalized\r\n .filter(function (target) { return $$.isTargetNormalized(target.id); })\r\n // keep only target that are visible\r\n .filter(function (target) { return $$.isTargetToShow(target.id); })\r\n // compute sum per axis\r\n .forEach(function (target) {\r\n var sumByAxis = sum[$$.axis.getId(target.id)];\r\n target.values.forEach(function (v, i) {\r\n if (!sumByAxis[i]) {\r\n sumByAxis[i] = 0;\r\n }\r\n sumByAxis[i] += isNumber(v.value) ? v.value : 0;\r\n });\r\n });\r\n $$.addToCache('getTotalPerIndex', sum);\r\n return sum[axisId];\r\n };\r\n /**\r\n * Get sum of visible data.\r\n *\r\n * Should be used for normalised data only since all values\r\n * are expected to be positive.\r\n *\r\n * @private\r\n * @return {Number}\r\n */\r\n ChartInternal.prototype.getTotalDataSum = function () {\r\n var $$ = this;\r\n var cached = $$.getFromCache('getTotalDataSum');\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n var totalDataSum = flattenArray($$.data.targets\r\n .filter(function (target) { return $$.isTargetToShow(target.id); })\r\n .map(function (target) { return target.values; }))\r\n .map(function (d) { return d.value; })\r\n .reduce(function (p, c) { return p + c; }, 0);\r\n $$.addToCache('getTotalDataSum', totalDataSum);\r\n return totalDataSum;\r\n };\r\n ChartInternal.prototype.getXValuesOfXKey = function (key, targets) {\r\n var $$ = this, xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\r\n ids.forEach(function (id) {\r\n if ($$.getXKey(id) === key) {\r\n xValues = $$.data.xs[id];\r\n }\r\n });\r\n return xValues;\r\n };\r\n ChartInternal.prototype.getXValue = function (id, i) {\r\n var $$ = this;\r\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i])\r\n ? $$.data.xs[id][i]\r\n : i;\r\n };\r\n ChartInternal.prototype.getOtherTargetXs = function () {\r\n var $$ = this, idsForX = Object.keys($$.data.xs);\r\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\r\n };\r\n ChartInternal.prototype.getOtherTargetX = function (index) {\r\n var xs = this.getOtherTargetXs();\r\n return xs && index < xs.length ? xs[index] : null;\r\n };\r\n ChartInternal.prototype.addXs = function (xs) {\r\n var $$ = this;\r\n Object.keys(xs).forEach(function (id) {\r\n $$.config.data_xs[id] = xs[id];\r\n });\r\n };\r\n ChartInternal.prototype.addName = function (data) {\r\n var $$ = this, name;\r\n if (data) {\r\n name = $$.config.data_names[data.id];\r\n data.name = name !== undefined ? name : data.id;\r\n }\r\n return data;\r\n };\r\n ChartInternal.prototype.getValueOnIndex = function (values, index) {\r\n var valueOnIndex = values.filter(function (v) {\r\n return v.index === index;\r\n });\r\n return valueOnIndex.length ? valueOnIndex[0] : null;\r\n };\r\n ChartInternal.prototype.updateTargetX = function (targets, x) {\r\n var $$ = this;\r\n targets.forEach(function (t) {\r\n t.values.forEach(function (v, i) {\r\n v.x = $$.generateTargetX(x[i], t.id, i);\r\n });\r\n $$.data.xs[t.id] = x;\r\n });\r\n };\r\n ChartInternal.prototype.updateTargetXs = function (targets, xs) {\r\n var $$ = this;\r\n targets.forEach(function (t) {\r\n if (xs[t.id]) {\r\n $$.updateTargetX([t], xs[t.id]);\r\n }\r\n });\r\n };\r\n ChartInternal.prototype.generateTargetX = function (rawX, id, index) {\r\n var $$ = this, x;\r\n if ($$.isTimeSeries()) {\r\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\r\n }\r\n else if ($$.isCustomX() && !$$.isCategorized()) {\r\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\r\n }\r\n else {\r\n x = index;\r\n }\r\n return x;\r\n };\r\n ChartInternal.prototype.cloneTarget = function (target) {\r\n return {\r\n id: target.id,\r\n id_org: target.id_org,\r\n values: target.values.map(function (d) {\r\n return {\r\n x: d.x,\r\n value: d.value,\r\n id: d.id\r\n };\r\n })\r\n };\r\n };\r\n ChartInternal.prototype.getMaxDataCount = function () {\r\n var $$ = this;\r\n return $$.d3.max($$.data.targets, function (t) {\r\n return t.values.length;\r\n });\r\n };\r\n ChartInternal.prototype.mapToIds = function (targets) {\r\n return targets.map(function (d) {\r\n return d.id;\r\n });\r\n };\r\n ChartInternal.prototype.mapToTargetIds = function (ids) {\r\n var $$ = this;\r\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\r\n };\r\n ChartInternal.prototype.hasTarget = function (targets, id) {\r\n var ids = this.mapToIds(targets), i;\r\n for (i = 0; i < ids.length; i++) {\r\n if (ids[i] === id) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n ChartInternal.prototype.isTargetToShow = function (targetId) {\r\n return this.hiddenTargetIds.indexOf(targetId) < 0;\r\n };\r\n ChartInternal.prototype.isLegendToShow = function (targetId) {\r\n return this.hiddenLegendIds.indexOf(targetId) < 0;\r\n };\r\n /**\r\n * Returns only visible targets.\r\n *\r\n * This is the same as calling {@link filterTargetsToShow} on $$.data.targets.\r\n *\r\n * @return {Array}\r\n */\r\n ChartInternal.prototype.getTargetsToShow = function () {\r\n var $$ = this;\r\n return $$.filterTargetsToShow($$.data.targets);\r\n };\r\n ChartInternal.prototype.filterTargetsToShow = function (targets) {\r\n var $$ = this;\r\n return targets.filter(function (t) {\r\n return $$.isTargetToShow(t.id);\r\n });\r\n };\r\n /**\r\n * @return {Array} Returns all the targets attached to the chart, visible or not\r\n */\r\n ChartInternal.prototype.getTargets = function () {\r\n var $$ = this;\r\n return $$.data.targets;\r\n };\r\n ChartInternal.prototype.mapTargetsToUniqueXs = function (targets) {\r\n var $$ = this;\r\n var xs = $$.d3\r\n .set($$.d3.merge(targets.map(function (t) {\r\n return t.values.map(function (v) {\r\n return +v.x;\r\n });\r\n })))\r\n .values();\r\n xs = $$.isTimeSeries()\r\n ? xs.map(function (x) {\r\n return new Date(+x);\r\n })\r\n : xs.map(function (x) {\r\n return +x;\r\n });\r\n return xs.sort(function (a, b) {\r\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\r\n });\r\n };\r\n ChartInternal.prototype.addHiddenTargetIds = function (targetIds) {\r\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\r\n for (var i = 0; i < targetIds.length; i++) {\r\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\r\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\r\n }\r\n }\r\n this.resetCache();\r\n };\r\n ChartInternal.prototype.removeHiddenTargetIds = function (targetIds) {\r\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\r\n return targetIds.indexOf(id) < 0;\r\n });\r\n this.resetCache();\r\n };\r\n ChartInternal.prototype.addHiddenLegendIds = function (targetIds) {\r\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\r\n for (var i = 0; i < targetIds.length; i++) {\r\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\r\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\r\n }\r\n }\r\n };\r\n ChartInternal.prototype.removeHiddenLegendIds = function (targetIds) {\r\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\r\n return targetIds.indexOf(id) < 0;\r\n });\r\n };\r\n ChartInternal.prototype.getValuesAsIdKeyed = function (targets) {\r\n var ys = {};\r\n targets.forEach(function (t) {\r\n ys[t.id] = [];\r\n t.values.forEach(function (v) {\r\n ys[t.id].push(v.value);\r\n });\r\n });\r\n return ys;\r\n };\r\n ChartInternal.prototype.checkValueInTargets = function (targets, checker) {\r\n var ids = Object.keys(targets), i, j, values;\r\n for (i = 0; i < ids.length; i++) {\r\n values = targets[ids[i]].values;\r\n for (j = 0; j < values.length; j++) {\r\n if (checker(values[j].value)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n ChartInternal.prototype.hasNegativeValueInTargets = function (targets) {\r\n return this.checkValueInTargets(targets, function (v) {\r\n return v < 0;\r\n });\r\n };\r\n ChartInternal.prototype.hasPositiveValueInTargets = function (targets) {\r\n return this.checkValueInTargets(targets, function (v) {\r\n return v > 0;\r\n });\r\n };\r\n ChartInternal.prototype.isOrderDesc = function () {\r\n var config = this.config;\r\n return (typeof config.data_order === 'string' &&\r\n config.data_order.toLowerCase() === 'desc');\r\n };\r\n ChartInternal.prototype.isOrderAsc = function () {\r\n var config = this.config;\r\n return (typeof config.data_order === 'string' &&\r\n config.data_order.toLowerCase() === 'asc');\r\n };\r\n ChartInternal.prototype.getOrderFunction = function () {\r\n var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc();\r\n if (orderAsc || orderDesc) {\r\n var reducer = function (p, c) {\r\n return p + Math.abs(c.value);\r\n };\r\n return function (t1, t2) {\r\n var t1Sum = t1.values.reduce(reducer, 0), t2Sum = t2.values.reduce(reducer, 0);\r\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\r\n };\r\n }\r\n else if (isFunction(config.data_order)) {\r\n return config.data_order;\r\n }\r\n else if (isArray(config.data_order)) {\r\n var order = config.data_order;\r\n return function (t1, t2) {\r\n return order.indexOf(t1.id) - order.indexOf(t2.id);\r\n };\r\n }\r\n };\r\n ChartInternal.prototype.orderTargets = function (targets) {\r\n var fct = this.getOrderFunction();\r\n if (fct) {\r\n targets.sort(fct);\r\n }\r\n return targets;\r\n };\r\n /**\r\n * Returns all the values from the given targets at the given index.\r\n *\r\n * @param {Array} targets\r\n * @param {Number} index\r\n * @return {Array}\r\n */\r\n ChartInternal.prototype.filterByIndex = function (targets, index) {\r\n return this.d3.merge(targets.map(function (t) { return t.values.filter(function (v) { return v.index === index; }); }));\r\n };\r\n ChartInternal.prototype.filterByX = function (targets, x) {\r\n return this.d3\r\n .merge(targets.map(function (t) {\r\n return t.values;\r\n }))\r\n .filter(function (v) {\r\n return v.x - x === 0;\r\n });\r\n };\r\n ChartInternal.prototype.filterRemoveNull = function (data) {\r\n return data.filter(function (d) {\r\n return isValue(d.value);\r\n });\r\n };\r\n ChartInternal.prototype.filterByXDomain = function (targets, xDomain) {\r\n return targets.map(function (t) {\r\n return {\r\n id: t.id,\r\n id_org: t.id_org,\r\n values: t.values.filter(function (v) {\r\n return xDomain[0] <= v.x && v.x <= xDomain[1];\r\n })\r\n };\r\n });\r\n };\r\n ChartInternal.prototype.hasDataLabel = function () {\r\n var config = this.config;\r\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\r\n return true;\r\n }\r\n else if (typeof config.data_labels === 'object' &&\r\n notEmpty(config.data_labels)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n ChartInternal.prototype.getDataLabelLength = function (min, max, key) {\r\n var $$ = this, lengths = [0, 0], paddingCoef = 1.3;\r\n $$.selectChart\r\n .select('svg')\r\n .selectAll('.dummy')\r\n .data([min, max])\r\n .enter()\r\n .append('text')\r\n .text(function (d) {\r\n return $$.dataLabelFormat(d.id)(d);\r\n })\r\n .each(function (d, i) {\r\n lengths[i] = getBBox(this)[key] * paddingCoef;\r\n })\r\n .remove();\r\n return lengths;\r\n };\r\n /**\r\n * Returns true if the given data point is not arc type, otherwise false.\r\n * @param {Object} d The data point\r\n * @return {boolean}\r\n */\r\n ChartInternal.prototype.isNoneArc = function (d) {\r\n return this.hasTarget(this.data.targets, d.id);\r\n };\r\n /**\r\n * Returns true if the given data point is arc type, otherwise false.\r\n * @param {Object} d The data point\r\n * @return {boolean}\r\n */\r\n ChartInternal.prototype.isArc = function (d) {\r\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\r\n };\r\n /**\r\n * Find the closest point from the given pos among the given targets or\r\n * undefined if none satisfies conditions.\r\n *\r\n * @param {Array} targets\r\n * @param {Array} pos An [x,y] coordinate\r\n * @return {Object|undefined}\r\n */\r\n ChartInternal.prototype.findClosestFromTargets = function (targets, pos) {\r\n var $$ = this;\r\n // for each target, find the closest point\r\n var candidates = targets\r\n .map(function (t) {\r\n return $$.findClosest(t.values, pos, $$.config.tooltip_horizontal\r\n ? $$.horizontalDistance.bind($$)\r\n : $$.dist.bind($$), $$.config.point_sensitivity);\r\n })\r\n .filter(function (v) { return v; });\r\n // returns the closest of candidates\r\n if (candidates.length === 0) {\r\n return undefined;\r\n }\r\n else if (candidates.length === 1) {\r\n return candidates[0];\r\n }\r\n else {\r\n return $$.findClosest(candidates, pos, $$.dist.bind($$));\r\n }\r\n };\r\n /**\r\n * Find the closest point from the x value or undefined if none satisfies conditions.\r\n *\r\n * @param {Array} targets\r\n * @param {Array} x A value on X axis\r\n * @return {Object|undefined}\r\n */\r\n ChartInternal.prototype.findClosestFromTargetsByX = function (targets, x) {\r\n var closest;\r\n var diff;\r\n targets.forEach(function (t) {\r\n t.values.forEach(function (d) {\r\n var newDiff = Math.abs(x - d.x);\r\n if (diff === undefined || newDiff < diff) {\r\n closest = d;\r\n diff = newDiff;\r\n }\r\n });\r\n });\r\n return closest;\r\n };\r\n /**\r\n * Using given compute distance method, returns the closest data point from the\r\n * given position.\r\n *\r\n * Giving optionally a minimum distance to satisfy.\r\n *\r\n * @param {Array} dataPoints List of DataPoints\r\n * @param {Array} pos An [x,y] coordinate\r\n * @param {Function} computeDist Function to compute distance between 2 points\r\n * @param {Number} minDist Minimal distance to satisfy\r\n * @return {Object|undefined} Closest data point\r\n */\r\n ChartInternal.prototype.findClosest = function (dataPoints, pos, computeDist, minDist) {\r\n if (minDist === void 0) { minDist = Infinity; }\r\n var $$ = this;\r\n var closest;\r\n // find closest bar\r\n dataPoints\r\n .filter(function (v) { return v && $$.isBarType(v.id); })\r\n .forEach(function (v) {\r\n if (!closest) {\r\n var shape = $$.main\r\n .select('.' +\r\n CLASS.bars +\r\n $$.getTargetSelectorSuffix(v.id) +\r\n ' .' +\r\n CLASS.bar +\r\n '-' +\r\n v.index)\r\n .node();\r\n if ($$.isWithinBar(pos, shape)) {\r\n closest = v;\r\n }\r\n }\r\n });\r\n // find closest point from non-bar\r\n dataPoints\r\n .filter(function (v) { return v && !$$.isBarType(v.id); })\r\n .forEach(function (v) {\r\n var d = computeDist(v, pos);\r\n if (d < minDist) {\r\n minDist = d;\r\n closest = v;\r\n }\r\n });\r\n return closest;\r\n };\r\n ChartInternal.prototype.dist = function (data, pos) {\r\n var $$ = this, config = $$.config, xIndex = config.axis_rotated ? 1 : 0, yIndex = config.axis_rotated ? 0 : 1, y = $$.circleY(data, data.index), x = $$.x(data.x);\r\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\r\n };\r\n ChartInternal.prototype.horizontalDistance = function (data, pos) {\r\n var $$ = this, config = $$.config, xIndex = config.axis_rotated ? 1 : 0, x = $$.x(data.x);\r\n return Math.abs(x - pos[xIndex]);\r\n };\r\n ChartInternal.prototype.convertValuesToStep = function (values) {\r\n var converted = [].concat(values), i;\r\n if (!this.isCategorized()) {\r\n return values;\r\n }\r\n for (i = values.length + 1; 0 < i; i--) {\r\n converted[i] = converted[i - 1];\r\n }\r\n converted[0] = {\r\n x: converted[0].x - 1,\r\n value: converted[0].value,\r\n id: converted[0].id\r\n };\r\n converted[values.length + 1] = {\r\n x: converted[values.length].x + 1,\r\n value: converted[values.length].value,\r\n id: converted[values.length].id\r\n };\r\n return converted;\r\n };\r\n /**\r\n * Get ratio value\r\n *\r\n * @param {String} type Ratio for given type\r\n * @param {Object} d Data value object\r\n * @param {Boolean} asPercent Convert the return as percent or not\r\n * @return {Number} Ratio value\r\n * @private\r\n */\r\n ChartInternal.prototype.getRatio = function (type, d, asPercent) {\r\n if (asPercent === void 0) { asPercent = false; }\r\n var $$ = this;\r\n var api = $$.api;\r\n var ratio = 0;\r\n if (d && api.data.shown.call(api).length) {\r\n ratio = d.ratio || d.value;\r\n if (type === 'arc') {\r\n if ($$.hasType('gauge')) {\r\n ratio =\r\n (d.endAngle - d.startAngle) /\r\n (Math.PI * ($$.config.gauge_fullCircle ? 2 : 1));\r\n }\r\n else {\r\n var total = $$.getTotalDataSum();\r\n ratio = d.value / total;\r\n }\r\n }\r\n else if (type === 'index') {\r\n var total = $$.getTotalPerIndex($$.axis.getId(d.id));\r\n d.ratio =\r\n isNumber(d.value) && total && total[d.index] > 0\r\n ? d.value / total[d.index]\r\n : 0;\r\n ratio = d.ratio;\r\n }\r\n }\r\n return asPercent && ratio ? ratio * 100 : ratio;\r\n };\r\n ChartInternal.prototype.updateDataAttributes = function (name, attrs) {\r\n var $$ = this, config = $$.config, current = config['data_' + name];\r\n if (typeof attrs === 'undefined') {\r\n return current;\r\n }\r\n Object.keys(attrs).forEach(function (id) {\r\n current[id] = attrs[id];\r\n });\r\n $$.redraw({\r\n withLegend: true\r\n });\r\n return current;\r\n };\n\n ChartInternal.prototype.load = function (targets, args) {\r\n var $$ = this;\r\n if (targets) {\r\n // filter loading targets if needed\r\n if (args.filter) {\r\n targets = targets.filter(args.filter);\r\n }\r\n // set type if args.types || args.type specified\r\n if (args.type || args.types) {\r\n targets.forEach(function (t) {\r\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\r\n $$.setTargetType(t.id, type);\r\n });\r\n }\r\n // Update/Add data\r\n $$.data.targets.forEach(function (d) {\r\n for (var i = 0; i < targets.length; i++) {\r\n if (d.id === targets[i].id) {\r\n d.values = targets[i].values;\r\n targets.splice(i, 1);\r\n break;\r\n }\r\n }\r\n });\r\n $$.data.targets = $$.data.targets.concat(targets); // add remained\r\n }\r\n // Set targets\r\n $$.updateTargets($$.data.targets);\r\n // Redraw with new targets\r\n $$.redraw({\r\n withUpdateOrgXDomain: true,\r\n withUpdateXDomain: true,\r\n withLegend: true\r\n });\r\n if (args.done) {\r\n args.done();\r\n }\r\n };\r\n ChartInternal.prototype.loadFromArgs = function (args) {\r\n var $$ = this;\r\n $$.resetCache();\r\n if (args.data) {\r\n $$.load($$.convertDataToTargets(args.data), args);\r\n }\r\n else if (args.url) {\r\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\r\n $$.load($$.convertDataToTargets(data), args);\r\n });\r\n }\r\n else if (args.json) {\r\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\r\n }\r\n else if (args.rows) {\r\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\r\n }\r\n else if (args.columns) {\r\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\r\n }\r\n else {\r\n $$.load(null, args);\r\n }\r\n };\r\n ChartInternal.prototype.unload = function (targetIds, done) {\r\n var $$ = this;\r\n $$.resetCache();\r\n if (!done) {\r\n done = function () { };\r\n }\r\n // filter existing target\r\n targetIds = targetIds.filter(function (id) {\r\n return $$.hasTarget($$.data.targets, id);\r\n });\r\n // If no target, call done and return\r\n if (!targetIds || targetIds.length === 0) {\r\n done();\r\n return;\r\n }\r\n $$.svg\r\n .selectAll(targetIds.map(function (id) {\r\n return $$.selectorTarget(id);\r\n }))\r\n .transition()\r\n .style('opacity', 0)\r\n .remove()\r\n .call($$.endall, done);\r\n targetIds.forEach(function (id) {\r\n // Reset fadein for future load\r\n $$.withoutFadeIn[id] = false;\r\n // Remove target's elements\r\n if ($$.legend) {\r\n $$.legend\r\n .selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id))\r\n .remove();\r\n }\r\n // Remove target\r\n $$.data.targets = $$.data.targets.filter(function (t) {\r\n return t.id !== id;\r\n });\r\n });\r\n };\n\n ChartInternal.prototype.getYDomainMin = function (targets) {\r\n var $$ = this, config = $$.config, ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets), j, k, baseId, idsInGroup, id, hasNegativeValue;\r\n if (config.data_groups.length > 0) {\r\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\r\n for (j = 0; j < config.data_groups.length; j++) {\r\n // Determine baseId\r\n idsInGroup = config.data_groups[j].filter(function (id) {\r\n return ids.indexOf(id) >= 0;\r\n });\r\n if (idsInGroup.length === 0) {\r\n continue;\r\n }\r\n baseId = idsInGroup[0];\r\n // Consider negative values\r\n if (hasNegativeValue && ys[baseId]) {\r\n ys[baseId].forEach(function (v, i) {\r\n ys[baseId][i] = v < 0 ? v : 0;\r\n });\r\n }\r\n // Compute min\r\n for (k = 1; k < idsInGroup.length; k++) {\r\n id = idsInGroup[k];\r\n if (!ys[id]) {\r\n continue;\r\n }\r\n ys[id].forEach(function (v, i) {\r\n if ($$.axis.getId(id) === $$.axis.getId(baseId) &&\r\n ys[baseId] &&\r\n !(hasNegativeValue && +v > 0)) {\r\n ys[baseId][i] += +v;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return $$.d3.min(Object.keys(ys).map(function (key) {\r\n return $$.d3.min(ys[key]);\r\n }));\r\n };\r\n ChartInternal.prototype.getYDomainMax = function (targets) {\r\n var $$ = this, config = $$.config, ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets), j, k, baseId, idsInGroup, id, hasPositiveValue;\r\n if (config.data_groups.length > 0) {\r\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\r\n for (j = 0; j < config.data_groups.length; j++) {\r\n // Determine baseId\r\n idsInGroup = config.data_groups[j].filter(function (id) {\r\n return ids.indexOf(id) >= 0;\r\n });\r\n if (idsInGroup.length === 0) {\r\n continue;\r\n }\r\n baseId = idsInGroup[0];\r\n // Consider positive values\r\n if (hasPositiveValue && ys[baseId]) {\r\n ys[baseId].forEach(function (v, i) {\r\n ys[baseId][i] = v > 0 ? v : 0;\r\n });\r\n }\r\n // Compute max\r\n for (k = 1; k < idsInGroup.length; k++) {\r\n id = idsInGroup[k];\r\n if (!ys[id]) {\r\n continue;\r\n }\r\n ys[id].forEach(function (v, i) {\r\n if ($$.axis.getId(id) === $$.axis.getId(baseId) &&\r\n ys[baseId] &&\r\n !(hasPositiveValue && +v < 0)) {\r\n ys[baseId][i] += +v;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return $$.d3.max(Object.keys(ys).map(function (key) {\r\n return $$.d3.max(ys[key]);\r\n }));\r\n };\r\n ChartInternal.prototype.getYDomain = function (targets, axisId, xDomain) {\r\n var $$ = this, config = $$.config;\r\n if ($$.isAxisNormalized(axisId)) {\r\n return [0, 100];\r\n }\r\n var targetsByAxisId = targets.filter(function (t) {\r\n return $$.axis.getId(t.id) === axisId;\r\n }), yTargets = xDomain\r\n ? $$.filterByXDomain(targetsByAxisId, xDomain)\r\n : targetsByAxisId, yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min, yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max, yDomainMin = $$.getYDomainMin(yTargets), yDomainMax = $$.getYDomainMax(yTargets), domain, domainLength, padding_top, padding_bottom, center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center, yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative, isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) ||\r\n ($$.hasType('area', yTargets) && config.area_zerobased), isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted, showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated, showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\r\n // MEMO: avoid inverting domain unexpectedly\r\n yDomainMin = isValue(yMin)\r\n ? yMin\r\n : isValue(yMax)\r\n ? yDomainMin < yMax\r\n ? yDomainMin\r\n : yMax - 10\r\n : yDomainMin;\r\n yDomainMax = isValue(yMax)\r\n ? yMax\r\n : isValue(yMin)\r\n ? yMin < yDomainMax\r\n ? yDomainMax\r\n : yMin + 10\r\n : yDomainMax;\r\n if (yTargets.length === 0) {\r\n // use current domain if target of axisId is none\r\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\r\n }\r\n if (isNaN(yDomainMin)) {\r\n // set minimum to zero when not number\r\n yDomainMin = 0;\r\n }\r\n if (isNaN(yDomainMax)) {\r\n // set maximum to have same value as yDomainMin\r\n yDomainMax = yDomainMin;\r\n }\r\n if (yDomainMin === yDomainMax) {\r\n yDomainMin < 0 ? (yDomainMax = 0) : (yDomainMin = 0);\r\n }\r\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\r\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\r\n // Cancel zerobased if axis_*_min / axis_*_max specified\r\n if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) {\r\n isZeroBased = false;\r\n }\r\n // Bar/Area chart should be 0-based if all positive|negative\r\n if (isZeroBased) {\r\n if (isAllPositive) {\r\n yDomainMin = 0;\r\n }\r\n if (isAllNegative) {\r\n yDomainMax = 0;\r\n }\r\n }\r\n domainLength = Math.abs(yDomainMax - yDomainMin);\r\n padding_top = padding_bottom = domainLength * 0.1;\r\n if (typeof center !== 'undefined') {\r\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\r\n yDomainMax = center + yDomainAbs;\r\n yDomainMin = center - yDomainAbs;\r\n }\r\n // add padding for data label\r\n if (showHorizontalDataLabel) {\r\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\r\n diff = diffDomain($$.y.range());\r\n ratio = [lengths[0] / diff, lengths[1] / diff];\r\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\r\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\r\n }\r\n else if (showVerticalDataLabel) {\r\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\r\n var pixelsToAxisPadding = $$.getY(config[\"axis_\" + axisId + \"_type\"], \r\n // input domain as pixels\r\n [0, config.axis_rotated ? $$.width : $$.height], \r\n // output range as axis padding\r\n [0, domainLength]);\r\n padding_top += pixelsToAxisPadding(lengths[1]);\r\n padding_bottom += pixelsToAxisPadding(lengths[0]);\r\n }\r\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\r\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\r\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\r\n }\r\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\r\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\r\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\r\n }\r\n // Bar/Area chart should be 0-based if all positive|negative\r\n if (isZeroBased) {\r\n if (isAllPositive) {\r\n padding_bottom = yDomainMin;\r\n }\r\n if (isAllNegative) {\r\n padding_top = -yDomainMax;\r\n }\r\n }\r\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\r\n return isInverted ? domain.reverse() : domain;\r\n };\r\n ChartInternal.prototype.getXDomainMin = function (targets) {\r\n var $$ = this, config = $$.config;\r\n return isDefined(config.axis_x_min)\r\n ? $$.isTimeSeries()\r\n ? this.parseDate(config.axis_x_min)\r\n : config.axis_x_min\r\n : $$.d3.min(targets, function (t) {\r\n return $$.d3.min(t.values, function (v) {\r\n return v.x;\r\n });\r\n });\r\n };\r\n ChartInternal.prototype.getXDomainMax = function (targets) {\r\n var $$ = this, config = $$.config;\r\n return isDefined(config.axis_x_max)\r\n ? $$.isTimeSeries()\r\n ? this.parseDate(config.axis_x_max)\r\n : config.axis_x_max\r\n : $$.d3.max(targets, function (t) {\r\n return $$.d3.max(t.values, function (v) {\r\n return v.x;\r\n });\r\n });\r\n };\r\n ChartInternal.prototype.getXDomainPadding = function (domain) {\r\n var $$ = this, config = $$.config, diff = domain[1] - domain[0], maxDataCount, padding, paddingLeft, paddingRight;\r\n if ($$.isCategorized()) {\r\n padding = 0;\r\n }\r\n else if ($$.hasType('bar')) {\r\n maxDataCount = $$.getMaxDataCount();\r\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\r\n }\r\n else {\r\n padding = diff * 0.01;\r\n }\r\n if (typeof config.axis_x_padding === 'object' &&\r\n notEmpty(config.axis_x_padding)) {\r\n paddingLeft = isValue(config.axis_x_padding.left)\r\n ? config.axis_x_padding.left\r\n : padding;\r\n paddingRight = isValue(config.axis_x_padding.right)\r\n ? config.axis_x_padding.right\r\n : padding;\r\n }\r\n else if (typeof config.axis_x_padding === 'number') {\r\n paddingLeft = paddingRight = config.axis_x_padding;\r\n }\r\n else {\r\n paddingLeft = paddingRight = padding;\r\n }\r\n return { left: paddingLeft, right: paddingRight };\r\n };\r\n ChartInternal.prototype.getXDomain = function (targets) {\r\n var $$ = this, xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)], firstX = xDomain[0], lastX = xDomain[1], padding = $$.getXDomainPadding(xDomain), min = 0, max = 0;\r\n // show center of x domain if min and max are the same\r\n if (firstX - lastX === 0 && !$$.isCategorized()) {\r\n if ($$.isTimeSeries()) {\r\n firstX = new Date(firstX.getTime() * 0.5);\r\n lastX = new Date(lastX.getTime() * 1.5);\r\n }\r\n else {\r\n firstX = firstX === 0 ? 1 : firstX * 0.5;\r\n lastX = lastX === 0 ? -1 : lastX * 1.5;\r\n }\r\n }\r\n if (firstX || firstX === 0) {\r\n min = $$.isTimeSeries()\r\n ? new Date(firstX.getTime() - padding.left)\r\n : firstX - padding.left;\r\n }\r\n if (lastX || lastX === 0) {\r\n max = $$.isTimeSeries()\r\n ? new Date(lastX.getTime() + padding.right)\r\n : lastX + padding.right;\r\n }\r\n return [min, max];\r\n };\r\n ChartInternal.prototype.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\r\n var $$ = this, config = $$.config;\r\n if (withUpdateOrgXDomain) {\r\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\r\n $$.orgXDomain = $$.x.domain();\r\n if (config.zoom_enabled) {\r\n $$.zoom.update();\r\n }\r\n $$.subX.domain($$.x.domain());\r\n if ($$.brush) {\r\n $$.brush.updateScale($$.subX);\r\n }\r\n }\r\n if (withUpdateXDomain) {\r\n $$.x.domain(domain\r\n ? domain\r\n : !$$.brush || $$.brush.empty()\r\n ? $$.orgXDomain\r\n : $$.brush.selectionAsValue());\r\n }\r\n // Trim domain when too big by zoom mousemove event\r\n if (withTrim) {\r\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\r\n }\r\n return $$.x.domain();\r\n };\r\n ChartInternal.prototype.trimXDomain = function (domain) {\r\n var zoomDomain = this.getZoomDomain(), min = zoomDomain[0], max = zoomDomain[1];\r\n if (domain[0] <= min) {\r\n domain[1] = +domain[1] + (min - domain[0]);\r\n domain[0] = min;\r\n }\r\n if (max <= domain[1]) {\r\n domain[0] = +domain[0] - (domain[1] - max);\r\n domain[1] = max;\r\n }\r\n return domain;\r\n };\n\n ChartInternal.prototype.drag = function (mouse) {\r\n var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3;\r\n var sx, sy, mx, my, minX, maxX, minY, maxY;\r\n if ($$.hasArcType()) {\r\n return;\r\n }\r\n if (!config.data_selection_enabled) {\r\n return;\r\n } // do nothing if not selectable\r\n if (!config.data_selection_multiple) {\r\n return;\r\n } // skip when single selection because drag is used for multiple selection\r\n sx = $$.dragStart[0];\r\n sy = $$.dragStart[1];\r\n mx = mouse[0];\r\n my = mouse[1];\r\n minX = Math.min(sx, mx);\r\n maxX = Math.max(sx, mx);\r\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\r\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\r\n main\r\n .select('.' + CLASS.dragarea)\r\n .attr('x', minX)\r\n .attr('y', minY)\r\n .attr('width', maxX - minX)\r\n .attr('height', maxY - minY);\r\n // TODO: binary search when multiple xs\r\n main\r\n .selectAll('.' + CLASS.shapes)\r\n .selectAll('.' + CLASS.shape)\r\n .each(function (d, i) {\r\n if (!config.data_selection_isselectable(d)) {\r\n return;\r\n }\r\n var shape = d3.select(this), isSelected = shape.classed(CLASS.SELECTED), isIncluded = shape.classed(CLASS.INCLUDED), _x, _y, _w, _h, toggle, isWithin = false, box;\r\n if (shape.classed(CLASS.circle)) {\r\n _x = shape.attr('cx') * 1;\r\n _y = shape.attr('cy') * 1;\r\n toggle = $$.togglePoint;\r\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\r\n }\r\n else if (shape.classed(CLASS.bar)) {\r\n box = getPathBox(this);\r\n _x = box.x;\r\n _y = box.y;\r\n _w = box.width;\r\n _h = box.height;\r\n toggle = $$.togglePath;\r\n isWithin =\r\n !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\r\n }\r\n else {\r\n // line/area selection not supported yet\r\n return;\r\n }\r\n if (isWithin ^ isIncluded) {\r\n shape.classed(CLASS.INCLUDED, !isIncluded);\r\n // TODO: included/unincluded callback here\r\n shape.classed(CLASS.SELECTED, !isSelected);\r\n toggle.call($$, !isSelected, shape, d, i);\r\n }\r\n });\r\n };\r\n ChartInternal.prototype.dragstart = function (mouse) {\r\n var $$ = this, config = $$.config;\r\n if ($$.hasArcType()) {\r\n return;\r\n }\r\n if (!config.data_selection_enabled) {\r\n return;\r\n } // do nothing if not selectable\r\n $$.dragStart = mouse;\r\n $$.main\r\n .select('.' + CLASS.chart)\r\n .append('rect')\r\n .attr('class', CLASS.dragarea)\r\n .style('opacity', 0.1);\r\n $$.dragging = true;\r\n };\r\n ChartInternal.prototype.dragend = function () {\r\n var $$ = this, config = $$.config;\r\n if ($$.hasArcType()) {\r\n return;\r\n }\r\n if (!config.data_selection_enabled) {\r\n return;\r\n } // do nothing if not selectable\r\n $$.main\r\n .select('.' + CLASS.dragarea)\r\n .transition()\r\n .duration(100)\r\n .style('opacity', 0)\r\n .remove();\r\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\r\n $$.dragging = false;\r\n };\n\n ChartInternal.prototype.getYFormat = function (forArc) {\r\n var $$ = this, formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat, formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\r\n return function (v, ratio, id) {\r\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\r\n return format.call($$, v, ratio);\r\n };\r\n };\r\n ChartInternal.prototype.yFormat = function (v) {\r\n var $$ = this, config = $$.config, format = config.axis_y_tick_format\r\n ? config.axis_y_tick_format\r\n : $$.defaultValueFormat;\r\n return format(v);\r\n };\r\n ChartInternal.prototype.y2Format = function (v) {\r\n var $$ = this, config = $$.config, format = config.axis_y2_tick_format\r\n ? config.axis_y2_tick_format\r\n : $$.defaultValueFormat;\r\n return format(v);\r\n };\r\n ChartInternal.prototype.defaultValueFormat = function (v) {\r\n return isValue(v) ? +v : '';\r\n };\r\n ChartInternal.prototype.defaultArcValueFormat = function (v, ratio) {\r\n return (ratio * 100).toFixed(1) + '%';\r\n };\r\n ChartInternal.prototype.dataLabelFormat = function (targetId) {\r\n var $$ = this, data_labels = $$.config.data_labels, format, defaultFormat = function (v) {\r\n return isValue(v) ? +v : '';\r\n };\r\n // find format according to axis id\r\n if (typeof data_labels.format === 'function') {\r\n format = data_labels.format;\r\n }\r\n else if (typeof data_labels.format === 'object') {\r\n if (data_labels.format[targetId]) {\r\n format =\r\n data_labels.format[targetId] === true\r\n ? defaultFormat\r\n : data_labels.format[targetId];\r\n }\r\n else {\r\n format = function () {\r\n return '';\r\n };\r\n }\r\n }\r\n else {\r\n format = defaultFormat;\r\n }\r\n return format;\r\n };\n\n ChartInternal.prototype.initGrid = function () {\r\n var $$ = this, config = $$.config, d3 = $$.d3;\r\n $$.grid = $$.main\r\n .append('g')\r\n .attr('clip-path', $$.clipPathForGrid)\r\n .attr('class', CLASS.grid);\r\n if (config.grid_x_show) {\r\n $$.grid.append('g').attr('class', CLASS.xgrids);\r\n }\r\n if (config.grid_y_show) {\r\n $$.grid.append('g').attr('class', CLASS.ygrids);\r\n }\r\n if (config.grid_focus_show) {\r\n $$.grid\r\n .append('g')\r\n .attr('class', CLASS.xgridFocus)\r\n .append('line')\r\n .attr('class', CLASS.xgridFocus);\r\n }\r\n $$.xgrid = d3.selectAll([]);\r\n if (!config.grid_lines_front) {\r\n $$.initGridLines();\r\n }\r\n };\r\n ChartInternal.prototype.initGridLines = function () {\r\n var $$ = this, d3 = $$.d3;\r\n $$.gridLines = $$.main\r\n .append('g')\r\n .attr('clip-path', $$.clipPathForGrid)\r\n .attr('class', CLASS.grid + ' ' + CLASS.gridLines);\r\n $$.gridLines.append('g').attr('class', CLASS.xgridLines);\r\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\r\n $$.xgridLines = d3.selectAll([]);\r\n };\r\n ChartInternal.prototype.updateXGrid = function (withoutUpdate) {\r\n var $$ = this, config = $$.config, d3 = $$.d3, xgridData = $$.generateGridData(config.grid_x_type, $$.x), tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\r\n $$.xgridAttr = config.axis_rotated\r\n ? {\r\n x1: 0,\r\n x2: $$.width,\r\n y1: function (d) {\r\n return $$.x(d) - tickOffset;\r\n },\r\n y2: function (d) {\r\n return $$.x(d) - tickOffset;\r\n }\r\n }\r\n : {\r\n x1: function (d) {\r\n return $$.x(d) + tickOffset;\r\n },\r\n x2: function (d) {\r\n return $$.x(d) + tickOffset;\r\n },\r\n y1: 0,\r\n y2: $$.height\r\n };\r\n $$.xgridAttr.opacity = function () {\r\n var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\r\n return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\r\n };\r\n var xgrid = $$.main\r\n .select('.' + CLASS.xgrids)\r\n .selectAll('.' + CLASS.xgrid)\r\n .data(xgridData);\r\n var xgridEnter = xgrid\r\n .enter()\r\n .append('line')\r\n .attr('class', CLASS.xgrid)\r\n .attr('x1', $$.xgridAttr.x1)\r\n .attr('x2', $$.xgridAttr.x2)\r\n .attr('y1', $$.xgridAttr.y1)\r\n .attr('y2', $$.xgridAttr.y2)\r\n .style('opacity', 0);\r\n $$.xgrid = xgridEnter.merge(xgrid);\r\n if (!withoutUpdate) {\r\n $$.xgrid\r\n .attr('x1', $$.xgridAttr.x1)\r\n .attr('x2', $$.xgridAttr.x2)\r\n .attr('y1', $$.xgridAttr.y1)\r\n .attr('y2', $$.xgridAttr.y2)\r\n .style('opacity', $$.xgridAttr.opacity);\r\n }\r\n xgrid.exit().remove();\r\n };\r\n ChartInternal.prototype.updateYGrid = function () {\r\n var $$ = this, config = $$.config, gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\r\n var ygrid = $$.main\r\n .select('.' + CLASS.ygrids)\r\n .selectAll('.' + CLASS.ygrid)\r\n .data(gridValues);\r\n var ygridEnter = ygrid\r\n .enter()\r\n .append('line')\r\n // TODO: x1, x2, y1, y2, opacity need to be set here maybe\r\n .attr('class', CLASS.ygrid);\r\n $$.ygrid = ygridEnter.merge(ygrid);\r\n $$.ygrid\r\n .attr('x1', config.axis_rotated ? $$.y : 0)\r\n .attr('x2', config.axis_rotated ? $$.y : $$.width)\r\n .attr('y1', config.axis_rotated ? 0 : $$.y)\r\n .attr('y2', config.axis_rotated ? $$.height : $$.y);\r\n ygrid.exit().remove();\r\n $$.smoothLines($$.ygrid, 'grid');\r\n };\r\n ChartInternal.prototype.gridTextAnchor = function (d) {\r\n return d.position ? d.position : 'end';\r\n };\r\n ChartInternal.prototype.gridTextDx = function (d) {\r\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\r\n };\r\n ChartInternal.prototype.xGridTextX = function (d) {\r\n return d.position === 'start'\r\n ? -this.height\r\n : d.position === 'middle'\r\n ? -this.height / 2\r\n : 0;\r\n };\r\n ChartInternal.prototype.yGridTextX = function (d) {\r\n return d.position === 'start'\r\n ? 0\r\n : d.position === 'middle'\r\n ? this.width / 2\r\n : this.width;\r\n };\r\n ChartInternal.prototype.updateGrid = function (duration) {\r\n var $$ = this, main = $$.main, config = $$.config, xgridLine, xgridLineEnter, ygridLine, ygridLineEnter, xv = $$.xv.bind($$), yv = $$.yv.bind($$), xGridTextX = $$.xGridTextX.bind($$), yGridTextX = $$.yGridTextX.bind($$);\r\n // hide if arc type\r\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\r\n main.select('line.' + CLASS.xgridFocus).style('visibility', 'hidden');\r\n if (config.grid_x_show) {\r\n $$.updateXGrid();\r\n }\r\n xgridLine = main\r\n .select('.' + CLASS.xgridLines)\r\n .selectAll('.' + CLASS.xgridLine)\r\n .data(config.grid_x_lines);\r\n // enter\r\n xgridLineEnter = xgridLine\r\n .enter()\r\n .append('g')\r\n .attr('class', function (d) {\r\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\r\n });\r\n xgridLineEnter\r\n .append('line')\r\n .attr('x1', config.axis_rotated ? 0 : xv)\r\n .attr('x2', config.axis_rotated ? $$.width : xv)\r\n .attr('y1', config.axis_rotated ? xv : 0)\r\n .attr('y2', config.axis_rotated ? xv : $$.height)\r\n .style('opacity', 0);\r\n xgridLineEnter\r\n .append('text')\r\n .attr('text-anchor', $$.gridTextAnchor)\r\n .attr('transform', config.axis_rotated ? '' : 'rotate(-90)')\r\n .attr('x', config.axis_rotated ? yGridTextX : xGridTextX)\r\n .attr('y', xv)\r\n .attr('dx', $$.gridTextDx)\r\n .attr('dy', -5)\r\n .style('opacity', 0);\r\n // udpate\r\n $$.xgridLines = xgridLineEnter.merge(xgridLine);\r\n // done in d3.transition() of the end of this function\r\n // exit\r\n xgridLine\r\n .exit()\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', 0)\r\n .remove();\r\n // Y-Grid\r\n if (config.grid_y_show) {\r\n $$.updateYGrid();\r\n }\r\n ygridLine = main\r\n .select('.' + CLASS.ygridLines)\r\n .selectAll('.' + CLASS.ygridLine)\r\n .data(config.grid_y_lines);\r\n // enter\r\n ygridLineEnter = ygridLine\r\n .enter()\r\n .append('g')\r\n .attr('class', function (d) {\r\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\r\n });\r\n ygridLineEnter\r\n .append('line')\r\n .attr('x1', config.axis_rotated ? yv : 0)\r\n .attr('x2', config.axis_rotated ? yv : $$.width)\r\n .attr('y1', config.axis_rotated ? 0 : yv)\r\n .attr('y2', config.axis_rotated ? $$.height : yv)\r\n .style('opacity', 0);\r\n ygridLineEnter\r\n .append('text')\r\n .attr('text-anchor', $$.gridTextAnchor)\r\n .attr('transform', config.axis_rotated ? 'rotate(-90)' : '')\r\n .attr('x', config.axis_rotated ? xGridTextX : yGridTextX)\r\n .attr('y', yv)\r\n .attr('dx', $$.gridTextDx)\r\n .attr('dy', -5)\r\n .style('opacity', 0);\r\n // update\r\n $$.ygridLines = ygridLineEnter.merge(ygridLine);\r\n $$.ygridLines\r\n .select('line')\r\n .transition()\r\n .duration(duration)\r\n .attr('x1', config.axis_rotated ? yv : 0)\r\n .attr('x2', config.axis_rotated ? yv : $$.width)\r\n .attr('y1', config.axis_rotated ? 0 : yv)\r\n .attr('y2', config.axis_rotated ? $$.height : yv)\r\n .style('opacity', 1);\r\n $$.ygridLines\r\n .select('text')\r\n .transition()\r\n .duration(duration)\r\n .attr('x', config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$))\r\n .attr('y', yv)\r\n .text(function (d) {\r\n return d.text;\r\n })\r\n .style('opacity', 1);\r\n // exit\r\n ygridLine\r\n .exit()\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', 0)\r\n .remove();\r\n };\r\n ChartInternal.prototype.redrawGrid = function (withTransition, transition) {\r\n var $$ = this, config = $$.config, xv = $$.xv.bind($$), lines = $$.xgridLines.select('line'), texts = $$.xgridLines.select('text');\r\n return [\r\n (withTransition ? lines.transition(transition) : lines)\r\n .attr('x1', config.axis_rotated ? 0 : xv)\r\n .attr('x2', config.axis_rotated ? $$.width : xv)\r\n .attr('y1', config.axis_rotated ? xv : 0)\r\n .attr('y2', config.axis_rotated ? xv : $$.height)\r\n .style('opacity', 1),\r\n (withTransition ? texts.transition(transition) : texts)\r\n .attr('x', config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$))\r\n .attr('y', xv)\r\n .text(function (d) {\r\n return d.text;\r\n })\r\n .style('opacity', 1)\r\n ];\r\n };\r\n ChartInternal.prototype.showXGridFocus = function (selectedData) {\r\n var $$ = this, config = $$.config, dataToShow = selectedData.filter(function (d) {\r\n return d && isValue(d.value);\r\n }), focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus), xx = $$.xx.bind($$);\r\n if (!config.tooltip_show) {\r\n return;\r\n }\r\n // Hide when stanford plot exists\r\n if ($$.hasType('stanford') || $$.hasArcType()) {\r\n return;\r\n }\r\n focusEl\r\n .style('visibility', 'visible')\r\n .data([dataToShow[0]])\r\n .attr(config.axis_rotated ? 'y1' : 'x1', xx)\r\n .attr(config.axis_rotated ? 'y2' : 'x2', xx);\r\n $$.smoothLines(focusEl, 'grid');\r\n };\r\n ChartInternal.prototype.hideXGridFocus = function () {\r\n this.main.select('line.' + CLASS.xgridFocus).style('visibility', 'hidden');\r\n };\r\n ChartInternal.prototype.updateXgridFocus = function () {\r\n var $$ = this, config = $$.config;\r\n $$.main\r\n .select('line.' + CLASS.xgridFocus)\r\n .attr('x1', config.axis_rotated ? 0 : -10)\r\n .attr('x2', config.axis_rotated ? $$.width : -10)\r\n .attr('y1', config.axis_rotated ? -10 : 0)\r\n .attr('y2', config.axis_rotated ? -10 : $$.height);\r\n };\r\n ChartInternal.prototype.generateGridData = function (type, scale) {\r\n var $$ = this, gridData = [], xDomain, firstYear, lastYear, i, tickNum = $$.main\r\n .select('.' + CLASS.axisX)\r\n .selectAll('.tick')\r\n .size();\r\n if (type === 'year') {\r\n xDomain = $$.getXDomain();\r\n firstYear = xDomain[0].getFullYear();\r\n lastYear = xDomain[1].getFullYear();\r\n for (i = firstYear; i <= lastYear; i++) {\r\n gridData.push(new Date(i + '-01-01 00:00:00'));\r\n }\r\n }\r\n else {\r\n gridData = scale.ticks(10);\r\n if (gridData.length > tickNum) {\r\n // use only int\r\n gridData = gridData.filter(function (d) {\r\n return ('' + d).indexOf('.') < 0;\r\n });\r\n }\r\n }\r\n return gridData;\r\n };\r\n ChartInternal.prototype.getGridFilterToRemove = function (params) {\r\n return params\r\n ? function (line) {\r\n var found = false;\r\n [].concat(params).forEach(function (param) {\r\n if (('value' in param && line.value === param.value) ||\r\n ('class' in param && line['class'] === param['class'])) {\r\n found = true;\r\n }\r\n });\r\n return found;\r\n }\r\n : function () {\r\n return true;\r\n };\r\n };\r\n ChartInternal.prototype.removeGridLines = function (params, forX) {\r\n var $$ = this, config = $$.config, toRemove = $$.getGridFilterToRemove(params), toShow = function (line) {\r\n return !toRemove(line);\r\n }, classLines = forX ? CLASS.xgridLines : CLASS.ygridLines, classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\r\n $$.main\r\n .select('.' + classLines)\r\n .selectAll('.' + classLine)\r\n .filter(toRemove)\r\n .transition()\r\n .duration(config.transition_duration)\r\n .style('opacity', 0)\r\n .remove();\r\n if (forX) {\r\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\r\n }\r\n else {\r\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\r\n }\r\n };\n\n ChartInternal.prototype.initEventRect = function () {\r\n var $$ = this, config = $$.config;\r\n $$.main\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.eventRects)\r\n .style('fill-opacity', 0);\r\n $$.eventRect = $$.main\r\n .select('.' + CLASS.eventRects)\r\n .append('rect')\r\n .attr('class', CLASS.eventRect);\r\n // event rect handle zoom event as well\r\n if (config.zoom_enabled && $$.zoom) {\r\n $$.eventRect.call($$.zoom).on('dblclick.zoom', null);\r\n if (config.zoom_initialRange) {\r\n // WORKAROUND: Add transition to apply transform immediately when no subchart\r\n $$.eventRect\r\n .transition()\r\n .duration(0)\r\n .call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\r\n }\r\n }\r\n };\r\n ChartInternal.prototype.redrawEventRect = function () {\r\n var $$ = this, d3 = $$.d3, config = $$.config;\r\n function mouseout() {\r\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\r\n $$.hideXGridFocus();\r\n $$.hideTooltip();\r\n $$.unexpandCircles();\r\n $$.unexpandBars();\r\n }\r\n var isHoveringDataPoint = function (mouse, closest) {\r\n return closest &&\r\n ($$.isBarType(closest.id) ||\r\n $$.dist(closest, mouse) < config.point_sensitivity);\r\n };\r\n var withName = function (d) { return (d ? $$.addName(Object.assign({}, d)) : null); };\r\n // rects for mouseover\r\n $$.main\r\n .select('.' + CLASS.eventRects)\r\n .style('cursor', config.zoom_enabled\r\n ? config.axis_rotated\r\n ? 'ns-resize'\r\n : 'ew-resize'\r\n : null);\r\n $$.eventRect\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('width', $$.width)\r\n .attr('height', $$.height)\r\n .on('mouseout', config.interaction_enabled\r\n ? function () {\r\n if (!config) {\r\n return;\r\n } // chart is destroyed\r\n if ($$.hasArcType()) {\r\n return;\r\n }\r\n if ($$.mouseover) {\r\n config.data_onmouseout.call($$.api, $$.mouseover);\r\n $$.mouseover = undefined;\r\n }\r\n mouseout();\r\n }\r\n : null)\r\n .on('mousemove', config.interaction_enabled\r\n ? function () {\r\n // do nothing when dragging\r\n if ($$.dragging) {\r\n return;\r\n }\r\n var targetsToShow = $$.getTargetsToShow();\r\n // do nothing if arc type\r\n if ($$.hasArcType(targetsToShow)) {\r\n return;\r\n }\r\n var mouse = d3.mouse(this);\r\n var closest = withName($$.findClosestFromTargets(targetsToShow, mouse));\r\n var isMouseCloseToDataPoint = isHoveringDataPoint(mouse, closest);\r\n // ensure onmouseout is always called if mousemove switch between 2 targets\r\n if ($$.mouseover &&\r\n (!closest ||\r\n closest.id !== $$.mouseover.id ||\r\n closest.index !== $$.mouseover.index)) {\r\n config.data_onmouseout.call($$.api, $$.mouseover);\r\n $$.mouseover = undefined;\r\n }\r\n if (closest && !$$.mouseover) {\r\n config.data_onmouseover.call($$.api, closest);\r\n $$.mouseover = closest;\r\n }\r\n // show cursor as pointer if we're hovering a data point close enough\r\n $$.svg\r\n .select('.' + CLASS.eventRect)\r\n .style('cursor', isMouseCloseToDataPoint ? 'pointer' : null);\r\n // if tooltip not grouped, we want to display only data from closest data point\r\n var showSingleDataPoint = !config.tooltip_grouped || $$.hasType('stanford', targetsToShow);\r\n // find data to highlight\r\n var selectedData;\r\n if (showSingleDataPoint) {\r\n if (closest) {\r\n selectedData = [closest];\r\n }\r\n }\r\n else {\r\n var closestByX = void 0;\r\n if (closest) {\r\n // reuse closest value\r\n closestByX = closest;\r\n }\r\n else {\r\n // try to find the closest value by X values from the mouse position\r\n var mouseX = config.axis_rotated ? mouse[1] : mouse[0];\r\n closestByX = $$.findClosestFromTargetsByX(targetsToShow, $$.x.invert(mouseX));\r\n }\r\n // highlight all data for this 'x' value\r\n if (closestByX) {\r\n selectedData = $$.filterByX(targetsToShow, closestByX.x);\r\n }\r\n }\r\n // ensure we have data to show\r\n if (!selectedData || selectedData.length === 0) {\r\n return mouseout();\r\n }\r\n // inject names for each point\r\n selectedData = selectedData.map(withName);\r\n // show tooltip\r\n $$.showTooltip(selectedData, this);\r\n // expand points\r\n if (config.point_focus_expand_enabled) {\r\n $$.unexpandCircles();\r\n selectedData.forEach(function (d) {\r\n $$.expandCircles(d.index, d.id, false);\r\n });\r\n }\r\n // expand bars\r\n $$.unexpandBars();\r\n selectedData.forEach(function (d) {\r\n $$.expandBars(d.index, d.id, false);\r\n });\r\n // Show xgrid focus line\r\n $$.showXGridFocus(selectedData);\r\n }\r\n : null)\r\n .on('click', config.interaction_enabled\r\n ? function () {\r\n var targetsToShow = $$.getTargetsToShow();\r\n if ($$.hasArcType(targetsToShow)) {\r\n return;\r\n }\r\n var mouse = d3.mouse(this);\r\n var closest = withName($$.findClosestFromTargets(targetsToShow, mouse));\r\n if (!isHoveringDataPoint(mouse, closest)) {\r\n return;\r\n }\r\n // select if selection enabled\r\n var sameXData;\r\n if (!config.data_selection_grouped || $$.isStanfordType(closest)) {\r\n sameXData = [closest];\r\n }\r\n else {\r\n sameXData = $$.filterByX(targetsToShow, closest.x);\r\n }\r\n // toggle selected state\r\n sameXData.forEach(function (d) {\r\n $$.main\r\n .selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id))\r\n .selectAll('.' + CLASS.shape + '-' + d.index)\r\n .each(function () {\r\n if (config.data_selection_grouped ||\r\n $$.isWithinShape(this, d)) {\r\n $$.toggleShape(this, d, d.index);\r\n }\r\n });\r\n });\r\n // call data_onclick on the closest data point\r\n if (closest) {\r\n var shape = $$.main\r\n .selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id))\r\n .select('.' + CLASS.shape + '-' + closest.index);\r\n config.data_onclick.call($$.api, closest, shape.node());\r\n }\r\n }\r\n : null)\r\n .call(config.interaction_enabled && config.data_selection_draggable && $$.drag\r\n ? d3\r\n .drag()\r\n .on('drag', function () {\r\n $$.drag(d3.mouse(this));\r\n })\r\n .on('start', function () {\r\n $$.dragstart(d3.mouse(this));\r\n })\r\n .on('end', function () {\r\n $$.dragend();\r\n })\r\n : function () { });\r\n };\r\n ChartInternal.prototype.getMousePosition = function (data) {\r\n var $$ = this;\r\n return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\r\n };\r\n ChartInternal.prototype.dispatchEvent = function (type, mouse) {\r\n var $$ = this, selector = '.' + CLASS.eventRect, eventRect = $$.main.select(selector).node(), box = eventRect.getBoundingClientRect(), x = box.left + (mouse ? mouse[0] : 0), y = box.top + (mouse ? mouse[1] : 0), event = document.createEvent('MouseEvents');\r\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\r\n eventRect.dispatchEvent(event);\r\n };\n\n ChartInternal.prototype.initLegend = function () {\r\n var $$ = this;\r\n $$.legendItemTextBox = {};\r\n $$.legendHasRendered = false;\r\n $$.legend = $$.svg.append('g').attr('transform', $$.getTranslate('legend'));\r\n if (!$$.config.legend_show) {\r\n $$.legend.style('visibility', 'hidden');\r\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\r\n return;\r\n }\r\n // MEMO: call here to update legend box and tranlate for all\r\n // MEMO: translate will be updated by this, so transform not needed in updateLegend()\r\n $$.updateLegendWithDefaults();\r\n };\r\n ChartInternal.prototype.updateLegendWithDefaults = function () {\r\n var $$ = this;\r\n $$.updateLegend($$.mapToIds($$.data.targets), {\r\n withTransform: false,\r\n withTransitionForTransform: false,\r\n withTransition: false\r\n });\r\n };\r\n ChartInternal.prototype.updateSizeForLegend = function (legendHeight, legendWidth) {\r\n var $$ = this, config = $$.config, insetLegendPosition = {\r\n top: $$.isLegendTop\r\n ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5\r\n : $$.currentHeight -\r\n legendHeight -\r\n $$.getCurrentPaddingBottom() -\r\n config.legend_inset_y,\r\n left: $$.isLegendLeft\r\n ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5\r\n : $$.currentWidth -\r\n legendWidth -\r\n $$.getCurrentPaddingRight() -\r\n config.legend_inset_x +\r\n 0.5\r\n };\r\n $$.margin3 = {\r\n top: $$.isLegendRight\r\n ? 0\r\n : $$.isLegendInset\r\n ? insetLegendPosition.top\r\n : $$.currentHeight - legendHeight,\r\n right: NaN,\r\n bottom: 0,\r\n left: $$.isLegendRight\r\n ? $$.currentWidth - legendWidth\r\n : $$.isLegendInset\r\n ? insetLegendPosition.left\r\n : 0\r\n };\r\n };\r\n ChartInternal.prototype.transformLegend = function (withTransition) {\r\n var $$ = this;\r\n (withTransition ? $$.legend.transition() : $$.legend).attr('transform', $$.getTranslate('legend'));\r\n };\r\n ChartInternal.prototype.updateLegendStep = function (step) {\r\n this.legendStep = step;\r\n };\r\n ChartInternal.prototype.updateLegendItemWidth = function (w) {\r\n this.legendItemWidth = w;\r\n };\r\n ChartInternal.prototype.updateLegendItemHeight = function (h) {\r\n this.legendItemHeight = h;\r\n };\r\n ChartInternal.prototype.getLegendWidth = function () {\r\n var $$ = this;\r\n return $$.config.legend_show\r\n ? $$.isLegendRight || $$.isLegendInset\r\n ? $$.legendItemWidth * ($$.legendStep + 1)\r\n : $$.currentWidth\r\n : 0;\r\n };\r\n ChartInternal.prototype.getLegendHeight = function () {\r\n var $$ = this, h = 0;\r\n if ($$.config.legend_show) {\r\n if ($$.isLegendRight) {\r\n h = $$.currentHeight;\r\n }\r\n else {\r\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\r\n }\r\n }\r\n return h;\r\n };\r\n ChartInternal.prototype.opacityForLegend = function (legendItem) {\r\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\r\n };\r\n ChartInternal.prototype.opacityForUnfocusedLegend = function (legendItem) {\r\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\r\n };\r\n ChartInternal.prototype.toggleFocusLegend = function (targetIds, focus) {\r\n var $$ = this;\r\n targetIds = $$.mapToTargetIds(targetIds);\r\n $$.legend\r\n .selectAll('.' + CLASS.legendItem)\r\n .filter(function (id) {\r\n return targetIds.indexOf(id) >= 0;\r\n })\r\n .classed(CLASS.legendItemFocused, focus)\r\n .transition()\r\n .duration(100)\r\n .style('opacity', function () {\r\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\r\n return opacity.call($$, $$.d3.select(this));\r\n });\r\n };\r\n ChartInternal.prototype.revertLegend = function () {\r\n var $$ = this, d3 = $$.d3;\r\n $$.legend\r\n .selectAll('.' + CLASS.legendItem)\r\n .classed(CLASS.legendItemFocused, false)\r\n .transition()\r\n .duration(100)\r\n .style('opacity', function () {\r\n return $$.opacityForLegend(d3.select(this));\r\n });\r\n };\r\n ChartInternal.prototype.showLegend = function (targetIds) {\r\n var $$ = this, config = $$.config;\r\n if (!config.legend_show) {\r\n config.legend_show = true;\r\n $$.legend.style('visibility', 'visible');\r\n if (!$$.legendHasRendered) {\r\n $$.updateLegendWithDefaults();\r\n }\r\n }\r\n $$.removeHiddenLegendIds(targetIds);\r\n $$.legend\r\n .selectAll($$.selectorLegends(targetIds))\r\n .style('visibility', 'visible')\r\n .transition()\r\n .style('opacity', function () {\r\n return $$.opacityForLegend($$.d3.select(this));\r\n });\r\n };\r\n ChartInternal.prototype.hideLegend = function (targetIds) {\r\n var $$ = this, config = $$.config;\r\n if (config.legend_show && isEmpty(targetIds)) {\r\n config.legend_show = false;\r\n $$.legend.style('visibility', 'hidden');\r\n }\r\n $$.addHiddenLegendIds(targetIds);\r\n $$.legend\r\n .selectAll($$.selectorLegends(targetIds))\r\n .style('opacity', 0)\r\n .style('visibility', 'hidden');\r\n };\r\n ChartInternal.prototype.clearLegendItemTextBoxCache = function () {\r\n this.legendItemTextBox = {};\r\n };\r\n ChartInternal.prototype.updateLegend = function (targetIds, options, transitions) {\r\n var $$ = this, config = $$.config;\r\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\r\n var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = config.legend_item_tile_width + 5;\r\n var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0;\r\n var withTransition, withTransitionForTransform;\r\n var texts, rects, tiles, background;\r\n // Skip elements when their name is set to null\r\n targetIds = targetIds.filter(function (id) {\r\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\r\n });\r\n options = options || {};\r\n withTransition = getOption(options, 'withTransition', true);\r\n withTransitionForTransform = getOption(options, 'withTransitionForTransform', true);\r\n function getTextBox(textElement, id) {\r\n if (!$$.legendItemTextBox[id]) {\r\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\r\n }\r\n return $$.legendItemTextBox[id];\r\n }\r\n function updatePositions(textElement, id, index) {\r\n var reset = index === 0, isLast = index === targetIds.length - 1, box = getTextBox(textElement, id), itemWidth = box.width +\r\n tileWidth +\r\n (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) +\r\n config.legend_padding, itemHeight = box.height + paddingTop, itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth, areaLength = $$.isLegendRight || $$.isLegendInset\r\n ? $$.getLegendHeight()\r\n : $$.getLegendWidth(), margin, maxLength;\r\n // MEMO: care about condifion of step, totalLength\r\n function updateValues(id, withoutStep) {\r\n if (!withoutStep) {\r\n margin = (areaLength - totalLength - itemLength) / 2;\r\n if (margin < posMin) {\r\n margin = (areaLength - itemLength) / 2;\r\n totalLength = 0;\r\n step++;\r\n }\r\n }\r\n steps[id] = step;\r\n margins[step] = $$.isLegendInset ? 10 : margin;\r\n offsets[id] = totalLength;\r\n totalLength += itemLength;\r\n }\r\n if (reset) {\r\n totalLength = 0;\r\n step = 0;\r\n maxWidth = 0;\r\n maxHeight = 0;\r\n }\r\n if (config.legend_show && !$$.isLegendToShow(id)) {\r\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\r\n return;\r\n }\r\n widths[id] = itemWidth;\r\n heights[id] = itemHeight;\r\n if (!maxWidth || itemWidth >= maxWidth) {\r\n maxWidth = itemWidth;\r\n }\r\n if (!maxHeight || itemHeight >= maxHeight) {\r\n maxHeight = itemHeight;\r\n }\r\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\r\n if (config.legend_equally) {\r\n Object.keys(widths).forEach(function (id) {\r\n widths[id] = maxWidth;\r\n });\r\n Object.keys(heights).forEach(function (id) {\r\n heights[id] = maxHeight;\r\n });\r\n margin = (areaLength - maxLength * targetIds.length) / 2;\r\n if (margin < posMin) {\r\n totalLength = 0;\r\n step = 0;\r\n targetIds.forEach(function (id) {\r\n updateValues(id);\r\n });\r\n }\r\n else {\r\n updateValues(id, true);\r\n }\r\n }\r\n else {\r\n updateValues(id);\r\n }\r\n }\r\n if ($$.isLegendInset) {\r\n step = config.legend_inset_step\r\n ? config.legend_inset_step\r\n : targetIds.length;\r\n $$.updateLegendStep(step);\r\n }\r\n if ($$.isLegendRight) {\r\n xForLegend = function (id) {\r\n return maxWidth * steps[id];\r\n };\r\n yForLegend = function (id) {\r\n return margins[steps[id]] + offsets[id];\r\n };\r\n }\r\n else if ($$.isLegendInset) {\r\n xForLegend = function (id) {\r\n return maxWidth * steps[id] + 10;\r\n };\r\n yForLegend = function (id) {\r\n return margins[steps[id]] + offsets[id];\r\n };\r\n }\r\n else {\r\n xForLegend = function (id) {\r\n return margins[steps[id]] + offsets[id];\r\n };\r\n yForLegend = function (id) {\r\n return maxHeight * steps[id];\r\n };\r\n }\r\n xForLegendText = function (id, i) {\r\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\r\n };\r\n yForLegendText = function (id, i) {\r\n return yForLegend(id, i) + 9;\r\n };\r\n xForLegendRect = function (id, i) {\r\n return xForLegend(id, i);\r\n };\r\n yForLegendRect = function (id, i) {\r\n return yForLegend(id, i) - 5;\r\n };\r\n x1ForLegendTile = function (id, i) {\r\n return xForLegend(id, i) - 2;\r\n };\r\n x2ForLegendTile = function (id, i) {\r\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\r\n };\r\n yForLegendTile = function (id, i) {\r\n return yForLegend(id, i) + 4;\r\n };\r\n // Define g for legend area\r\n l = $$.legend\r\n .selectAll('.' + CLASS.legendItem)\r\n .data(targetIds)\r\n .enter()\r\n .append('g')\r\n .attr('class', function (id) {\r\n return $$.generateClass(CLASS.legendItem, id);\r\n })\r\n .style('visibility', function (id) {\r\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\r\n })\r\n .style('cursor', function () {\r\n return config.interaction_enabled ? 'pointer' : 'auto';\r\n })\r\n .on('click', config.interaction_enabled\r\n ? function (id) {\r\n if (config.legend_item_onclick) {\r\n config.legend_item_onclick.call($$, id);\r\n }\r\n else {\r\n if ($$.d3.event.altKey) {\r\n $$.api.hide();\r\n $$.api.show(id);\r\n }\r\n else {\r\n $$.api.toggle(id);\r\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\r\n }\r\n }\r\n }\r\n : null)\r\n .on('mouseover', config.interaction_enabled\r\n ? function (id) {\r\n if (config.legend_item_onmouseover) {\r\n config.legend_item_onmouseover.call($$, id);\r\n }\r\n else {\r\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\r\n if (!$$.transiting && $$.isTargetToShow(id)) {\r\n $$.api.focus(id);\r\n }\r\n }\r\n }\r\n : null)\r\n .on('mouseout', config.interaction_enabled\r\n ? function (id) {\r\n if (config.legend_item_onmouseout) {\r\n config.legend_item_onmouseout.call($$, id);\r\n }\r\n else {\r\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\r\n $$.api.revert();\r\n }\r\n }\r\n : null);\r\n l.append('text')\r\n .text(function (id) {\r\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\r\n })\r\n .each(function (id, i) {\r\n updatePositions(this, id, i);\r\n })\r\n .style('pointer-events', 'none')\r\n .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)\r\n .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\r\n l.append('rect')\r\n .attr('class', CLASS.legendItemEvent)\r\n .style('fill-opacity', 0)\r\n .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200)\r\n .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\r\n l.append('line')\r\n .attr('class', CLASS.legendItemTile)\r\n .style('stroke', $$.color)\r\n .style('pointer-events', 'none')\r\n .attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200)\r\n .attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\r\n .attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200)\r\n .attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\r\n .attr('stroke-width', config.legend_item_tile_height);\r\n // Set background for inset legend\r\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\r\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\r\n background = $$.legend\r\n .insert('g', '.' + CLASS.legendItem)\r\n .attr('class', CLASS.legendBackground)\r\n .append('rect');\r\n }\r\n texts = $$.legend\r\n .selectAll('text')\r\n .data(targetIds)\r\n .text(function (id) {\r\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\r\n }) // MEMO: needed for update\r\n .each(function (id, i) {\r\n updatePositions(this, id, i);\r\n });\r\n (withTransition ? texts.transition() : texts)\r\n .attr('x', xForLegendText)\r\n .attr('y', yForLegendText);\r\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\r\n (withTransition ? rects.transition() : rects)\r\n .attr('width', function (id) {\r\n return widths[id];\r\n })\r\n .attr('height', function (id) {\r\n return heights[id];\r\n })\r\n .attr('x', xForLegendRect)\r\n .attr('y', yForLegendRect);\r\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\r\n (withTransition ? tiles.transition() : tiles)\r\n .style('stroke', $$.levelColor\r\n ? function (id) {\r\n return $$.levelColor($$.cache[id].values.reduce(function (total, item) {\r\n return total + item.value;\r\n }, 0));\r\n }\r\n : $$.color)\r\n .attr('x1', x1ForLegendTile)\r\n .attr('y1', yForLegendTile)\r\n .attr('x2', x2ForLegendTile)\r\n .attr('y2', yForLegendTile);\r\n if (background) {\r\n (withTransition ? background.transition() : background)\r\n .attr('height', $$.getLegendHeight() - 12)\r\n .attr('width', maxWidth * (step + 1) + 10);\r\n }\r\n // toggle legend state\r\n $$.legend\r\n .selectAll('.' + CLASS.legendItem)\r\n .classed(CLASS.legendItemHidden, function (id) {\r\n return !$$.isTargetToShow(id);\r\n });\r\n // Update all to reflect change of legend\r\n $$.updateLegendItemWidth(maxWidth);\r\n $$.updateLegendItemHeight(maxHeight);\r\n $$.updateLegendStep(step);\r\n // Update size and scale\r\n $$.updateSizes();\r\n $$.updateScales();\r\n $$.updateSvgSize();\r\n // Update g positions\r\n $$.transformAll(withTransitionForTransform, transitions);\r\n $$.legendHasRendered = true;\r\n };\n\n ChartInternal.prototype.initRegion = function () {\r\n var $$ = this;\r\n $$.region = $$.main\r\n .append('g')\r\n .attr('clip-path', $$.clipPath)\r\n .attr('class', CLASS.regions);\r\n };\r\n ChartInternal.prototype.updateRegion = function (duration) {\r\n var $$ = this, config = $$.config;\r\n // hide if arc type\r\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\r\n var mainRegion = $$.main\r\n .select('.' + CLASS.regions)\r\n .selectAll('.' + CLASS.region)\r\n .data(config.regions);\r\n var g = mainRegion.enter().append('g');\r\n g.append('rect')\r\n .attr('x', $$.regionX.bind($$))\r\n .attr('y', $$.regionY.bind($$))\r\n .attr('width', $$.regionWidth.bind($$))\r\n .attr('height', $$.regionHeight.bind($$))\r\n .style('fill-opacity', function (d) {\r\n return isValue(d.opacity) ? d.opacity : 0.1;\r\n });\r\n g.append('text').text($$.labelRegion.bind($$));\r\n $$.mainRegion = g.merge(mainRegion).attr('class', $$.classRegion.bind($$));\r\n mainRegion\r\n .exit()\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', 0)\r\n .remove();\r\n };\r\n ChartInternal.prototype.redrawRegion = function (withTransition, transition) {\r\n var $$ = this, regions = $$.mainRegion, regionLabels = $$.mainRegion.selectAll('text');\r\n return [\r\n (withTransition ? regions.transition(transition) : regions)\r\n .attr('x', $$.regionX.bind($$))\r\n .attr('y', $$.regionY.bind($$))\r\n .attr('width', $$.regionWidth.bind($$))\r\n .attr('height', $$.regionHeight.bind($$))\r\n .style('fill-opacity', function (d) {\r\n return isValue(d.opacity) ? d.opacity : 0.1;\r\n }),\r\n (withTransition ? regionLabels.transition(transition) : regionLabels)\r\n .attr('x', $$.labelOffsetX.bind($$))\r\n .attr('y', $$.labelOffsetY.bind($$))\r\n .attr('transform', $$.labelTransform.bind($$))\r\n .attr('style', 'text-anchor: left;')\r\n ];\r\n };\r\n ChartInternal.prototype.regionX = function (d) {\r\n var $$ = this, config = $$.config, xPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\r\n if (d.axis === 'y' || d.axis === 'y2') {\r\n xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0;\r\n }\r\n else {\r\n xPos = config.axis_rotated\r\n ? 0\r\n : 'start' in d\r\n ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start)\r\n : 0;\r\n }\r\n return xPos;\r\n };\r\n ChartInternal.prototype.regionY = function (d) {\r\n var $$ = this, config = $$.config, yPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\r\n if (d.axis === 'y' || d.axis === 'y2') {\r\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\r\n }\r\n else {\r\n yPos = config.axis_rotated\r\n ? 'start' in d\r\n ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start)\r\n : 0\r\n : 0;\r\n }\r\n return yPos;\r\n };\r\n ChartInternal.prototype.regionWidth = function (d) {\r\n var $$ = this, config = $$.config, start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\r\n if (d.axis === 'y' || d.axis === 'y2') {\r\n end = config.axis_rotated\r\n ? 'end' in d\r\n ? yScale(d.end)\r\n : $$.width\r\n : $$.width;\r\n }\r\n else {\r\n end = config.axis_rotated\r\n ? $$.width\r\n : 'end' in d\r\n ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end)\r\n : $$.width;\r\n }\r\n return end < start ? 0 : end - start;\r\n };\r\n ChartInternal.prototype.regionHeight = function (d) {\r\n var $$ = this, config = $$.config, start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\r\n if (d.axis === 'y' || d.axis === 'y2') {\r\n end = config.axis_rotated\r\n ? $$.height\r\n : 'start' in d\r\n ? yScale(d.start)\r\n : $$.height;\r\n }\r\n else {\r\n end = config.axis_rotated\r\n ? 'end' in d\r\n ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end)\r\n : $$.height\r\n : $$.height;\r\n }\r\n return end < start ? 0 : end - start;\r\n };\r\n ChartInternal.prototype.isRegionOnX = function (d) {\r\n return !d.axis || d.axis === 'x';\r\n };\r\n ChartInternal.prototype.labelRegion = function (d) {\r\n return 'label' in d ? d.label : '';\r\n };\r\n ChartInternal.prototype.labelTransform = function (d) {\r\n return 'vertical' in d && d.vertical ? 'rotate(90)' : '';\r\n };\r\n ChartInternal.prototype.labelOffsetX = function (d) {\r\n var paddingX = 'paddingX' in d ? d.paddingX : 3;\r\n var paddingY = 'paddingY' in d ? d.paddingY : 3;\r\n return 'vertical' in d && d.vertical\r\n ? this.regionY(d) + paddingY\r\n : this.regionX(d) + paddingX;\r\n };\r\n ChartInternal.prototype.labelOffsetY = function (d) {\r\n var paddingX = 'paddingX' in d ? d.paddingX : 3;\r\n var paddingY = 'paddingY' in d ? d.paddingY : 3;\r\n return 'vertical' in d && d.vertical\r\n ? -(this.regionX(d) + paddingX)\r\n : this.regionY(d) + 10 + paddingY;\r\n };\n\n function c3LogScale(d3, linearScale, logScale) {\r\n var PROJECTION = [0.01, 10];\r\n if (!linearScale) {\r\n linearScale = d3.scaleLinear();\r\n linearScale.range(PROJECTION);\r\n }\r\n if (!logScale) {\r\n logScale = d3.scaleLog();\r\n logScale.domain(PROJECTION);\r\n logScale.nice();\r\n }\r\n // copied from https://github.com/compute-io/logspace\r\n function logspace(a, b, len) {\r\n var arr, end, tmp, d;\r\n if (arguments.length < 3) {\r\n len = 10;\r\n }\r\n else {\r\n if (len === 0) {\r\n return [];\r\n }\r\n }\r\n // Calculate the increment:\r\n end = len - 1;\r\n d = (b - a) / end;\r\n // Build the output array...\r\n arr = new Array(len);\r\n tmp = a;\r\n arr[0] = Math.pow(10, tmp);\r\n for (var i = 1; i < end; i++) {\r\n tmp += d;\r\n arr[i] = Math.pow(10, tmp);\r\n }\r\n arr[end] = Math.pow(10, b);\r\n return arr;\r\n }\r\n function scale(x) {\r\n return logScale(linearScale(x));\r\n }\r\n scale.domain = function (x) {\r\n if (!arguments.length) {\r\n return linearScale.domain();\r\n }\r\n linearScale.domain(x);\r\n return scale;\r\n };\r\n scale.range = function (x) {\r\n if (!arguments.length) {\r\n return logScale.range();\r\n }\r\n logScale.range(x);\r\n return scale;\r\n };\r\n scale.ticks = function (m) {\r\n return logspace(-2, 1, m || 10).map(function (v) {\r\n return linearScale.invert(v);\r\n });\r\n };\r\n scale.copy = function () {\r\n return c3LogScale(d3, linearScale.copy(), logScale.copy());\r\n };\r\n return scale;\r\n }\r\n ChartInternal.prototype.getScale = function (min, max, forTimeseries) {\r\n return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([\r\n min,\r\n max\r\n ]);\r\n };\r\n ChartInternal.prototype.getX = function (min, max, domain, offset) {\r\n var $$ = this, scale = $$.getScale(min, max, $$.isTimeSeries()), _scale = domain ? scale.domain(domain) : scale, key;\r\n // Define customized scale if categorized axis\r\n if ($$.isCategorized()) {\r\n offset =\r\n offset ||\r\n function () {\r\n return 0;\r\n };\r\n scale = function (d, raw) {\r\n var v = _scale(d) + offset(d);\r\n return raw ? v : Math.ceil(v);\r\n };\r\n }\r\n else {\r\n scale = function (d, raw) {\r\n var v = _scale(d);\r\n return raw ? v : Math.ceil(v);\r\n };\r\n }\r\n // define functions\r\n for (key in _scale) {\r\n scale[key] = _scale[key];\r\n }\r\n scale.orgDomain = function () {\r\n return _scale.domain();\r\n };\r\n // define custom domain() for categorized axis\r\n if ($$.isCategorized()) {\r\n scale.domain = function (domain) {\r\n if (!arguments.length) {\r\n domain = this.orgDomain();\r\n return [domain[0], domain[1] + 1];\r\n }\r\n _scale.domain(domain);\r\n return scale;\r\n };\r\n }\r\n return scale;\r\n };\r\n /**\r\n * Creates and configures a D3 scale instance for the given type.\r\n *\r\n * By defaults it returns a Linear scale.\r\n *\r\n * @param {String} type Type of d3-scale to create. Type can be 'linear', 'time', 'timeseries' or 'log'.\r\n * @param {Array} domain The scale domain such as [from, to]\r\n * @param {Array} range The scale's range such as [from, to]\r\n *\r\n * @return A d3-scale instance\r\n */\r\n ChartInternal.prototype.getY = function (type, domain, range) {\r\n var scale;\r\n if (type === 'timeseries' || type === 'time') {\r\n scale = this.d3.scaleTime();\r\n }\r\n else if (type === 'log') {\r\n scale = c3LogScale(this.d3);\r\n }\r\n else if (type === 'linear' || type === undefined) {\r\n scale = this.d3.scaleLinear();\r\n }\r\n else {\r\n throw new Error(\"Invalid Y axis type: \\\"\" + type + \"\\\"\");\r\n }\r\n if (domain) {\r\n scale.domain(domain);\r\n }\r\n if (range) {\r\n scale.range(range);\r\n }\r\n return scale;\r\n };\r\n ChartInternal.prototype.getYScale = function (id) {\r\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\r\n };\r\n ChartInternal.prototype.getSubYScale = function (id) {\r\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\r\n };\r\n ChartInternal.prototype.updateScales = function () {\r\n var $$ = this, config = $$.config, forInit = !$$.x;\r\n // update edges\r\n $$.xMin = config.axis_rotated ? 1 : 0;\r\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\r\n $$.yMin = config.axis_rotated ? 0 : $$.height;\r\n $$.yMax = config.axis_rotated ? $$.width : 1;\r\n $$.subXMin = $$.xMin;\r\n $$.subXMax = $$.xMax;\r\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\r\n $$.subYMax = config.axis_rotated ? $$.width2 : 1;\r\n // update scales\r\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\r\n return $$.xAxis.tickOffset();\r\n });\r\n $$.y = $$.getY(config.axis_y_type, forInit ? config.axis_y_default : $$.y.domain(), [$$.yMin, $$.yMax]);\r\n $$.y2 = $$.getY(config.axis_y2_type, forInit ? config.axis_y2_default : $$.y2.domain(), [$$.yMin, $$.yMax]);\r\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\r\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\r\n });\r\n $$.subY = $$.getY(config.axis_y_type, forInit ? config.axis_y_default : $$.subY.domain(), [$$.subYMin, $$.subYMax]);\r\n $$.subY2 = $$.getY(config.axis_y2_type, forInit ? config.axis_y2_default : $$.subY2.domain(), [$$.subYMin, $$.subYMax]);\r\n // update axes\r\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\r\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\r\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\r\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\r\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\r\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\r\n $$.yAxis = $$.axis.getYAxis('y', $$.y, $$.yOrient, $$.yAxisTickValues, config.axis_y_tick_outer);\r\n $$.y2Axis = $$.axis.getYAxis('y2', $$.y2, $$.y2Orient, $$.y2AxisTickValues, config.axis_y2_tick_outer);\r\n // Set initialized scales to brush and zoom\r\n if (!forInit) {\r\n if ($$.brush) {\r\n $$.brush.updateScale($$.subX);\r\n }\r\n }\r\n // update for arc\r\n if ($$.updateArc) {\r\n $$.updateArc();\r\n }\r\n };\n\n ChartInternal.prototype.selectPoint = function (target, d, i) {\r\n var $$ = this, config = $$.config, cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$), cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$), r = $$.pointSelectR.bind($$);\r\n config.data_onselected.call($$.api, d, target.node());\r\n // add selected-circle on low layer g\r\n $$.main\r\n .select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id))\r\n .selectAll('.' + CLASS.selectedCircle + '-' + i)\r\n .data([d])\r\n .enter()\r\n .append('circle')\r\n .attr('class', function () {\r\n return $$.generateClass(CLASS.selectedCircle, i);\r\n })\r\n .attr('cx', cx)\r\n .attr('cy', cy)\r\n .attr('stroke', function () {\r\n return $$.color(d);\r\n })\r\n .attr('r', function (d) {\r\n return $$.pointSelectR(d) * 1.4;\r\n })\r\n .transition()\r\n .duration(100)\r\n .attr('r', r);\r\n };\r\n ChartInternal.prototype.unselectPoint = function (target, d, i) {\r\n var $$ = this;\r\n $$.config.data_onunselected.call($$.api, d, target.node());\r\n // remove selected-circle from low layer g\r\n $$.main\r\n .select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id))\r\n .selectAll('.' + CLASS.selectedCircle + '-' + i)\r\n .transition()\r\n .duration(100)\r\n .attr('r', 0)\r\n .remove();\r\n };\r\n ChartInternal.prototype.togglePoint = function (selected, target, d, i) {\r\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\r\n };\r\n ChartInternal.prototype.selectPath = function (target, d) {\r\n var $$ = this;\r\n $$.config.data_onselected.call($$, d, target.node());\r\n if ($$.config.interaction_brighten) {\r\n target\r\n .transition()\r\n .duration(100)\r\n .style('fill', function () {\r\n return $$.d3.rgb($$.color(d)).brighter(0.75);\r\n });\r\n }\r\n };\r\n ChartInternal.prototype.unselectPath = function (target, d) {\r\n var $$ = this;\r\n $$.config.data_onunselected.call($$, d, target.node());\r\n if ($$.config.interaction_brighten) {\r\n target\r\n .transition()\r\n .duration(100)\r\n .style('fill', function () {\r\n return $$.color(d);\r\n });\r\n }\r\n };\r\n ChartInternal.prototype.togglePath = function (selected, target, d, i) {\r\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\r\n };\r\n ChartInternal.prototype.getToggle = function (that, d) {\r\n var $$ = this, toggle;\r\n if (that.nodeName === 'circle') {\r\n if ($$.isStepType(d)) {\r\n // circle is hidden in step chart, so treat as within the click area\r\n toggle = function () { }; // TODO: how to select step chart?\r\n }\r\n else {\r\n toggle = $$.togglePoint;\r\n }\r\n }\r\n else if (that.nodeName === 'path') {\r\n toggle = $$.togglePath;\r\n }\r\n return toggle;\r\n };\r\n ChartInternal.prototype.toggleShape = function (that, d, i) {\r\n var $$ = this, d3 = $$.d3, config = $$.config, shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED), toggle = $$.getToggle(that, d).bind($$);\r\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\r\n if (!config.data_selection_multiple) {\r\n $$.main\r\n .selectAll('.' +\r\n CLASS.shapes +\r\n (config.data_selection_grouped\r\n ? $$.getTargetSelectorSuffix(d.id)\r\n : ''))\r\n .selectAll('.' + CLASS.shape)\r\n .each(function (d, i) {\r\n var shape = d3.select(this);\r\n if (shape.classed(CLASS.SELECTED)) {\r\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\r\n }\r\n });\r\n }\r\n shape.classed(CLASS.SELECTED, !isSelected);\r\n toggle(!isSelected, shape, d, i);\r\n }\r\n };\n\n ChartInternal.prototype.initBar = function () {\r\n var $$ = this;\r\n $$.main\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.chartBars);\r\n };\r\n ChartInternal.prototype.updateTargetsForBar = function (targets) {\r\n var $$ = this, config = $$.config, mainBars, mainBarEnter, classChartBar = $$.classChartBar.bind($$), classBars = $$.classBars.bind($$), classFocus = $$.classFocus.bind($$);\r\n mainBars = $$.main\r\n .select('.' + CLASS.chartBars)\r\n .selectAll('.' + CLASS.chartBar)\r\n .data(targets)\r\n .attr('class', function (d) {\r\n return classChartBar(d) + classFocus(d);\r\n });\r\n mainBarEnter = mainBars\r\n .enter()\r\n .append('g')\r\n .attr('class', classChartBar)\r\n .style('pointer-events', 'none');\r\n // Bars for each data\r\n mainBarEnter\r\n .append('g')\r\n .attr('class', classBars)\r\n .style('cursor', function (d) {\r\n return config.data_selection_isselectable(d) ? 'pointer' : null;\r\n });\r\n };\r\n ChartInternal.prototype.updateBar = function (durationForExit) {\r\n var $$ = this, barData = $$.barData.bind($$), classBar = $$.classBar.bind($$), initialOpacity = $$.initialOpacity.bind($$), color = function (d) {\r\n return $$.color(d.id);\r\n };\r\n var mainBar = $$.main\r\n .selectAll('.' + CLASS.bars)\r\n .selectAll('.' + CLASS.bar)\r\n .data(barData);\r\n var mainBarEnter = mainBar\r\n .enter()\r\n .append('path')\r\n .attr('class', classBar)\r\n .style('stroke', color)\r\n .style('fill', color);\r\n $$.mainBar = mainBarEnter.merge(mainBar).style('opacity', initialOpacity);\r\n mainBar\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0);\r\n };\r\n ChartInternal.prototype.redrawBar = function (drawBar, withTransition, transition) {\r\n var $$ = this;\r\n return [\r\n (withTransition ? this.mainBar.transition(transition) : this.mainBar)\r\n .attr('d', drawBar)\r\n .style('stroke', this.color)\r\n .style('fill', this.color)\r\n .style('opacity', function (d) { return ($$.isTargetToShow(d.id) ? 1 : 0); })\r\n ];\r\n };\r\n ChartInternal.prototype.getBarW = function (axis, barTargetsNum) {\r\n var $$ = this, config = $$.config, w = typeof config.bar_width === 'number'\r\n ? config.bar_width\r\n : barTargetsNum\r\n ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum\r\n : 0;\r\n return config.bar_width_max && w > config.bar_width_max\r\n ? config.bar_width_max\r\n : w;\r\n };\r\n ChartInternal.prototype.getBars = function (i, id) {\r\n var $$ = this;\r\n return (id\r\n ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id))\r\n : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\r\n };\r\n ChartInternal.prototype.expandBars = function (i, id, reset) {\r\n var $$ = this;\r\n if (reset) {\r\n $$.unexpandBars();\r\n }\r\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\r\n };\r\n ChartInternal.prototype.unexpandBars = function (i) {\r\n var $$ = this;\r\n $$.getBars(i).classed(CLASS.EXPANDED, false);\r\n };\r\n ChartInternal.prototype.generateDrawBar = function (barIndices, isSub) {\r\n var $$ = this, config = $$.config, getPoints = $$.generateGetBarPoints(barIndices, isSub);\r\n return function (d, i) {\r\n // 4 points that make a bar\r\n var points = getPoints(d, i);\r\n // switch points if axis is rotated, not applicable for sub chart\r\n var indexX = config.axis_rotated ? 1 : 0;\r\n var indexY = config.axis_rotated ? 0 : 1;\r\n var path = 'M ' +\r\n points[0][indexX] +\r\n ',' +\r\n points[0][indexY] +\r\n ' ' +\r\n 'L' +\r\n points[1][indexX] +\r\n ',' +\r\n points[1][indexY] +\r\n ' ' +\r\n 'L' +\r\n points[2][indexX] +\r\n ',' +\r\n points[2][indexY] +\r\n ' ' +\r\n 'L' +\r\n points[3][indexX] +\r\n ',' +\r\n points[3][indexY] +\r\n ' ' +\r\n 'z';\r\n return path;\r\n };\r\n };\r\n ChartInternal.prototype.generateGetBarPoints = function (barIndices, isSub) {\r\n var $$ = this, axis = isSub ? $$.subXAxis : $$.xAxis, barTargetsNum = barIndices.__max__ + 1, barW = $$.getBarW(axis, barTargetsNum), barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub), barY = $$.getShapeY(!!isSub), barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub), barSpaceOffset = barW * ($$.config.bar_space / 2), yScale = isSub ? $$.getSubYScale : $$.getYScale;\r\n return function (d, i) {\r\n var y0 = yScale.call($$, d.id)(0), offset = barOffset(d, i) || y0, // offset is for stacked bar chart\r\n posX = barX(d), posY = barY(d);\r\n // fix posY not to overflow opposite quadrant\r\n if ($$.config.axis_rotated) {\r\n if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) {\r\n posY = y0;\r\n }\r\n }\r\n posY -= y0 - offset;\r\n // 4 points that make a bar\r\n return [\r\n [posX + barSpaceOffset, offset],\r\n [posX + barSpaceOffset, posY],\r\n [posX + barW - barSpaceOffset, posY],\r\n [posX + barW - barSpaceOffset, offset]\r\n ];\r\n };\r\n };\r\n /**\r\n * Returns whether the data point is within the given bar shape.\r\n *\r\n * @param mouse\r\n * @param barShape\r\n * @return {boolean}\r\n */\r\n ChartInternal.prototype.isWithinBar = function (mouse, barShape) {\r\n return isWithinBox(mouse, getBBox(barShape), 2);\r\n };\n\n ChartInternal.prototype.getShapeIndices = function (typeFilter) {\r\n var $$ = this, config = $$.config, indices = {}, i = 0, j, k;\r\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\r\n for (j = 0; j < config.data_groups.length; j++) {\r\n if (config.data_groups[j].indexOf(d.id) < 0) {\r\n continue;\r\n }\r\n for (k = 0; k < config.data_groups[j].length; k++) {\r\n if (config.data_groups[j][k] in indices) {\r\n indices[d.id] = indices[config.data_groups[j][k]];\r\n break;\r\n }\r\n }\r\n }\r\n if (isUndefined(indices[d.id])) {\r\n indices[d.id] = i++;\r\n }\r\n });\r\n indices.__max__ = i - 1;\r\n return indices;\r\n };\r\n ChartInternal.prototype.getShapeX = function (offset, targetsNum, indices, isSub) {\r\n var $$ = this, scale = isSub ? $$.subX : $$.x;\r\n return function (d) {\r\n var index = d.id in indices ? indices[d.id] : 0;\r\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\r\n };\r\n };\r\n ChartInternal.prototype.getShapeY = function (isSub) {\r\n var $$ = this;\r\n return function (d) {\r\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\r\n return scale($$.isTargetNormalized(d.id) ? $$.getRatio('index', d, true) : d.value);\r\n };\r\n };\r\n ChartInternal.prototype.getShapeOffset = function (typeFilter, indices, isSub) {\r\n var $$ = this, targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))), targetIds = targets.map(function (t) {\r\n return t.id;\r\n });\r\n return function (d, i) {\r\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id), y0 = scale(0), offset = y0;\r\n targets.forEach(function (t) {\r\n var rowValues = $$.isStepType(d)\r\n ? $$.convertValuesToStep(t.values)\r\n : t.values;\r\n var isTargetNormalized = $$.isTargetNormalized(d.id);\r\n var values = rowValues.map(function (v) {\r\n return isTargetNormalized ? $$.getRatio('index', v, true) : v.value;\r\n });\r\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\r\n return;\r\n }\r\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\r\n // check if the x values line up\r\n if (isUndefined(rowValues[i]) || +rowValues[i].x !== +d.x) {\r\n // \"+\" for timeseries\r\n // if not, try to find the value that does line up\r\n i = -1;\r\n rowValues.forEach(function (v, j) {\r\n var x1 = v.x.constructor === Date ? +v.x : v.x;\r\n var x2 = d.x.constructor === Date ? +d.x : d.x;\r\n if (x1 === x2) {\r\n i = j;\r\n }\r\n });\r\n }\r\n if (i in rowValues && rowValues[i].value * d.value >= 0) {\r\n offset += scale(values[i]) - y0;\r\n }\r\n }\r\n });\r\n return offset;\r\n };\r\n };\r\n ChartInternal.prototype.isWithinShape = function (that, d) {\r\n var $$ = this, shape = $$.d3.select(that), isWithin;\r\n if (!$$.isTargetToShow(d.id)) {\r\n isWithin = false;\r\n }\r\n else if (that.nodeName === 'circle') {\r\n isWithin = $$.isStepType(d)\r\n ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value))\r\n : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\r\n }\r\n else if (that.nodeName === 'path') {\r\n isWithin = shape.classed(CLASS.bar)\r\n ? $$.isWithinBar($$.d3.mouse(that), that)\r\n : true;\r\n }\r\n return isWithin;\r\n };\r\n ChartInternal.prototype.getInterpolate = function (d) {\r\n var $$ = this, d3 = $$.d3, types = {\r\n linear: d3.curveLinear,\r\n 'linear-closed': d3.curveLinearClosed,\r\n basis: d3.curveBasis,\r\n 'basis-open': d3.curveBasisOpen,\r\n 'basis-closed': d3.curveBasisClosed,\r\n bundle: d3.curveBundle,\r\n cardinal: d3.curveCardinal,\r\n 'cardinal-open': d3.curveCardinalOpen,\r\n 'cardinal-closed': d3.curveCardinalClosed,\r\n monotone: d3.curveMonotoneX,\r\n step: d3.curveStep,\r\n 'step-before': d3.curveStepBefore,\r\n 'step-after': d3.curveStepAfter\r\n }, type;\r\n if ($$.isSplineType(d)) {\r\n type = types[$$.config.spline_interpolation_type] || types.cardinal;\r\n }\r\n else if ($$.isStepType(d)) {\r\n type = types[$$.config.line_step_type];\r\n }\r\n else {\r\n type = types.linear;\r\n }\r\n return type;\r\n };\n\n ChartInternal.prototype.initLine = function () {\r\n var $$ = this;\r\n $$.main\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.chartLines);\r\n };\r\n ChartInternal.prototype.updateTargetsForLine = function (targets) {\r\n var $$ = this, config = $$.config, mainLines, mainLineEnter, classChartLine = $$.classChartLine.bind($$), classLines = $$.classLines.bind($$), classAreas = $$.classAreas.bind($$), classCircles = $$.classCircles.bind($$), classFocus = $$.classFocus.bind($$);\r\n mainLines = $$.main\r\n .select('.' + CLASS.chartLines)\r\n .selectAll('.' + CLASS.chartLine)\r\n .data(targets)\r\n .attr('class', function (d) {\r\n return classChartLine(d) + classFocus(d);\r\n });\r\n mainLineEnter = mainLines\r\n .enter()\r\n .append('g')\r\n .attr('class', classChartLine)\r\n .style('opacity', 0)\r\n .style('pointer-events', 'none');\r\n // Lines for each data\r\n mainLineEnter.append('g').attr('class', classLines);\r\n // Areas\r\n mainLineEnter.append('g').attr('class', classAreas);\r\n // Circles for each data point on lines\r\n mainLineEnter.append('g').attr('class', function (d) {\r\n return $$.generateClass(CLASS.selectedCircles, d.id);\r\n });\r\n mainLineEnter\r\n .append('g')\r\n .attr('class', classCircles)\r\n .style('cursor', function (d) {\r\n return config.data_selection_isselectable(d) ? 'pointer' : null;\r\n });\r\n // Update date for selected circles\r\n targets.forEach(function (t) {\r\n $$.main\r\n .selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id))\r\n .selectAll('.' + CLASS.selectedCircle)\r\n .each(function (d) {\r\n d.value = t.values[d.index].value;\r\n });\r\n });\r\n // MEMO: can not keep same color...\r\n //mainLineUpdate.exit().remove();\r\n };\r\n ChartInternal.prototype.updateLine = function (durationForExit) {\r\n var $$ = this;\r\n var mainLine = $$.main\r\n .selectAll('.' + CLASS.lines)\r\n .selectAll('.' + CLASS.line)\r\n .data($$.lineData.bind($$));\r\n var mainLineEnter = mainLine\r\n .enter()\r\n .append('path')\r\n .attr('class', $$.classLine.bind($$))\r\n .style('stroke', $$.color);\r\n $$.mainLine = mainLineEnter\r\n .merge(mainLine)\r\n .style('opacity', $$.initialOpacity.bind($$))\r\n .style('shape-rendering', function (d) {\r\n return $$.isStepType(d) ? 'crispEdges' : '';\r\n })\r\n .attr('transform', null);\r\n mainLine\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0);\r\n };\r\n ChartInternal.prototype.redrawLine = function (drawLine, withTransition, transition) {\r\n return [\r\n (withTransition ? this.mainLine.transition(transition) : this.mainLine)\r\n .attr('d', drawLine)\r\n .style('stroke', this.color)\r\n .style('opacity', 1)\r\n ];\r\n };\r\n ChartInternal.prototype.generateDrawLine = function (lineIndices, isSub) {\r\n var $$ = this, config = $$.config, line = $$.d3.line(), getPoints = $$.generateGetLinePoints(lineIndices, isSub), yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale, xValue = function (d) {\r\n return (isSub ? $$.subxx : $$.xx).call($$, d);\r\n }, yValue = function (d, i) {\r\n return config.data_groups.length > 0\r\n ? getPoints(d, i)[0][1]\r\n : yScaleGetter.call($$, d.id)(d.value);\r\n };\r\n line = config.axis_rotated\r\n ? line.x(yValue).y(xValue)\r\n : line.x(xValue).y(yValue);\r\n if (!config.line_connectNull) {\r\n line = line.defined(function (d) {\r\n return d.value != null;\r\n });\r\n }\r\n return function (d) {\r\n var values = config.line_connectNull\r\n ? $$.filterRemoveNull(d.values)\r\n : d.values, x = isSub ? $$.subX : $$.x, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path;\r\n if ($$.isLineType(d)) {\r\n if (config.data_regions[d.id]) {\r\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\r\n }\r\n else {\r\n if ($$.isStepType(d)) {\r\n values = $$.convertValuesToStep(values);\r\n }\r\n path = line.curve($$.getInterpolate(d))(values);\r\n }\r\n }\r\n else {\r\n if (values[0]) {\r\n x0 = x(values[0].x);\r\n y0 = y(values[0].value);\r\n }\r\n path = config.axis_rotated ? 'M ' + y0 + ' ' + x0 : 'M ' + x0 + ' ' + y0;\r\n }\r\n return path ? path : 'M 0 0';\r\n };\r\n };\r\n ChartInternal.prototype.generateGetLinePoints = function (lineIndices, isSub) {\r\n // partial duplication of generateGetBarPoints\r\n var $$ = this, config = $$.config, lineTargetsNum = lineIndices.__max__ + 1, x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub), y = $$.getShapeY(!!isSub), lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub), yScale = isSub ? $$.getSubYScale : $$.getYScale;\r\n return function (d, i) {\r\n var y0 = yScale.call($$, d.id)(0), offset = lineOffset(d, i) || y0, // offset is for stacked area chart\r\n posX = x(d), posY = y(d);\r\n // fix posY not to overflow opposite quadrant\r\n if (config.axis_rotated) {\r\n if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) {\r\n posY = y0;\r\n }\r\n }\r\n // 1 point that marks the line position\r\n return [\r\n [posX, posY - (y0 - offset)],\r\n [posX, posY - (y0 - offset)],\r\n [posX, posY - (y0 - offset)],\r\n [posX, posY - (y0 - offset)] // needed for compatibility\r\n ];\r\n };\r\n };\r\n ChartInternal.prototype.lineWithRegions = function (d, x, y, _regions) {\r\n var $$ = this, config = $$.config, prev = -1, i, j, s = 'M', sWithRegion, xp, yp, dx, dy, dd, diff, diffx2, xOffset = $$.isCategorized() ? 0.5 : 0, xValue, yValue, regions = [];\r\n function isWithinRegions(x, regions) {\r\n var i;\r\n for (i = 0; i < regions.length; i++) {\r\n if (regions[i].start < x && x <= regions[i].end) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // Check start/end of regions\r\n if (isDefined(_regions)) {\r\n for (i = 0; i < _regions.length; i++) {\r\n regions[i] = {};\r\n if (isUndefined(_regions[i].start)) {\r\n regions[i].start = d[0].x;\r\n }\r\n else {\r\n regions[i].start = $$.isTimeSeries()\r\n ? $$.parseDate(_regions[i].start)\r\n : _regions[i].start;\r\n }\r\n if (isUndefined(_regions[i].end)) {\r\n regions[i].end = d[d.length - 1].x;\r\n }\r\n else {\r\n regions[i].end = $$.isTimeSeries()\r\n ? $$.parseDate(_regions[i].end)\r\n : _regions[i].end;\r\n }\r\n }\r\n }\r\n // Set scales\r\n xValue = config.axis_rotated\r\n ? function (d) {\r\n return y(d.value);\r\n }\r\n : function (d) {\r\n return x(d.x);\r\n };\r\n yValue = config.axis_rotated\r\n ? function (d) {\r\n return x(d.x);\r\n }\r\n : function (d) {\r\n return y(d.value);\r\n };\r\n // Define svg generator function for region\r\n function generateM(points) {\r\n return ('M' +\r\n points[0][0] +\r\n ' ' +\r\n points[0][1] +\r\n ' ' +\r\n points[1][0] +\r\n ' ' +\r\n points[1][1]);\r\n }\r\n if ($$.isTimeSeries()) {\r\n sWithRegion = function (d0, d1, j, diff) {\r\n var x0 = d0.x.getTime(), x_diff = d1.x - d0.x, xv0 = new Date(x0 + x_diff * j), xv1 = new Date(x0 + x_diff * (j + diff)), points;\r\n if (config.axis_rotated) {\r\n points = [\r\n [y(yp(j)), x(xv0)],\r\n [y(yp(j + diff)), x(xv1)]\r\n ];\r\n }\r\n else {\r\n points = [\r\n [x(xv0), y(yp(j))],\r\n [x(xv1), y(yp(j + diff))]\r\n ];\r\n }\r\n return generateM(points);\r\n };\r\n }\r\n else {\r\n sWithRegion = function (d0, d1, j, diff) {\r\n var points;\r\n if (config.axis_rotated) {\r\n points = [\r\n [y(yp(j), true), x(xp(j))],\r\n [y(yp(j + diff), true), x(xp(j + diff))]\r\n ];\r\n }\r\n else {\r\n points = [\r\n [x(xp(j), true), y(yp(j))],\r\n [x(xp(j + diff), true), y(yp(j + diff))]\r\n ];\r\n }\r\n return generateM(points);\r\n };\r\n }\r\n // Generate\r\n for (i = 0; i < d.length; i++) {\r\n // Draw as normal\r\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\r\n s += ' ' + xValue(d[i]) + ' ' + yValue(d[i]);\r\n }\r\n // Draw with region // TODO: Fix for horizotal charts\r\n else {\r\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\r\n yp = $$.getScale(d[i - 1].value, d[i].value);\r\n dx = x(d[i].x) - x(d[i - 1].x);\r\n dy = y(d[i].value) - y(d[i - 1].value);\r\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\r\n diff = 2 / dd;\r\n diffx2 = diff * 2;\r\n for (j = diff; j <= 1; j += diffx2) {\r\n s += sWithRegion(d[i - 1], d[i], j, diff);\r\n }\r\n }\r\n prev = d[i].x;\r\n }\r\n return s;\r\n };\r\n ChartInternal.prototype.updateArea = function (durationForExit) {\r\n var $$ = this, d3 = $$.d3;\r\n var mainArea = $$.main\r\n .selectAll('.' + CLASS.areas)\r\n .selectAll('.' + CLASS.area)\r\n .data($$.lineData.bind($$));\r\n var mainAreaEnter = mainArea\r\n .enter()\r\n .append('path')\r\n .attr('class', $$.classArea.bind($$))\r\n .style('fill', $$.color)\r\n .style('opacity', function () {\r\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\r\n return 0;\r\n });\r\n $$.mainArea = mainAreaEnter\r\n .merge(mainArea)\r\n .style('opacity', $$.orgAreaOpacity);\r\n mainArea\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0);\r\n };\r\n ChartInternal.prototype.redrawArea = function (drawArea, withTransition, transition) {\r\n return [\r\n (withTransition ? this.mainArea.transition(transition) : this.mainArea)\r\n .attr('d', drawArea)\r\n .style('fill', this.color)\r\n .style('opacity', this.orgAreaOpacity)\r\n ];\r\n };\r\n ChartInternal.prototype.generateDrawArea = function (areaIndices, isSub) {\r\n var $$ = this, config = $$.config, area = $$.d3.area(), getPoints = $$.generateGetAreaPoints(areaIndices, isSub), yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale, xValue = function (d) {\r\n return (isSub ? $$.subxx : $$.xx).call($$, d);\r\n }, value0 = function (d, i) {\r\n return config.data_groups.length > 0\r\n ? getPoints(d, i)[0][1]\r\n : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\r\n }, value1 = function (d, i) {\r\n return config.data_groups.length > 0\r\n ? getPoints(d, i)[1][1]\r\n : yScaleGetter.call($$, d.id)(d.value);\r\n };\r\n area = config.axis_rotated\r\n ? area\r\n .x0(value0)\r\n .x1(value1)\r\n .y(xValue)\r\n : area\r\n .x(xValue)\r\n .y0(config.area_above ? 0 : value0)\r\n .y1(value1);\r\n if (!config.line_connectNull) {\r\n area = area.defined(function (d) {\r\n return d.value !== null;\r\n });\r\n }\r\n return function (d) {\r\n var values = config.line_connectNull\r\n ? $$.filterRemoveNull(d.values)\r\n : d.values, x0 = 0, y0 = 0, path;\r\n if ($$.isAreaType(d)) {\r\n if ($$.isStepType(d)) {\r\n values = $$.convertValuesToStep(values);\r\n }\r\n path = area.curve($$.getInterpolate(d))(values);\r\n }\r\n else {\r\n if (values[0]) {\r\n x0 = $$.x(values[0].x);\r\n y0 = $$.getYScale(d.id)(values[0].value);\r\n }\r\n path = config.axis_rotated ? 'M ' + y0 + ' ' + x0 : 'M ' + x0 + ' ' + y0;\r\n }\r\n return path ? path : 'M 0 0';\r\n };\r\n };\r\n ChartInternal.prototype.getAreaBaseValue = function () {\r\n return 0;\r\n };\r\n ChartInternal.prototype.generateGetAreaPoints = function (areaIndices, isSub) {\r\n // partial duplication of generateGetBarPoints\r\n var $$ = this, config = $$.config, areaTargetsNum = areaIndices.__max__ + 1, x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub), y = $$.getShapeY(!!isSub), areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub), yScale = isSub ? $$.getSubYScale : $$.getYScale;\r\n return function (d, i) {\r\n var y0 = yScale.call($$, d.id)(0), offset = areaOffset(d, i) || y0, // offset is for stacked area chart\r\n posX = x(d), posY = y(d);\r\n // fix posY not to overflow opposite quadrant\r\n if (config.axis_rotated) {\r\n if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) {\r\n posY = y0;\r\n }\r\n }\r\n // 1 point that marks the area position\r\n return [\r\n [posX, offset],\r\n [posX, posY - (y0 - offset)],\r\n [posX, posY - (y0 - offset)],\r\n [posX, offset] // needed for compatibility\r\n ];\r\n };\r\n };\r\n ChartInternal.prototype.updateCircle = function (cx, cy) {\r\n var $$ = this;\r\n var mainCircle = $$.main\r\n .selectAll('.' + CLASS.circles)\r\n .selectAll('.' + CLASS.circle)\r\n .data($$.lineOrScatterOrStanfordData.bind($$));\r\n var mainCircleEnter = mainCircle\r\n .enter()\r\n .append('circle')\r\n .attr('shape-rendering', $$.isStanfordGraphType() ? 'crispEdges' : '')\r\n .attr('class', $$.classCircle.bind($$))\r\n .attr('cx', cx)\r\n .attr('cy', cy)\r\n .attr('r', $$.pointR.bind($$))\r\n .style('color', $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color);\r\n $$.mainCircle = mainCircleEnter\r\n .merge(mainCircle)\r\n .style('opacity', $$.isStanfordGraphType() ? 1 : $$.initialOpacityForCircle.bind($$));\r\n mainCircle.exit().style('opacity', 0);\r\n };\r\n ChartInternal.prototype.redrawCircle = function (cx, cy, withTransition, transition) {\r\n var $$ = this, selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\r\n return [\r\n (withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle)\r\n .style('opacity', this.opacityForCircle.bind($$))\r\n .style('color', $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color)\r\n .attr('cx', cx)\r\n .attr('cy', cy),\r\n (withTransition ? selectedCircles.transition(transition) : selectedCircles)\r\n .attr('cx', cx)\r\n .attr('cy', cy)\r\n ];\r\n };\r\n ChartInternal.prototype.circleX = function (d) {\r\n return d.x || d.x === 0 ? this.x(d.x) : null;\r\n };\r\n ChartInternal.prototype.updateCircleY = function () {\r\n var $$ = this, lineIndices, getPoints;\r\n if ($$.config.data_groups.length > 0) {\r\n (lineIndices = $$.getShapeIndices($$.isLineType)),\r\n (getPoints = $$.generateGetLinePoints(lineIndices));\r\n $$.circleY = function (d, i) {\r\n return getPoints(d, i)[0][1];\r\n };\r\n }\r\n else {\r\n $$.circleY = function (d) {\r\n return $$.getYScale(d.id)(d.value);\r\n };\r\n }\r\n };\r\n ChartInternal.prototype.getCircles = function (i, id) {\r\n var $$ = this;\r\n return (id\r\n ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id))\r\n : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\r\n };\r\n ChartInternal.prototype.expandCircles = function (i, id, reset) {\r\n var $$ = this, r = $$.pointExpandedR.bind($$);\r\n if (reset) {\r\n $$.unexpandCircles();\r\n }\r\n $$.getCircles(i, id)\r\n .classed(CLASS.EXPANDED, true)\r\n .attr('r', r);\r\n };\r\n ChartInternal.prototype.unexpandCircles = function (i) {\r\n var $$ = this, r = $$.pointR.bind($$);\r\n $$.getCircles(i)\r\n .filter(function () {\r\n return $$.d3.select(this).classed(CLASS.EXPANDED);\r\n })\r\n .classed(CLASS.EXPANDED, false)\r\n .attr('r', r);\r\n };\r\n ChartInternal.prototype.pointR = function (d) {\r\n var $$ = this, config = $$.config;\r\n return $$.isStepType(d)\r\n ? 0\r\n : isFunction(config.point_r)\r\n ? config.point_r(d)\r\n : config.point_r;\r\n };\r\n ChartInternal.prototype.pointExpandedR = function (d) {\r\n var $$ = this, config = $$.config;\r\n if (config.point_focus_expand_enabled) {\r\n return isFunction(config.point_focus_expand_r)\r\n ? config.point_focus_expand_r(d)\r\n : config.point_focus_expand_r\r\n ? config.point_focus_expand_r\r\n : $$.pointR(d) * 1.75;\r\n }\r\n else {\r\n return $$.pointR(d);\r\n }\r\n };\r\n ChartInternal.prototype.pointSelectR = function (d) {\r\n var $$ = this, config = $$.config;\r\n return isFunction(config.point_select_r)\r\n ? config.point_select_r(d)\r\n : config.point_select_r\r\n ? config.point_select_r\r\n : $$.pointR(d) * 4;\r\n };\r\n ChartInternal.prototype.isWithinCircle = function (that, r) {\r\n var d3 = this.d3, mouse = d3.mouse(that), d3_this = d3.select(that), cx = +d3_this.attr('cx'), cy = +d3_this.attr('cy');\r\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\r\n };\r\n ChartInternal.prototype.isWithinStep = function (that, y) {\r\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\r\n };\n\n ChartInternal.prototype.getCurrentWidth = function () {\r\n var $$ = this, config = $$.config;\r\n return config.size_width ? config.size_width : $$.getParentWidth();\r\n };\r\n ChartInternal.prototype.getCurrentHeight = function () {\r\n var $$ = this, config = $$.config, h = config.size_height ? config.size_height : $$.getParentHeight();\r\n return h > 0\r\n ? h\r\n : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\r\n };\r\n ChartInternal.prototype.getCurrentPaddingTop = function () {\r\n var $$ = this, config = $$.config, padding = isValue(config.padding_top) ? config.padding_top : 0;\r\n if ($$.title && $$.title.node()) {\r\n padding += $$.getTitlePadding();\r\n }\r\n return padding;\r\n };\r\n ChartInternal.prototype.getCurrentPaddingBottom = function () {\r\n var config = this.config;\r\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\r\n };\r\n ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) {\r\n var $$ = this, config = $$.config;\r\n if (isValue(config.padding_left)) {\r\n return config.padding_left;\r\n }\r\n else if (config.axis_rotated) {\r\n return !config.axis_x_show || config.axis_x_inner\r\n ? 1\r\n : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\r\n }\r\n else if (!config.axis_y_show || config.axis_y_inner) {\r\n // && !config.axis_rotated\r\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\r\n }\r\n else {\r\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\r\n }\r\n };\r\n ChartInternal.prototype.getCurrentPaddingRight = function () {\r\n var $$ = this, config = $$.config, padding = 0, defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\r\n if (isValue(config.padding_right)) {\r\n padding = config.padding_right + 1; // 1 is needed not to hide tick line\r\n }\r\n else if (config.axis_rotated) {\r\n padding = defaultPadding + legendWidthOnRight;\r\n }\r\n else if (!config.axis_y2_show || config.axis_y2_inner) {\r\n // && !config.axis_rotated\r\n padding =\r\n 2 +\r\n legendWidthOnRight +\r\n ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\r\n }\r\n else {\r\n padding = ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\r\n }\r\n if ($$.colorScale && $$.colorScale.node()) {\r\n padding += $$.getColorScalePadding();\r\n }\r\n return padding;\r\n };\r\n ChartInternal.prototype.getParentRectValue = function (key) {\r\n var parent = this.selectChart.node(), v;\r\n while (parent && parent.tagName !== 'BODY') {\r\n try {\r\n v = parent.getBoundingClientRect()[key];\r\n }\r\n catch (e) {\r\n if (key === 'width') {\r\n // In IE in certain cases getBoundingClientRect\r\n // will cause an \"unspecified error\"\r\n v = parent.offsetWidth;\r\n }\r\n }\r\n if (v) {\r\n break;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n return v;\r\n };\r\n ChartInternal.prototype.getParentWidth = function () {\r\n return this.getParentRectValue('width');\r\n };\r\n ChartInternal.prototype.getParentHeight = function () {\r\n var h = this.selectChart.style('height');\r\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\r\n };\r\n ChartInternal.prototype.getSvgLeft = function (withoutRecompute) {\r\n var $$ = this, config = $$.config, hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner), leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY, leftAxis = $$.main.select('.' + leftAxisClass).node(), svgRect = leftAxis && hasLeftAxisRect\r\n ? leftAxis.getBoundingClientRect()\r\n : { right: 0 }, chartRect = $$.selectChart.node().getBoundingClientRect(), hasArc = $$.hasArcType(), svgLeft = svgRect.right -\r\n chartRect.left -\r\n (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\r\n return svgLeft > 0 ? svgLeft : 0;\r\n };\r\n ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) {\r\n var $$ = this, position = $$.axis.getLabelPositionById(id);\r\n return ($$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40));\r\n };\r\n ChartInternal.prototype.getHorizontalAxisHeight = function (axisId, isSubchart) {\r\n var $$ = this, config = $$.config, h = 30;\r\n if (axisId === 'x' && !(isDefined(isSubchart) && isSubchart ? config.subchart_axis_x_show : config.axis_x_show)) {\r\n return 8;\r\n }\r\n if (axisId === 'x' && config.axis_x_height) {\r\n return config.axis_x_height;\r\n }\r\n if (axisId === 'y' && !config.axis_y_show) {\r\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\r\n }\r\n if (axisId === 'y2' && !config.axis_y2_show) {\r\n return $$.rotated_padding_top;\r\n }\r\n // Calculate x axis height when tick rotated\r\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\r\n h =\r\n 30 +\r\n $$.axis.getMaxTickWidth(axisId) *\r\n Math.cos((Math.PI * (90 - Math.abs(config.axis_x_tick_rotate))) / 180);\r\n }\r\n // Calculate y axis height when tick rotated\r\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\r\n h =\r\n 30 +\r\n $$.axis.getMaxTickWidth(axisId) *\r\n Math.cos((Math.PI * (90 - Math.abs(config.axis_y_tick_rotate))) / 180);\r\n }\r\n return (h +\r\n ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) +\r\n (axisId === 'y2' ? -10 : 0));\r\n };\n\n ChartInternal.prototype.initBrush = function (scale) {\r\n var $$ = this, d3 = $$.d3;\r\n // TODO: dynamically change brushY/brushX according to axis_rotated.\r\n $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX())\r\n .on('brush', function () {\r\n var event = d3.event.sourceEvent;\r\n if (event && event.type === 'zoom') {\r\n return;\r\n }\r\n $$.redrawForBrush();\r\n })\r\n .on('end', function () {\r\n var event = d3.event.sourceEvent;\r\n if (event && event.type === 'zoom') {\r\n return;\r\n }\r\n if ($$.brush.empty() && event && event.type !== 'end') {\r\n $$.brush.clear();\r\n }\r\n });\r\n $$.brush.updateExtent = function () {\r\n var range = this.scale.range(), extent;\r\n if ($$.config.axis_rotated) {\r\n extent = [\r\n [0, range[0]],\r\n [$$.width2, range[1]]\r\n ];\r\n }\r\n else {\r\n extent = [\r\n [range[0], 0],\r\n [range[1], $$.height2]\r\n ];\r\n }\r\n this.extent(extent);\r\n return this;\r\n };\r\n $$.brush.updateScale = function (scale) {\r\n this.scale = scale;\r\n return this;\r\n };\r\n $$.brush.update = function (scale) {\r\n this.updateScale(scale || $$.subX).updateExtent();\r\n $$.context.select('.' + CLASS.brush).call(this);\r\n };\r\n $$.brush.clear = function () {\r\n $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\r\n };\r\n $$.brush.selection = function () {\r\n return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\r\n };\r\n $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\r\n var selection, brush;\r\n if (selectionAsValue) {\r\n if ($$.context) {\r\n selection = [\r\n this.scale(selectionAsValue[0]),\r\n this.scale(selectionAsValue[1])\r\n ];\r\n brush = $$.context.select('.' + CLASS.brush);\r\n if (withTransition) {\r\n brush = brush.transition();\r\n }\r\n $$.brush.move(brush, selection);\r\n }\r\n return [];\r\n }\r\n selection = $$.brush.selection() || [0, 0];\r\n return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\r\n };\r\n $$.brush.empty = function () {\r\n var selection = $$.brush.selection();\r\n return !selection || selection[0] === selection[1];\r\n };\r\n return $$.brush.updateScale(scale);\r\n };\r\n ChartInternal.prototype.initSubchart = function () {\r\n var $$ = this, config = $$.config, context = ($$.context = $$.svg\r\n .append('g')\r\n .attr('transform', $$.getTranslate('context')));\r\n // set style\r\n context.style('visibility', 'visible');\r\n // Define g for chart area\r\n context\r\n .append('g')\r\n .attr('clip-path', $$.clipPathForSubchart)\r\n .attr('class', CLASS.chart);\r\n // Define g for bar chart area\r\n context\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.chartBars);\r\n // Define g for line chart area\r\n context\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.chartLines);\r\n // Add extent rect for Brush\r\n context\r\n .append('g')\r\n .attr('clip-path', $$.clipPath)\r\n .attr('class', CLASS.brush);\r\n // ATTENTION: This must be called AFTER chart added\r\n // Add Axis\r\n $$.axes.subx = context\r\n .append('g')\r\n .attr('class', CLASS.axisX)\r\n .attr('transform', $$.getTranslate('subx'))\r\n .attr('clip-path', config.axis_rotated ? '' : $$.clipPathForXAxis)\r\n .style('visibility', config.subchart_axis_x_show ? 'visible' : 'hidden');\r\n };\r\n ChartInternal.prototype.initSubchartBrush = function () {\r\n var $$ = this;\r\n // Add extent rect for Brush\r\n $$.initBrush($$.subX).updateExtent();\r\n $$.context.select('.' + CLASS.brush).call($$.brush);\r\n };\r\n ChartInternal.prototype.updateTargetsForSubchart = function (targets) {\r\n var $$ = this, context = $$.context, config = $$.config, contextLineEnter, contextLine, contextBarEnter, contextBar, classChartBar = $$.classChartBar.bind($$), classBars = $$.classBars.bind($$), classChartLine = $$.classChartLine.bind($$), classLines = $$.classLines.bind($$), classAreas = $$.classAreas.bind($$);\r\n //-- Bar --//\r\n contextBar = context\r\n .select('.' + CLASS.chartBars)\r\n .selectAll('.' + CLASS.chartBar)\r\n .data(targets);\r\n contextBarEnter = contextBar\r\n .enter()\r\n .append('g')\r\n .style('opacity', 0);\r\n contextBarEnter.merge(contextBar).attr('class', classChartBar);\r\n // Bars for each data\r\n contextBarEnter.append('g').attr('class', classBars);\r\n //-- Line --//\r\n contextLine = context\r\n .select('.' + CLASS.chartLines)\r\n .selectAll('.' + CLASS.chartLine)\r\n .data(targets);\r\n contextLineEnter = contextLine\r\n .enter()\r\n .append('g')\r\n .style('opacity', 0);\r\n contextLineEnter.merge(contextLine).attr('class', classChartLine);\r\n // Lines for each data\r\n contextLineEnter.append('g').attr('class', classLines);\r\n // Area\r\n contextLineEnter.append('g').attr('class', classAreas);\r\n //-- Brush --//\r\n context\r\n .selectAll('.' + CLASS.brush + ' rect')\r\n .attr(config.axis_rotated ? 'width' : 'height', config.axis_rotated ? $$.width2 : $$.height2);\r\n };\r\n ChartInternal.prototype.updateBarForSubchart = function (durationForExit) {\r\n var $$ = this;\r\n var contextBar = $$.context\r\n .selectAll('.' + CLASS.bars)\r\n .selectAll('.' + CLASS.bar)\r\n .data($$.barData.bind($$));\r\n var contextBarEnter = contextBar\r\n .enter()\r\n .append('path')\r\n .attr('class', $$.classBar.bind($$))\r\n .style('stroke', 'none')\r\n .style('fill', $$.color);\r\n contextBar\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0)\r\n .remove();\r\n $$.contextBar = contextBarEnter\r\n .merge(contextBar)\r\n .style('opacity', $$.initialOpacity.bind($$));\r\n };\r\n ChartInternal.prototype.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\r\n (withTransition\r\n ? this.contextBar.transition(Math.random().toString()).duration(duration)\r\n : this.contextBar)\r\n .attr('d', drawBarOnSub)\r\n .style('opacity', 1);\r\n };\r\n ChartInternal.prototype.updateLineForSubchart = function (durationForExit) {\r\n var $$ = this;\r\n var contextLine = $$.context\r\n .selectAll('.' + CLASS.lines)\r\n .selectAll('.' + CLASS.line)\r\n .data($$.lineData.bind($$));\r\n var contextLineEnter = contextLine\r\n .enter()\r\n .append('path')\r\n .attr('class', $$.classLine.bind($$))\r\n .style('stroke', $$.color);\r\n contextLine\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0)\r\n .remove();\r\n $$.contextLine = contextLineEnter\r\n .merge(contextLine)\r\n .style('opacity', $$.initialOpacity.bind($$));\r\n };\r\n ChartInternal.prototype.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\r\n (withTransition\r\n ? this.contextLine.transition(Math.random().toString()).duration(duration)\r\n : this.contextLine)\r\n .attr('d', drawLineOnSub)\r\n .style('opacity', 1);\r\n };\r\n ChartInternal.prototype.updateAreaForSubchart = function (durationForExit) {\r\n var $$ = this, d3 = $$.d3;\r\n var contextArea = $$.context\r\n .selectAll('.' + CLASS.areas)\r\n .selectAll('.' + CLASS.area)\r\n .data($$.lineData.bind($$));\r\n var contextAreaEnter = contextArea\r\n .enter()\r\n .append('path')\r\n .attr('class', $$.classArea.bind($$))\r\n .style('fill', $$.color)\r\n .style('opacity', function () {\r\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\r\n return 0;\r\n });\r\n contextArea\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('opacity', 0)\r\n .remove();\r\n $$.contextArea = contextAreaEnter.merge(contextArea).style('opacity', 0);\r\n };\r\n ChartInternal.prototype.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\r\n (withTransition\r\n ? this.contextArea.transition(Math.random().toString()).duration(duration)\r\n : this.contextArea)\r\n .attr('d', drawAreaOnSub)\r\n .style('fill', this.color)\r\n .style('opacity', this.orgAreaOpacity);\r\n };\r\n ChartInternal.prototype.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\r\n var $$ = this, d3 = $$.d3, drawAreaOnSub, drawBarOnSub, drawLineOnSub;\r\n // reflect main chart to extent on subchart if zoomed\r\n if (d3.event && d3.event.type === 'zoom') {\r\n $$.brush.selectionAsValue($$.x.orgDomain());\r\n }\r\n // update subchart elements if needed\r\n if (withSubchart) {\r\n // extent rect\r\n if (!$$.brush.empty()) {\r\n $$.brush.selectionAsValue($$.x.orgDomain());\r\n }\r\n // setup drawer - MEMO: this must be called after axis updated\r\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\r\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\r\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\r\n $$.updateBarForSubchart(duration);\r\n $$.updateLineForSubchart(duration);\r\n $$.updateAreaForSubchart(duration);\r\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\r\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\r\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\r\n }\r\n };\r\n ChartInternal.prototype.redrawForBrush = function () {\r\n var $$ = this, x = $$.x, d3 = $$.d3, s;\r\n $$.redraw({\r\n withTransition: false,\r\n withY: $$.config.zoom_rescale,\r\n withSubchart: false,\r\n withUpdateXDomain: true,\r\n withEventRect: false,\r\n withDimension: false\r\n });\r\n // update zoom transation binded to event rect\r\n s = d3.event.selection || $$.brush.scale.range();\r\n $$.main\r\n .select('.' + CLASS.eventRect)\r\n .call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\r\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\r\n };\r\n ChartInternal.prototype.transformContext = function (withTransition, transitions) {\r\n var $$ = this, subXAxis;\r\n if (transitions && transitions.axisSubX) {\r\n subXAxis = transitions.axisSubX;\r\n }\r\n else {\r\n subXAxis = $$.context.select('.' + CLASS.axisX);\r\n if (withTransition) {\r\n subXAxis = subXAxis.transition();\r\n }\r\n }\r\n $$.context.attr('transform', $$.getTranslate('context'));\r\n subXAxis.attr('transform', $$.getTranslate('subx'));\r\n };\r\n ChartInternal.prototype.getDefaultSelection = function () {\r\n var $$ = this, config = $$.config, selection = isFunction(config.axis_x_selection)\r\n ? config.axis_x_selection($$.getXDomain($$.data.targets))\r\n : config.axis_x_selection;\r\n if ($$.isTimeSeries()) {\r\n selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\r\n }\r\n return selection;\r\n };\r\n ChartInternal.prototype.removeSubchart = function () {\r\n var $$ = this;\r\n $$.brush = null;\r\n $$.context.remove();\r\n $$.context = null;\r\n };\n\n ChartInternal.prototype.initText = function () {\r\n var $$ = this;\r\n $$.main\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.chartTexts);\r\n $$.mainText = $$.d3.selectAll([]);\r\n };\r\n ChartInternal.prototype.updateTargetsForText = function (targets) {\r\n var $$ = this, classChartText = $$.classChartText.bind($$), classTexts = $$.classTexts.bind($$), classFocus = $$.classFocus.bind($$);\r\n var mainText = $$.main\r\n .select('.' + CLASS.chartTexts)\r\n .selectAll('.' + CLASS.chartText)\r\n .data(targets);\r\n var mainTextEnter = mainText\r\n .enter()\r\n .append('g')\r\n .attr('class', classChartText)\r\n .style('opacity', 0)\r\n .style('pointer-events', 'none');\r\n mainTextEnter.append('g').attr('class', classTexts);\r\n mainTextEnter.merge(mainText).attr('class', function (d) {\r\n return classChartText(d) + classFocus(d);\r\n });\r\n };\r\n ChartInternal.prototype.updateText = function (xForText, yForText, durationForExit) {\r\n var $$ = this, config = $$.config, barOrLineData = $$.barOrLineData.bind($$), classText = $$.classText.bind($$);\r\n var mainText = $$.main\r\n .selectAll('.' + CLASS.texts)\r\n .selectAll('.' + CLASS.text)\r\n .data(barOrLineData);\r\n var mainTextEnter = mainText\r\n .enter()\r\n .append('text')\r\n .attr('class', classText)\r\n .attr('text-anchor', function (d) {\r\n return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle';\r\n })\r\n .style('stroke', 'none')\r\n .attr('x', xForText)\r\n .attr('y', yForText)\r\n .style('fill', function (d) {\r\n return $$.color(d);\r\n })\r\n .style('fill-opacity', 0);\r\n $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\r\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\r\n });\r\n mainText\r\n .exit()\r\n .transition()\r\n .duration(durationForExit)\r\n .style('fill-opacity', 0)\r\n .remove();\r\n };\r\n ChartInternal.prototype.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\r\n return [\r\n (withTransition ? this.mainText.transition(transition) : this.mainText)\r\n .attr('x', xForText)\r\n .attr('y', yForText)\r\n .style('fill', this.color)\r\n .style('fill-opacity', forFlow ? 0 : this.opacityForText.bind(this))\r\n ];\r\n };\r\n ChartInternal.prototype.getTextRect = function (text, cls, element) {\r\n var dummy = this.d3\r\n .select('body')\r\n .append('div')\r\n .classed('c3', true), svg = dummy\r\n .append('svg')\r\n .style('visibility', 'hidden')\r\n .style('position', 'fixed')\r\n .style('top', 0)\r\n .style('left', 0), font = this.d3.select(element).style('font'), rect;\r\n svg\r\n .selectAll('.dummy')\r\n .data([text])\r\n .enter()\r\n .append('text')\r\n .classed(cls ? cls : '', true)\r\n .style('font', font)\r\n .text(text)\r\n .each(function () {\r\n rect = getBBox(this);\r\n });\r\n dummy.remove();\r\n return rect;\r\n };\r\n ChartInternal.prototype.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\r\n var $$ = this, getAreaPoints = $$.generateGetAreaPoints(areaIndices, false), getBarPoints = $$.generateGetBarPoints(barIndices, false), getLinePoints = $$.generateGetLinePoints(lineIndices, false), getter = forX ? $$.getXForText : $$.getYForText;\r\n return function (d, i) {\r\n var getPoints = $$.isAreaType(d)\r\n ? getAreaPoints\r\n : $$.isBarType(d)\r\n ? getBarPoints\r\n : getLinePoints;\r\n return getter.call($$, getPoints(d, i), d, this);\r\n };\r\n };\r\n ChartInternal.prototype.getXForText = function (points, d, textElement) {\r\n var $$ = this, box = getBBox(textElement), xPos, padding;\r\n if ($$.config.axis_rotated) {\r\n padding = $$.isBarType(d) ? 4 : 6;\r\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\r\n }\r\n else {\r\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\r\n }\r\n // show labels regardless of the domain if value is null\r\n if (d.value === null) {\r\n if (xPos > $$.width) {\r\n xPos = $$.width - box.width;\r\n }\r\n else if (xPos < 0) {\r\n xPos = 4;\r\n }\r\n }\r\n return xPos;\r\n };\r\n ChartInternal.prototype.getYForText = function (points, d, textElement) {\r\n var $$ = this, box = getBBox(textElement), yPos;\r\n if ($$.config.axis_rotated) {\r\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\r\n }\r\n else {\r\n yPos = points[2][1];\r\n if (d.value < 0 || (d.value === 0 && !$$.hasPositiveValue)) {\r\n yPos += box.height;\r\n if ($$.isBarType(d) && $$.isSafari()) {\r\n yPos -= 3;\r\n }\r\n else if (!$$.isBarType(d) && $$.isChrome()) {\r\n yPos += 3;\r\n }\r\n }\r\n else {\r\n yPos += $$.isBarType(d) ? -3 : -6;\r\n }\r\n }\r\n // show labels regardless of the domain if value is null\r\n if (d.value === null && !$$.config.axis_rotated) {\r\n if (yPos < box.height) {\r\n yPos = box.height;\r\n }\r\n else if (yPos > this.height) {\r\n yPos = this.height - 4;\r\n }\r\n }\r\n return yPos;\r\n };\n\n ChartInternal.prototype.initTitle = function () {\r\n var $$ = this;\r\n $$.title = $$.svg\r\n .append('text')\r\n .text($$.config.title_text)\r\n .attr('class', $$.CLASS.title);\r\n };\r\n ChartInternal.prototype.redrawTitle = function () {\r\n var $$ = this;\r\n $$.title.attr('x', $$.xForTitle.bind($$)).attr('y', $$.yForTitle.bind($$));\r\n };\r\n ChartInternal.prototype.xForTitle = function () {\r\n var $$ = this, config = $$.config, position = config.title_position || 'left', x;\r\n if (position.indexOf('right') >= 0) {\r\n x =\r\n $$.currentWidth -\r\n $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width -\r\n config.title_padding.right;\r\n }\r\n else if (position.indexOf('center') >= 0) {\r\n x = Math.max(($$.currentWidth -\r\n $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) /\r\n 2, 0);\r\n }\r\n else {\r\n // left\r\n x = config.title_padding.left;\r\n }\r\n return x;\r\n };\r\n ChartInternal.prototype.yForTitle = function () {\r\n var $$ = this;\r\n return ($$.config.title_padding.top +\r\n $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node())\r\n .height);\r\n };\r\n ChartInternal.prototype.getTitlePadding = function () {\r\n var $$ = this;\r\n return $$.yForTitle() + $$.config.title_padding.bottom;\r\n };\n\n function powerOfTen(d) {\r\n return d / Math.pow(10, Math.ceil(Math.log(d) / Math.LN10 - 1e-12)) === 1;\r\n }\r\n ChartInternal.prototype.drawColorScale = function () {\r\n var $$ = this, d3 = $$.d3, config = $$.config, target = $$.data.targets[0], barWidth, barHeight, axis, points, legendAxis, axisScale, inverseScale, height;\r\n barWidth = !isNaN(config.stanford_scaleWidth)\r\n ? config.stanford_scaleWidth\r\n : 20;\r\n barHeight = 5;\r\n if (barHeight < 0 || barWidth < 0) {\r\n throw Error(\"Colorscale's barheight and barwidth must be greater than 0.\");\r\n }\r\n height =\r\n $$.height - config.stanford_padding.bottom - config.stanford_padding.top;\r\n points = d3.range(config.stanford_padding.bottom, height, barHeight);\r\n inverseScale = d3\r\n .scaleSequential(target.colors)\r\n .domain([points[points.length - 1], points[0]]);\r\n if ($$.colorScale) {\r\n $$.colorScale.remove();\r\n }\r\n $$.colorScale = $$.svg\r\n .append('g')\r\n .attr('width', 50)\r\n .attr('height', height)\r\n .attr('class', CLASS.colorScale);\r\n $$.colorScale\r\n .append('g')\r\n .attr('transform', \"translate(0, \" + config.stanford_padding.top + \")\")\r\n .selectAll('bars')\r\n .data(points)\r\n .enter()\r\n .append('rect')\r\n .attr('y', function (d, i) { return i * barHeight; })\r\n .attr('x', 0)\r\n .attr('width', barWidth)\r\n .attr('height', barHeight)\r\n .attr('fill', function (d) {\r\n return inverseScale(d);\r\n });\r\n // Legend Axis\r\n axisScale = d3\r\n .scaleLog()\r\n .domain([target.minEpochs, target.maxEpochs])\r\n .range([\r\n points[0] +\r\n config.stanford_padding.top +\r\n points[points.length - 1] +\r\n barHeight -\r\n 1,\r\n points[0] + config.stanford_padding.top\r\n ]);\r\n legendAxis = d3.axisRight(axisScale);\r\n if (config.stanford_scaleFormat === 'pow10') {\r\n legendAxis.tickValues([1, 10, 100, 1000, 10000, 100000, 1000000, 10000000]);\r\n }\r\n else if (isFunction(config.stanford_scaleFormat)) {\r\n legendAxis.tickFormat(config.stanford_scaleFormat);\r\n }\r\n else {\r\n legendAxis.tickFormat(d3.format('d'));\r\n }\r\n if (isFunction(config.stanford_scaleValues)) {\r\n legendAxis.tickValues(config.stanford_scaleValues(target.minEpochs, target.maxEpochs));\r\n }\r\n // Draw Axis\r\n axis = $$.colorScale\r\n .append('g')\r\n .attr('class', 'legend axis')\r\n .attr('transform', \"translate(\" + barWidth + \",0)\")\r\n .call(legendAxis);\r\n if (config.stanford_scaleFormat === 'pow10') {\r\n axis\r\n .selectAll('.tick text')\r\n .text(null)\r\n .filter(powerOfTen)\r\n .text(10)\r\n .append('tspan')\r\n .attr('dy', '-.7em') // https://bl.ocks.org/mbostock/6738229\r\n .text(function (d) {\r\n return Math.round(Math.log(d) / Math.LN10);\r\n });\r\n }\r\n $$.colorScale.attr('transform', \"translate(\" + ($$.currentWidth - $$.xForColorScale()) + \", 0)\");\r\n };\r\n ChartInternal.prototype.xForColorScale = function () {\r\n var $$ = this;\r\n return $$.config.stanford_padding.right + getBBox($$.colorScale.node()).width;\r\n };\r\n ChartInternal.prototype.getColorScalePadding = function () {\r\n var $$ = this;\r\n return $$.xForColorScale() + $$.config.stanford_padding.left + 20;\r\n };\n\n ChartInternal.prototype.isStanfordGraphType = function () {\r\n var $$ = this;\r\n return $$.config.data_type === 'stanford';\r\n };\r\n ChartInternal.prototype.initStanfordData = function () {\r\n var $$ = this, d3 = $$.d3, config = $$.config, target = $$.data.targets[0], epochs, maxEpochs, minEpochs;\r\n // Make larger values appear on top\r\n target.values.sort(compareEpochs);\r\n // Get array of epochs\r\n epochs = target.values.map(function (a) { return a.epochs; });\r\n minEpochs = !isNaN(config.stanford_scaleMin)\r\n ? config.stanford_scaleMin\r\n : d3.min(epochs);\r\n maxEpochs = !isNaN(config.stanford_scaleMax)\r\n ? config.stanford_scaleMax\r\n : d3.max(epochs);\r\n if (minEpochs > maxEpochs) {\r\n throw Error('Number of minEpochs has to be smaller than maxEpochs');\r\n }\r\n target.colors = isFunction(config.stanford_colors)\r\n ? config.stanford_colors\r\n : d3.interpolateHslLong(d3.hsl(250, 1, 0.5), d3.hsl(0, 1, 0.5));\r\n target.colorscale = d3\r\n .scaleSequentialLog(target.colors)\r\n .domain([minEpochs, maxEpochs]);\r\n target.minEpochs = minEpochs;\r\n target.maxEpochs = maxEpochs;\r\n };\r\n ChartInternal.prototype.getStanfordPointColor = function (d) {\r\n var $$ = this, target = $$.data.targets[0];\r\n return target.colorscale(d.epochs);\r\n };\r\n // http://jsfiddle.net/Xotic750/KtzLq/\r\n ChartInternal.prototype.getCentroid = function (points) {\r\n var area = getRegionArea(points);\r\n var x = 0, y = 0, i, j, f, point1, point2;\r\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\r\n point1 = points[i];\r\n point2 = points[j];\r\n f = point1.x * point2.y - point2.x * point1.y;\r\n x += (point1.x + point2.x) * f;\r\n y += (point1.y + point2.y) * f;\r\n }\r\n f = area * 6;\r\n return {\r\n x: x / f,\r\n y: y / f\r\n };\r\n };\r\n ChartInternal.prototype.getStanfordTooltipTitle = function (d) {\r\n var $$ = this, labelX = $$.axis.getLabelText('x'), labelY = $$.axis.getLabelText('y');\r\n return \"\\n \" + (labelX ? sanitise(labelX) : 'x') + \"\" + d.x + \"\\n \" + (labelY ? sanitise(labelY) : 'y') + \"\" + d.value + \"\\n \";\r\n };\r\n ChartInternal.prototype.countEpochsInRegion = function (region) {\r\n var $$ = this, target = $$.data.targets[0], total, count;\r\n total = target.values.reduce(function (accumulator, currentValue) { return accumulator + Number(currentValue.epochs); }, 0);\r\n count = target.values.reduce(function (accumulator, currentValue) {\r\n if (pointInRegion(currentValue, region)) {\r\n return accumulator + Number(currentValue.epochs);\r\n }\r\n return accumulator;\r\n }, 0);\r\n return {\r\n value: count,\r\n percentage: count !== 0 ? ((count / total) * 100).toFixed(1) : 0\r\n };\r\n };\r\n var getRegionArea = function (points) {\r\n // thanks to: https://stackoverflow.com/questions/16282330/find-centerpoint-of-polygon-in-javascript\r\n var area = 0, i, j, point1, point2;\r\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\r\n point1 = points[i];\r\n point2 = points[j];\r\n area += point1.x * point2.y;\r\n area -= point1.y * point2.x;\r\n }\r\n area /= 2;\r\n return area;\r\n };\r\n var pointInRegion = function (point, region) {\r\n // thanks to: http://bl.ocks.org/bycoffe/5575904\r\n // ray-casting algorithm based on\r\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\r\n var xi, yi, yj, xj, intersect, x = point.x, y = point.value, inside = false;\r\n for (var i = 0, j = region.length - 1; i < region.length; j = i++) {\r\n xi = region[i].x;\r\n yi = region[i].y;\r\n xj = region[j].x;\r\n yj = region[j].y;\r\n intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\r\n if (intersect) {\r\n inside = !inside;\r\n }\r\n }\r\n return inside;\r\n };\r\n var compareEpochs = function (a, b) {\r\n if (a.epochs < b.epochs) {\r\n return -1;\r\n }\r\n if (a.epochs > b.epochs) {\r\n return 1;\r\n }\r\n return 0;\r\n };\n\n ChartInternal.prototype.initStanfordElements = function () {\r\n var $$ = this;\r\n // Avoid blocking eventRect\r\n $$.stanfordElements = $$.main\r\n .select('.' + CLASS.chart)\r\n .append('g')\r\n .attr('class', CLASS.stanfordElements);\r\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordLines);\r\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordTexts);\r\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordRegions);\r\n };\r\n ChartInternal.prototype.updateStanfordElements = function (duration) {\r\n var $$ = this, main = $$.main, config = $$.config, stanfordLine, stanfordLineEnter, stanfordRegion, stanfordRegionEnter, stanfordText, stanfordTextEnter, xvCustom = $$.xvCustom.bind($$), yvCustom = $$.yvCustom.bind($$), countPointsInRegion = $$.countEpochsInRegion.bind($$);\r\n // Stanford-Lines\r\n stanfordLine = main\r\n .select('.' + CLASS.stanfordLines)\r\n .style('shape-rendering', 'geometricprecision')\r\n .selectAll('.' + CLASS.stanfordLine)\r\n .data(config.stanford_lines);\r\n // enter\r\n stanfordLineEnter = stanfordLine\r\n .enter()\r\n .append('g')\r\n .attr('class', function (d) {\r\n return CLASS.stanfordLine + (d['class'] ? ' ' + d['class'] : '');\r\n });\r\n stanfordLineEnter\r\n .append('line')\r\n .attr('x1', function (d) {\r\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\r\n })\r\n .attr('x2', function (d) {\r\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\r\n })\r\n .attr('y1', function (d) {\r\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\r\n })\r\n .attr('y2', function (d) {\r\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\r\n })\r\n .style('opacity', 0);\r\n // update\r\n $$.stanfordLines = stanfordLineEnter.merge(stanfordLine);\r\n $$.stanfordLines\r\n .select('line')\r\n .transition()\r\n .duration(duration)\r\n .attr('x1', function (d) {\r\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\r\n })\r\n .attr('x2', function (d) {\r\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\r\n })\r\n .attr('y1', function (d) {\r\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\r\n })\r\n .attr('y2', function (d) {\r\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\r\n })\r\n .style('opacity', 1);\r\n // exit\r\n stanfordLine\r\n .exit()\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', 0)\r\n .remove();\r\n // Stanford-Text\r\n stanfordText = main\r\n .select('.' + CLASS.stanfordTexts)\r\n .selectAll('.' + CLASS.stanfordText)\r\n .data(config.stanford_texts);\r\n // enter\r\n stanfordTextEnter = stanfordText\r\n .enter()\r\n .append('g')\r\n .attr('class', function (d) {\r\n return CLASS.stanfordText + (d['class'] ? ' ' + d['class'] : '');\r\n });\r\n stanfordTextEnter\r\n .append('text')\r\n .attr('x', function (d) { return (config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x')); })\r\n .attr('y', function (d) { return (config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y')); })\r\n .style('opacity', 0);\r\n // update\r\n $$.stanfordTexts = stanfordTextEnter.merge(stanfordText);\r\n $$.stanfordTexts\r\n .select('text')\r\n .transition()\r\n .duration(duration)\r\n .attr('x', function (d) { return (config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x')); })\r\n .attr('y', function (d) { return (config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y')); })\r\n .text(function (d) {\r\n return d.content;\r\n })\r\n .style('opacity', 1);\r\n // exit\r\n stanfordText\r\n .exit()\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', 0)\r\n .remove();\r\n // Stanford-Regions\r\n stanfordRegion = main\r\n .select('.' + CLASS.stanfordRegions)\r\n .selectAll('.' + CLASS.stanfordRegion)\r\n .data(config.stanford_regions);\r\n // enter\r\n stanfordRegionEnter = stanfordRegion\r\n .enter()\r\n .append('g')\r\n .attr('class', function (d) {\r\n return CLASS.stanfordRegion + (d['class'] ? ' ' + d['class'] : '');\r\n });\r\n stanfordRegionEnter\r\n .append('polygon')\r\n .attr('points', function (d) {\r\n return d.points\r\n .map(function (value) {\r\n return [\r\n config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'),\r\n config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')\r\n ].join(',');\r\n })\r\n .join(' ');\r\n })\r\n .style('opacity', 0);\r\n stanfordRegionEnter\r\n .append('text')\r\n .attr('x', function (d) { return $$.getCentroid(d.points).x; })\r\n .attr('y', function (d) { return $$.getCentroid(d.points).y; })\r\n .style('opacity', 0);\r\n // update\r\n $$.stanfordRegions = stanfordRegionEnter.merge(stanfordRegion);\r\n $$.stanfordRegions\r\n .select('polygon')\r\n .transition()\r\n .duration(duration)\r\n .attr('points', function (d) {\r\n return d.points\r\n .map(function (value) {\r\n return [\r\n config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'),\r\n config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')\r\n ].join(',');\r\n })\r\n .join(' ');\r\n })\r\n .style('opacity', function (d) {\r\n return d.opacity ? d.opacity : 0.2;\r\n });\r\n $$.stanfordRegions\r\n .select('text')\r\n .transition()\r\n .duration(duration)\r\n .attr('x', function (d) {\r\n return config.axis_rotated\r\n ? yvCustom($$.getCentroid(d.points), 'y')\r\n : xvCustom($$.getCentroid(d.points), 'x');\r\n })\r\n .attr('y', function (d) {\r\n return config.axis_rotated\r\n ? xvCustom($$.getCentroid(d.points), 'x')\r\n : yvCustom($$.getCentroid(d.points), 'y');\r\n })\r\n .text(function (d) {\r\n if (d.text) {\r\n var value, percentage, temp;\r\n if ($$.isStanfordGraphType()) {\r\n temp = countPointsInRegion(d.points);\r\n value = temp.value;\r\n percentage = temp.percentage;\r\n }\r\n return d.text(value, percentage);\r\n }\r\n return '';\r\n })\r\n .attr('text-anchor', 'middle')\r\n .attr('dominant-baseline', 'middle')\r\n .style('opacity', 1);\r\n // exit\r\n stanfordRegion\r\n .exit()\r\n .transition()\r\n .duration(duration)\r\n .style('opacity', 0)\r\n .remove();\r\n };\n\n ChartInternal.prototype.initTooltip = function () {\r\n var $$ = this, config = $$.config, i;\r\n $$.tooltip = $$.selectChart\r\n .style('position', 'relative')\r\n .append('div')\r\n .attr('class', CLASS.tooltipContainer)\r\n .style('position', 'absolute')\r\n .style('pointer-events', 'none')\r\n .style('display', 'none');\r\n // Show tooltip if needed\r\n if (config.tooltip_init_show) {\r\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\r\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\r\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\r\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\r\n break;\r\n }\r\n }\r\n config.tooltip_init_x = i;\r\n }\r\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\r\n return $$.addName(d.values[config.tooltip_init_x]);\r\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\r\n $$.tooltip\r\n .style('top', config.tooltip_init_position.top)\r\n .style('left', config.tooltip_init_position.left)\r\n .style('display', 'block');\r\n }\r\n };\r\n ChartInternal.prototype.getTooltipSortFunction = function () {\r\n var $$ = this, config = $$.config;\r\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\r\n // if data are not grouped or if an order is specified\r\n // for the tooltip values we sort them by their values\r\n var order = config.tooltip_order;\r\n if (order === undefined) {\r\n order = config.data_order;\r\n }\r\n var valueOf = function (obj) {\r\n return obj ? obj.value : null;\r\n };\r\n // if data are not grouped, we sort them by their value\r\n if (isString(order) && order.toLowerCase() === 'asc') {\r\n return function (a, b) {\r\n return valueOf(a) - valueOf(b);\r\n };\r\n }\r\n else if (isString(order) && order.toLowerCase() === 'desc') {\r\n return function (a, b) {\r\n return valueOf(b) - valueOf(a);\r\n };\r\n }\r\n else if (isFunction(order)) {\r\n // if the function is from data_order we need\r\n // to wrap the returned function in order to format\r\n // the sorted value to the expected format\r\n var sortFunction = order;\r\n if (config.tooltip_order === undefined) {\r\n sortFunction = function (a, b) {\r\n return order(a\r\n ? {\r\n id: a.id,\r\n values: [a]\r\n }\r\n : null, b\r\n ? {\r\n id: b.id,\r\n values: [b]\r\n }\r\n : null);\r\n };\r\n }\r\n return sortFunction;\r\n }\r\n else if (isArray(order)) {\r\n return function (a, b) {\r\n return order.indexOf(a.id) - order.indexOf(b.id);\r\n };\r\n }\r\n }\r\n else {\r\n // if data are grouped, we follow the order of grouped targets\r\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\r\n return i.id;\r\n });\r\n // if it was either asc or desc we need to invert the order\r\n // returned by orderTargets\r\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\r\n ids = ids.reverse();\r\n }\r\n return function (a, b) {\r\n return ids.indexOf(a.id) - ids.indexOf(b.id);\r\n };\r\n }\r\n };\r\n ChartInternal.prototype.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\r\n var $$ = this, config = $$.config, titleFormat = config.tooltip_format_title || defaultTitleFormat, nameFormat = config.tooltip_format_name ||\r\n function (name) {\r\n return name;\r\n }, text, i, title, value, name, bgcolor;\r\n var valueFormat = config.tooltip_format_value;\r\n if (!valueFormat) {\r\n valueFormat = $$.isTargetNormalized(d.id)\r\n ? function (v, ratio) { return (ratio * 100).toFixed(2) + \"%\"; }\r\n : defaultValueFormat;\r\n }\r\n var tooltipSortFunction = this.getTooltipSortFunction();\r\n if (tooltipSortFunction) {\r\n d.sort(tooltipSortFunction);\r\n }\r\n for (i = 0; i < d.length; i++) {\r\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\r\n continue;\r\n }\r\n if ($$.isStanfordGraphType()) {\r\n // Custom tooltip for stanford plots\r\n if (!text) {\r\n title = $$.getStanfordTooltipTitle(d[i]);\r\n text = \"\" + title;\r\n }\r\n bgcolor = $$.getStanfordPointColor(d[i]);\r\n name = sanitise(config.data_epochs); // Epochs key name\r\n value = d[i].epochs;\r\n }\r\n else {\r\n // Regular tooltip\r\n if (!text) {\r\n title = sanitise(titleFormat ? titleFormat(d[i].x, d[i].index) : d[i].x);\r\n text =\r\n \"
\" +\r\n (title || title === 0\r\n ? \"'\r\n : '');\r\n }\r\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\r\n if (value !== undefined) {\r\n // Skip elements when their name is set to null\r\n if (d[i].name === null) {\r\n continue;\r\n }\r\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\r\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\r\n }\r\n }\r\n if (value !== undefined) {\r\n text +=\r\n \"\";\r\n text +=\r\n \"';\r\n text += \"';\r\n text += '';\r\n }\r\n }\r\n return text + '
\" + title + '
\" +\r\n name +\r\n '\" + value + '
';\r\n };\r\n ChartInternal.prototype.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\r\n var $$ = this, config = $$.config, d3 = $$.d3;\r\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\r\n var forArc = $$.hasArcType(), mouse = d3.mouse(element);\r\n // Determin tooltip position\r\n if (forArc) {\r\n tooltipLeft =\r\n ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\r\n tooltipTop =\r\n ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\r\n }\r\n else {\r\n svgLeft = $$.getSvgLeft(true);\r\n if (config.axis_rotated) {\r\n tooltipLeft = svgLeft + mouse[0] + 100;\r\n tooltipRight = tooltipLeft + tWidth;\r\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\r\n tooltipTop = $$.x(dataToShow[0].x) + 20;\r\n }\r\n else {\r\n tooltipLeft =\r\n svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\r\n tooltipRight = tooltipLeft + tWidth;\r\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\r\n tooltipTop = mouse[1] + 15;\r\n }\r\n if (tooltipRight > chartRight) {\r\n // 20 is needed for Firefox to keep tooltip width\r\n tooltipLeft -= tooltipRight - chartRight + 20;\r\n }\r\n if (tooltipTop + tHeight > $$.currentHeight) {\r\n tooltipTop -= tHeight + 30;\r\n }\r\n }\r\n if (tooltipTop < 0) {\r\n tooltipTop = 0;\r\n }\r\n return {\r\n top: tooltipTop,\r\n left: tooltipLeft\r\n };\r\n };\r\n ChartInternal.prototype.showTooltip = function (selectedData, element) {\r\n var $$ = this, config = $$.config;\r\n var tWidth, tHeight, position;\r\n var forArc = $$.hasArcType(), dataToShow = selectedData.filter(function (d) {\r\n return d && isValue(d.value);\r\n }), positionFunction = config.tooltip_position || ChartInternal.prototype.tooltipPosition;\r\n if (dataToShow.length === 0 || !config.tooltip_show) {\r\n $$.hideTooltip();\r\n return;\r\n }\r\n $$.tooltip\r\n .html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color))\r\n .style('display', 'block');\r\n // Get tooltip dimensions\r\n tWidth = $$.tooltip.property('offsetWidth');\r\n tHeight = $$.tooltip.property('offsetHeight');\r\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\r\n // Set tooltip\r\n $$.tooltip\r\n .style('top', position.top + 'px')\r\n .style('left', position.left + 'px');\r\n };\r\n ChartInternal.prototype.hideTooltip = function () {\r\n this.tooltip.style('display', 'none');\r\n };\n\n ChartInternal.prototype.setTargetType = function (targetIds, type) {\r\n var $$ = this, config = $$.config;\r\n $$.mapToTargetIds(targetIds).forEach(function (id) {\r\n $$.withoutFadeIn[id] = type === config.data_types[id];\r\n config.data_types[id] = type;\r\n });\r\n if (!targetIds) {\r\n config.data_type = type;\r\n }\r\n };\r\n ChartInternal.prototype.hasType = function (type, targets) {\r\n var $$ = this, types = $$.config.data_types, has = false;\r\n targets = targets || $$.data.targets;\r\n if (targets && targets.length) {\r\n targets.forEach(function (target) {\r\n var t = types[target.id];\r\n if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {\r\n has = true;\r\n }\r\n });\r\n }\r\n else if (Object.keys(types).length) {\r\n Object.keys(types).forEach(function (id) {\r\n if (types[id] === type) {\r\n has = true;\r\n }\r\n });\r\n }\r\n else {\r\n has = $$.config.data_type === type;\r\n }\r\n return has;\r\n };\r\n ChartInternal.prototype.hasArcType = function (targets) {\r\n return (this.hasType('pie', targets) ||\r\n this.hasType('donut', targets) ||\r\n this.hasType('gauge', targets));\r\n };\r\n ChartInternal.prototype.isLineType = function (d) {\r\n var config = this.config, id = isString(d) ? d : d.id;\r\n return (!config.data_types[id] ||\r\n ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0);\r\n };\r\n ChartInternal.prototype.isStepType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\r\n };\r\n ChartInternal.prototype.isSplineType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\r\n };\r\n ChartInternal.prototype.isAreaType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return (['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >=\r\n 0);\r\n };\r\n ChartInternal.prototype.isBarType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return this.config.data_types[id] === 'bar';\r\n };\r\n ChartInternal.prototype.isScatterType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return this.config.data_types[id] === 'scatter';\r\n };\r\n ChartInternal.prototype.isStanfordType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return this.config.data_types[id] === 'stanford';\r\n };\r\n ChartInternal.prototype.isPieType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return this.config.data_types[id] === 'pie';\r\n };\r\n ChartInternal.prototype.isGaugeType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return this.config.data_types[id] === 'gauge';\r\n };\r\n ChartInternal.prototype.isDonutType = function (d) {\r\n var id = isString(d) ? d : d.id;\r\n return this.config.data_types[id] === 'donut';\r\n };\r\n ChartInternal.prototype.isArcType = function (d) {\r\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\r\n };\r\n ChartInternal.prototype.lineData = function (d) {\r\n return this.isLineType(d) ? [d] : [];\r\n };\r\n ChartInternal.prototype.arcData = function (d) {\r\n return this.isArcType(d.data) ? [d] : [];\r\n };\r\n /* not used\r\n function scatterData(d) {\r\n return isScatterType(d) ? d.values : [];\r\n }\r\n */\r\n ChartInternal.prototype.barData = function (d) {\r\n return this.isBarType(d) ? d.values : [];\r\n };\r\n ChartInternal.prototype.lineOrScatterOrStanfordData = function (d) {\r\n return this.isLineType(d) || this.isScatterType(d) || this.isStanfordType(d)\r\n ? d.values\r\n : [];\r\n };\r\n ChartInternal.prototype.barOrLineData = function (d) {\r\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\r\n };\n\n ChartInternal.prototype.isSafari = function () {\r\n var ua = window.navigator.userAgent;\r\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\r\n };\r\n ChartInternal.prototype.isChrome = function () {\r\n var ua = window.navigator.userAgent;\r\n return ua.indexOf('Chrome') >= 0;\r\n };\n\n ChartInternal.prototype.initZoom = function () {\r\n var $$ = this, d3 = $$.d3, config = $$.config, startEvent;\r\n $$.zoom = d3\r\n .zoom()\r\n .on('start', function () {\r\n if (config.zoom_type !== 'scroll') {\r\n return;\r\n }\r\n var e = d3.event.sourceEvent;\r\n if (e && e.type === 'brush') {\r\n return;\r\n }\r\n startEvent = e;\r\n config.zoom_onzoomstart.call($$.api, e);\r\n })\r\n .on('zoom', function () {\r\n if (config.zoom_type !== 'scroll') {\r\n return;\r\n }\r\n var e = d3.event.sourceEvent;\r\n if (e && e.type === 'brush') {\r\n return;\r\n }\r\n $$.redrawForZoom();\r\n config.zoom_onzoom.call($$.api, $$.x.orgDomain());\r\n })\r\n .on('end', function () {\r\n if (config.zoom_type !== 'scroll') {\r\n return;\r\n }\r\n var e = d3.event.sourceEvent;\r\n if (e && e.type === 'brush') {\r\n return;\r\n }\r\n // if click, do nothing. otherwise, click interaction will be canceled.\r\n if (e &&\r\n startEvent.clientX === e.clientX &&\r\n startEvent.clientY === e.clientY) {\r\n return;\r\n }\r\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\r\n });\r\n $$.zoom.updateDomain = function () {\r\n if (d3.event && d3.event.transform) {\r\n if (config.axis_rotated && config.zoom_type === 'scroll' && d3.event.sourceEvent.type === 'mousemove') {\r\n // we're moving the mouse in a rotated chart with zoom = \"scroll\", so we need rescaleY (i.e. vertical)\r\n $$.x.domain(d3.event.transform.rescaleY($$.subX).domain());\r\n }\r\n else {\r\n $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\r\n }\r\n }\r\n return this;\r\n };\r\n $$.zoom.updateExtent = function () {\r\n this.scaleExtent([1, Infinity])\r\n .translateExtent([\r\n [0, 0],\r\n [$$.width, $$.height]\r\n ])\r\n .extent([\r\n [0, 0],\r\n [$$.width, $$.height]\r\n ]);\r\n return this;\r\n };\r\n $$.zoom.update = function () {\r\n return this.updateExtent().updateDomain();\r\n };\r\n return $$.zoom.updateExtent();\r\n };\r\n ChartInternal.prototype.zoomTransform = function (range) {\r\n var $$ = this, s = [$$.x(range[0]), $$.x(range[1])];\r\n return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\r\n };\r\n ChartInternal.prototype.initDragZoom = function () {\r\n var $$ = this;\r\n var d3 = $$.d3;\r\n var config = $$.config;\r\n var context = ($$.context = $$.svg);\r\n var brushXPos = $$.margin.left + 20.5;\r\n var brushYPos = $$.margin.top + 0.5;\r\n if (!(config.zoom_type === 'drag' && config.zoom_enabled)) {\r\n return;\r\n }\r\n var getZoomedDomain = function (selection) {\r\n return selection && selection.map(function (x) { return $$.x.invert(x); });\r\n };\r\n var brush = ($$.dragZoomBrush = d3\r\n .brushX()\r\n .on('start', function () {\r\n $$.api.unzoom();\r\n $$.svg.select('.' + CLASS.dragZoom).classed('disabled', false);\r\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\r\n })\r\n .on('brush', function () {\r\n config.zoom_onzoom.call($$.api, getZoomedDomain(d3.event.selection));\r\n })\r\n .on('end', function () {\r\n if (d3.event.selection == null) {\r\n return;\r\n }\r\n var zoomedDomain = getZoomedDomain(d3.event.selection);\r\n if (!config.zoom_disableDefaultBehavior) {\r\n $$.api.zoom(zoomedDomain);\r\n }\r\n $$.svg.select('.' + CLASS.dragZoom).classed('disabled', true);\r\n config.zoom_onzoomend.call($$.api, zoomedDomain);\r\n }));\r\n context\r\n .append('g')\r\n .classed(CLASS.dragZoom, true)\r\n .attr('clip-path', $$.clipPath)\r\n .attr('transform', 'translate(' + brushXPos + ',' + brushYPos + ')')\r\n .call(brush);\r\n };\r\n ChartInternal.prototype.getZoomDomain = function () {\r\n var $$ = this, config = $$.config, d3 = $$.d3, min = d3.min([$$.orgXDomain[0], config.zoom_x_min]), max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\r\n return [min, max];\r\n };\r\n ChartInternal.prototype.redrawForZoom = function () {\r\n var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x;\r\n if (!config.zoom_enabled) {\r\n return;\r\n }\r\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\r\n return;\r\n }\r\n zoom.update();\r\n if (config.zoom_disableDefaultBehavior) {\r\n return;\r\n }\r\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\r\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\r\n }\r\n $$.redraw({\r\n withTransition: false,\r\n withY: config.zoom_rescale,\r\n withSubchart: false,\r\n withEventRect: false,\r\n withDimension: false\r\n });\r\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\r\n $$.cancelClick = true;\r\n }\r\n };\n\n return c3;\n\n})));\n","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n(function () {\n 'use strict';\n\n var css = '.frc-captcha *{margin:0;padding:0;border:0;text-align:initial;border-radius:px;filter:none!important;transition:none!important;font-weight:400;font-size:14px;line-height:1.2;text-decoration:none;background-color:initial;color:#222}.frc-captcha{position:relative;min-width:250px;max-width:312px;border:1px solid #f4f4f4;padding-bottom:12px;background-color:#fff}.frc-captcha b{font-weight:700}.frc-container{display:flex;align-items:center;min-height:52px}.frc-icon{fill:#222;stroke:#222;flex-shrink:0;margin:8px 8px 0}.frc-icon.frc-warning{fill:#c00}.frc-success .frc-icon{animation:1s ease-in both frc-fade-in}.frc-content{white-space:nowrap;display:flex;flex-direction:column;margin:4px 6px 0 0;overflow-x:auto;flex-grow:1}.frc-banner{position:absolute;bottom:0;right:6px;line-height:1}.frc-banner *{font-size:10px;opacity:.8;text-decoration:none}.frc-progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:3px 0;height:4px;border:none;background-color:#eee;color:#222;width:100%;transition:.5s linear}.frc-progress::-webkit-progress-bar{background:#eee}.frc-progress::-webkit-progress-value{background:#222}.frc-progress::-moz-progress-bar{background:#222}.frc-button{cursor:pointer;padding:2px 6px;background-color:#f1f1f1;border:1px solid transparent;text-align:center;font-weight:600;text-transform:none}.frc-button:focus{border:1px solid #333}.frc-button:hover{background-color:#ddd}.frc-captcha-solution{display:none}.frc-err-url{text-decoration:underline;font-size:.9em}.frc-rtl{direction:rtl}.frc-rtl .frc-content{margin:4px 0 0 6px}.frc-banner.frc-rtl{left:6px;right:auto}.dark.frc-captcha{color:#fff;background-color:#222;border-color:#333}.dark.frc-captcha *{color:#fff}.dark.frc-captcha button{background-color:#444}.dark .frc-icon{fill:#fff;stroke:#fff}.dark .frc-progress{background-color:#444}.dark .frc-progress::-webkit-progress-bar{background:#444}.dark .frc-progress::-webkit-progress-value{background:#ddd}.dark .frc-progress::-moz-progress-bar{background:#ddd}@keyframes frc-fade-in{from{opacity:0}to{opacity:1}}'; // This is not an enum to save some bytes in the output bundle.\n\n var SOLVER_TYPE_JS = 1;\n var CHALLENGE_SIZE_BYTES = 128; // @ts-ignore\n\n var loaderSVG = \"\";\n var errorSVG = \"\";\n /**\r\n * Base template used for all widget states\r\n * The reason we use raw string interpolation here is so we don't have to ship something like lit-html.\r\n */\n\n function getTemplate(fieldName, rtl, svgContent, svgAriaHidden, textContent, solutionString, buttonText) {\n var progress = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n var debugData = arguments.length > 8 ? arguments[8] : undefined;\n var additionalContainerClasses = arguments.length > 9 ? arguments[9] : undefined;\n return \"
\\n\").concat(svgContent, \"\\n
\\n \").concat(textContent, \"\\n \").concat(buttonText ? \"\") : \"\", \"\\n \").concat(progress ? \"0%\" : \"\", \"\\n
\\n
FriendlyCaptcha \\u21D7\\n\").concat(fieldName === \"-\" ? \"\" : \"\"));\n }\n /**\r\n * Used when the widget is ready to start solving.\r\n */\n\n\n function getReadyHTML(fieldName, l) {\n return getTemplate(fieldName, l.rtl, \"\", true, l.text_ready, \".UNSTARTED\", l.button_start, false);\n }\n /**\r\n * Used when the widget is retrieving a puzzle\r\n */\n\n\n function getFetchingHTML(fieldName, l) {\n return getTemplate(fieldName, l.rtl, loaderSVG, true, l.text_fetching, \".FETCHING\", undefined, true);\n }\n /**\r\n * Used when the solver is running, displays a progress bar.\r\n */\n\n\n function getRunningHTML(fieldName, l) {\n return getTemplate(fieldName, l.rtl, loaderSVG, true, l.text_solving, \".UNFINISHED\", undefined, true);\n }\n\n function getDoneHTML(fieldName, l, solution, data) {\n var timeData = \"\".concat(data.t.toFixed(0), \"s (\").concat((data.h / data.t * 0.001).toFixed(0), \"K/s)\").concat(data.solver === SOLVER_TYPE_JS ? \" JS Fallback\" : \"\");\n return getTemplate(fieldName, l.rtl, \"\".concat(l.text_completed_sr, \"\"), false, l.text_completed, solution, undefined, false, timeData, \"frc-success\");\n }\n\n function getExpiredHTML(fieldName, l) {\n return getTemplate(fieldName, l.rtl, errorSVG, true, l.text_expired, \".EXPIRED\", l.button_restart);\n }\n\n function getErrorHTML(fieldName, l, errorDescription) {\n var recoverable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var headless = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n return getTemplate(fieldName, l.rtl, errorSVG, true, \"\".concat(l.text_error, \"
\").concat(errorDescription), headless ? \".HEADLESS_ERROR\" : \".ERROR\", recoverable ? l.button_retry : undefined);\n }\n\n function findCaptchaElements() {\n var elements = document.querySelectorAll(\".frc-captcha\");\n\n if (elements.length === 0) {\n console.warn(\"FriendlyCaptcha: No div was found with .frc-captcha class\");\n }\n\n return elements;\n }\n /**\r\n * Injects the style if no #frc-style element is already present\r\n * (to support custom stylesheets)\r\n */\n\n\n function injectStyle() {\n if (!document.querySelector(\"#frc-style\")) {\n var styleSheet = document.createElement(\"style\");\n styleSheet.id = \"frc-style\";\n styleSheet.innerHTML = css;\n document.head.appendChild(styleSheet);\n }\n }\n /**\r\n * @param element parent element of friendlycaptcha\r\n * @param progress value between 0 and 1\r\n */\n\n\n function updateProgressBar(element, data) {\n var p = element.querySelector(\".frc-progress\");\n var perc = (data.i + 1) / data.n;\n\n if (p) {\n p.value = perc;\n p.innerText = perc.toFixed(2) + \"%\";\n p.title = data.i + 1 + \"/\" + data.n + \" (\" + (data.h / data.t * 0.001).toFixed(0) + \"K/s)\";\n }\n }\n /**\r\n * Traverses parent nodes until a
is found, returns null if not found.\r\n */\n\n\n function findParentFormElement(element) {\n while (element.tagName !== \"FORM\") {\n element = element.parentElement;\n\n if (!element) {\n return null;\n }\n }\n\n return element;\n }\n /**\r\n * Add listener to specified element that will only fire once on focus.\r\n */\n\n\n function executeOnceOnFocusInEvent(element, listener) {\n element.addEventListener(\"focusin\", listener, {\n once: true,\n passive: true\n });\n } // Adapted from the base64-arraybuffer package implementation\n // (https://github.com/niklasvh/base64-arraybuffer, MIT licensed)\n\n\n var CHARS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var EQ_CHAR = \"=\".charCodeAt(0); // Use a lookup table to find the index.\n\n var lookup = new Uint8Array(256);\n\n for (var i = 0; i < CHARS.length; i++) {\n lookup[CHARS.charCodeAt(i)] = i;\n }\n\n function encode(bytes) {\n var len = bytes.length;\n var base64 = \"\";\n\n for (var _i = 0; _i < len; _i += 3) {\n var b0 = bytes[_i + 0];\n var b1 = bytes[_i + 1];\n var b2 = bytes[_i + 2]; // This temporary variable stops the NextJS 13 compiler from breaking this code in optimization.\n // See issue https://github.com/FriendlyCaptcha/friendly-challenge/issues/165\n\n var t = \"\";\n t += CHARS.charAt(b0 >>> 2);\n t += CHARS.charAt((b0 & 3) << 4 | b1 >>> 4);\n t += CHARS.charAt((b1 & 15) << 2 | b2 >>> 6);\n t += CHARS.charAt(b2 & 63);\n base64 += t;\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n }\n\n function decode(base64) {\n var len = base64.length;\n var bufferLength = len * 3 >>> 2; // * 0.75\n\n if (base64.charCodeAt(len - 1) === EQ_CHAR) bufferLength--;\n if (base64.charCodeAt(len - 2) === EQ_CHAR) bufferLength--;\n var bytes = new Uint8Array(bufferLength);\n\n for (var _i2 = 0, p = 0; _i2 < len; _i2 += 4) {\n var encoded1 = lookup[base64.charCodeAt(_i2 + 0)];\n var encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n var encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n var encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return bytes;\n } // Defensive init to make it easier to integrate with Gatsby, NextJS, and friends.\n\n\n var nav;\n var ua;\n\n if (typeof navigator !== \"undefined\") {\n nav = navigator;\n ua = nav.userAgent.toLowerCase();\n }\n /**\r\n * Headless browser detection on the clientside is imperfect. One can modify any clientside code to disable or change this check,\r\n * and one can spoof whatever is checked here. However, that doesn't make it worthless: it's yet another hurdle for spammers and\r\n * it stops unsophisticated scripters from making any request whatsoever.\r\n */\n\n\n function isHeadless() {\n return (//tell-tale bot signs\n ua.indexOf(\"headless\") !== -1 || nav.appVersion.indexOf(\"Headless\") !== -1 || ua.indexOf(\"bot\") !== -1 || // http://www.useragentstring.com/pages/useragentstring.php?typ=Browser\n ua.indexOf(\"crawl\") !== -1 || // Only IE5 has two distributions that has this on windows NT.. so yeah.\n nav.webdriver === true || !nav.language || nav.languages !== undefined && !nav.languages.length // IE 11 does not support NavigatorLanguage.languages https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages\n\n );\n }\n /**\n * Maps a value between 0 and 255 to a difficulty threshold (as uint32)\n * Difficulty 0 maps to 99.99% probability of being right on the first attempt\n * Anything above 250 needs 2^32 tries on average to solve.\n * 150 to 180 seems reasonable\n */\n\n\n function difficultyToThreshold(value) {\n if (value > 255) {\n value = 255;\n } else if (value < 0) {\n value = 0;\n }\n\n return Math.pow(2, (255.999 - value) / 8.0) >>> 0;\n }\n\n var PUZZLE_EXPIRY_OFFSET = 13;\n var NUMBER_OF_PUZZLES_OFFSET = 14;\n var PUZZLE_DIFFICULTY_OFFSET = 15;\n\n function getPuzzleSolverInputs(puzzleBuffer, numPuzzles) {\n var startingPoints = [];\n\n for (var _i3 = 0; _i3 < numPuzzles; _i3++) {\n var input = new Uint8Array(CHALLENGE_SIZE_BYTES);\n input.set(puzzleBuffer);\n input[120] = _i3;\n startingPoints.push(input);\n }\n\n return startingPoints;\n }\n\n function decodeBase64Puzzle(base64Puzzle) {\n var parts = base64Puzzle.split(\".\");\n var puzzle = parts[1];\n var arr = decode(puzzle);\n return {\n signature: parts[0],\n base64: puzzle,\n buffer: arr,\n n: arr[NUMBER_OF_PUZZLES_OFFSET],\n threshold: difficultyToThreshold(arr[PUZZLE_DIFFICULTY_OFFSET]),\n expiry: arr[PUZZLE_EXPIRY_OFFSET] * 300000\n };\n }\n\n function getPuzzle(urlsSeparatedByComma, siteKey, lang) {\n return new Promise(function ($return, $error) {\n var urls;\n urls = urlsSeparatedByComma.split(\",\");\n var $Loop_4_trampoline, $Loop_4_local;\n\n function $Loop_4_step() {\n var _$Loop_4_local = $Loop_4_local(),\n _$Loop_4_local2 = _slicedToArray(_$Loop_4_local, 1),\n i = _$Loop_4_local2[0];\n\n i++;\n return $Loop_4.bind(this, i);\n }\n\n function $Loop_4(i) {\n $Loop_4_local = function $Loop_4_local() {\n return [i];\n };\n\n if (i < urls.length) {\n var $Try_1_Post = function $Try_1_Post() {\n try {\n return $Loop_4_step;\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n\n var $Try_1_Catch = function $Try_1_Catch(e) {\n try {\n {\n console.error(\"[FRC Fetch]:\", e);\n var err;\n err = new Error(\"\".concat(lang.text_fetch_error, \" \").concat(urls[i], \"\"));\n err.rawError = e;\n throw err;\n }\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n\n try {\n var response;\n return Promise.resolve(fetchAndRetryWithBackoff(urls[i] + \"?sitekey=\" + siteKey, {\n headers: [[\"x-frc-client\", \"js-0.9.14\"]],\n mode: \"cors\"\n }, 2)).then(function ($await_7) {\n try {\n var $If_6 = function $If_6() {\n return $Try_1_Post();\n };\n\n response = $await_7;\n\n if (response.ok) {\n var json;\n return Promise.resolve(response.json()).then(function ($await_8) {\n try {\n json = $await_8;\n return $return(json.data.puzzle);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }, $Try_1_Catch);\n } else {\n var _json;\n\n var $Try_2_Post = function () {\n try {\n if (_json && _json.errors && _json.errors[0] === \"endpoint_not_enabled\") {\n throw Error(\"Endpoint not allowed (\".concat(response.status, \")\"));\n }\n\n if (i === urls.length - 1) {\n throw Error(\"Response status \".concat(response.status, \" \").concat(response.statusText, \" \").concat(_json ? _json.errors : \"\"));\n }\n\n return $If_6.call(this);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }.bind(this);\n\n var $Try_2_Catch = function $Try_2_Catch(e) {\n /* Do nothing, the error is not valid JSON */\n try {\n return $Try_2_Post();\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n };\n\n try {\n return Promise.resolve(response.json()).then(function ($await_9) {\n try {\n _json = $await_9;\n return $Try_2_Post();\n } catch ($boundEx) {\n return $Try_2_Catch($boundEx);\n }\n }, $Try_2_Catch);\n } catch (e) {\n $Try_2_Catch(e);\n }\n }\n\n return $If_6.call(this);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }.bind(this), $Try_1_Catch);\n } catch (e) {\n $Try_1_Catch(e);\n }\n } else return [1];\n }\n\n return ($Loop_4_trampoline = function (q) {\n while (q) {\n if (q.then) return void q.then($Loop_4_trampoline, $error);\n\n try {\n if (q.pop) {\n if (q.length) return q.pop() ? $Loop_4_exit.call(this) : q;else q = $Loop_4_step;\n } else q = q.call(this);\n } catch (_exception) {\n return $error(_exception);\n }\n }\n }.bind(this))($Loop_4.bind(this, 0));\n\n function $Loop_4_exit() {\n // This code should never be reached.\n return $error(Error(\"Internal error\"));\n }\n });\n }\n /**\r\n * Retries given request with exponential backoff (starting with 1000ms delay, multiplying by 4 every time)\r\n * @param url Request (can be string url) to fetch\r\n * @param opts Options for fetch\r\n * @param n Number of times to attempt before giving up.\r\n */\n\n\n function fetchAndRetryWithBackoff(url, opts, n) {\n return new Promise(function ($return, $error) {\n var time = 1000;\n return $return(fetch(url, opts).catch(function (error) {\n return new Promise(function ($return, $error) {\n if (n === 0) return $error(error);\n return Promise.resolve(new Promise(function (r) {\n return setTimeout(r, time);\n })).then(function ($await_10) {\n try {\n time *= 4;\n return $return(fetchAndRetryWithBackoff(url, opts, n - 1));\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }, $error);\n });\n }));\n });\n } // English\n\n\n var LANG_EN = {\n text_init: \"Initializing...\",\n text_ready: \"Anti-Robot Verification\",\n button_start: \"Click to start verification\",\n text_fetching: \"Fetching Challenge\",\n text_solving: \"Verifying you are human...\",\n text_completed: \"I am human\",\n text_completed_sr: \"Automatic spam check completed\",\n text_expired: \"Anti-Robot verification expired\",\n button_restart: \"Restart\",\n text_error: \"Verification failed\",\n button_retry: \"Retry\",\n text_fetch_error: \"Failed to connect to\"\n }; // French\n\n var LANG_FR = {\n text_init: \"Chargement...\",\n text_ready: \"Vérification Anti-Robot\",\n button_start: \"Clique ici pour vérifier\",\n text_fetching: \"Chargement du défi\",\n text_solving: \"Nous vérifions que vous n'êtes pas un robot...\",\n text_completed: \"Je ne suis pas un robot\",\n text_completed_sr: \"Vérification automatique des spams terminée\",\n text_expired: \"Vérification anti-robot expirée\",\n button_restart: \"Redémarrer\",\n text_error: \"Échec de la vérification\",\n button_retry: \"Recommencer\",\n text_fetch_error: \"Problème de connexion avec\"\n }; // German\n\n var LANG_DE = {\n text_init: \"Initialisierung...\",\n text_ready: \"Anti-Roboter-Verifizierung\",\n button_start: \"Hier klicken\",\n text_fetching: \"Herausforderung laden...\",\n text_solving: \"Verifizierung, dass Sie ein Mensch sind...\",\n text_completed: \"Ich bin ein Mensch\",\n text_completed_sr: \"Automatische Spamprüfung abgeschlossen\",\n text_expired: \"Verifizierung abgelaufen\",\n button_restart: \"Erneut starten\",\n text_error: \"Verifizierung fehlgeschlagen\",\n button_retry: \"Erneut versuchen\",\n text_fetch_error: \"Verbindungsproblem mit\"\n }; // Dutch\n\n var LANG_NL = {\n text_init: \"Initializeren...\",\n text_ready: \"Anti-robotverificatie\",\n button_start: \"Klik om te starten\",\n text_fetching: \"Aan het laden...\",\n text_solving: \"Anti-robotverificatie bezig...\",\n text_completed: \"Ik ben een mens\",\n text_completed_sr: \"Automatische anti-spamcheck voltooid\",\n text_expired: \"Verificatie verlopen\",\n button_restart: \"Opnieuw starten\",\n text_error: \"Verificatie mislukt\",\n button_retry: \"Opnieuw proberen\",\n text_fetch_error: \"Verbinding mislukt met\"\n }; // Italian\n\n var LANG_IT = {\n text_init: \"Inizializzazione...\",\n text_ready: \"Verifica Anti-Robot\",\n button_start: \"Clicca per iniziare\",\n text_fetching: \"Caricamento...\",\n text_solving: \"Verificando che sei umano...\",\n text_completed: \"Non sono un robot\",\n text_completed_sr: \"Controllo automatico dello spam completato\",\n text_expired: \"Verifica Anti-Robot scaduta\",\n button_restart: \"Ricomincia\",\n text_error: \"Verifica fallita\",\n button_retry: \"Riprova\",\n text_fetch_error: \"Problema di connessione con\"\n }; // Portuguese\n\n var LANG_PT = {\n text_init: \"Inicializando...\",\n text_ready: \"Verificação Anti-Robô\",\n button_start: \"Clique para iniciar verificação\",\n text_fetching: \"Carregando...\",\n text_solving: \"Verificando se você é humano...\",\n text_completed: \"Eu sou humano\",\n text_completed_sr: \"Verificação automática de spam concluída\",\n text_expired: \"Verificação Anti-Robô expirada\",\n button_restart: \"Reiniciar\",\n text_error: \"Verificação falhou\",\n button_retry: \"Tentar novamente\",\n text_fetch_error: \"Falha de conexão com\"\n }; // Spanish\n\n var LANG_ES = {\n text_init: \"Inicializando...\",\n text_ready: \"Verificación Anti-Robot\",\n button_start: \"Haga clic para iniciar la verificación\",\n text_fetching: \"Cargando desafío\",\n text_solving: \"Verificando que eres humano...\",\n text_completed: \"Soy humano\",\n text_completed_sr: \"Verificación automática de spam completada\",\n text_expired: \"Verificación Anti-Robot expirada\",\n button_restart: \"Reiniciar\",\n text_error: \"Ha fallado la verificación\",\n button_retry: \"Intentar de nuevo\",\n text_fetch_error: \"Error al conectarse a\"\n }; // Catalan\n\n var LANG_CA = {\n text_init: \"Inicialitzant...\",\n text_ready: \"Verificació Anti-Robot\",\n button_start: \"Fes clic per començar la verificació\",\n text_fetching: \"Carregant repte\",\n text_solving: \"Verificant que ets humà...\",\n text_completed: \"Soc humà\",\n text_completed_sr: \"Verificació automàtica de correu brossa completada\",\n text_expired: \"La verificació Anti-Robot ha expirat\",\n button_restart: \"Reiniciar\",\n text_error: \"Ha fallat la verificació\",\n button_retry: \"Tornar a provar\",\n text_fetch_error: \"Error connectant a\"\n }; // Japanese\n\n var LANG_JA = {\n text_init: \"開始しています...\",\n text_ready: \"アンチロボット認証\",\n button_start: \"クリックして認証を開始\",\n text_fetching: \"ロードしています\",\n text_solving: \"認証中...\",\n text_completed: \"私はロボットではありません\",\n text_completed_sr: \"自動スパムチェックが完了しました\",\n text_expired: \"認証の期限が切れています\",\n button_restart: \"再度認証を行う\",\n text_error: \"認証にエラーが発生しました\",\n button_retry: \"再度認証を行う\",\n text_fetch_error: \"接続ができませんでした\"\n }; // Danish\n\n var LANG_DA = {\n text_init: \"Aktiverer...\",\n text_ready: \"Jeg er ikke en robot\",\n button_start: \"Klik for at starte verifikationen\",\n text_fetching: \"Henter data\",\n text_solving: \"Kontrollerer at du er et menneske...\",\n text_completed: \"Jeg er et menneske.\",\n text_completed_sr: \"Automatisk spamkontrol gennemført\",\n text_expired: \"Verifikationen kunne ikke fuldføres\",\n button_restart: \"Genstart\",\n text_error: \"Bekræftelse mislykkedes\",\n button_retry: \"Prøv igen\",\n text_fetch_error: \"Forbindelsen mislykkedes\"\n }; // Russian\n\n var LANG_RU = {\n text_init: \"Инициализация...\",\n text_ready: \"АнтиРобот проверка\",\n button_start: \"Нажмите, чтобы начать проверку\",\n text_fetching: \"Получаю задачу\",\n text_solving: \"Проверяю, что вы человек...\",\n text_completed: \"Я человек\",\n text_completed_sr: \"Aвтоматическая проверка на спам завершена\",\n text_expired: \"Срок АнтиРоботной проверки истёк\",\n button_restart: \"Начать заново\",\n text_error: \"Ошибка проверки\",\n button_retry: \"Повторить ещё раз\",\n text_fetch_error: \"Ошибка подключения\"\n }; // Swedish\n\n var LANG_SV = {\n text_init: \"Aktiverar...\",\n text_ready: \"Jag är inte en robot\",\n button_start: \"Klicka för att verifiera\",\n text_fetching: \"Hämtar data\",\n text_solving: \"Kontrollerar att du är människa...\",\n text_completed: \"Jag är en människa\",\n text_completed_sr: \"Automatisk spamkontroll slutförd\",\n text_expired: \"Anti-robot-verifieringen har löpt ut\",\n button_restart: \"Börja om\",\n text_error: \"Verifiering kunde inte slutföras\",\n button_retry: \"Omstart\",\n text_fetch_error: \"Verifiering misslyckades\"\n }; // Turkish\n\n var LANG_TR = {\n text_init: \"Başlatılıyor...\",\n text_ready: \"Anti-Robot Doğrulaması\",\n button_start: \"Doğrulamayı başlatmak için tıklayın\",\n text_fetching: \"Yükleniyor\",\n text_solving: \"Robot olmadığınız doğrulanıyor...\",\n text_completed: \"Ben bir insanım\",\n text_completed_sr: \"Otomatik spam kontrolü tamamlandı\",\n text_expired: \"Anti-Robot doğrulamasının süresi doldu\",\n button_restart: \"Yeniden başlat\",\n text_error: \"Doğrulama başarısız oldu\",\n button_retry: \"Tekrar dene\",\n text_fetch_error: \"Bağlantı başarısız oldu\"\n }; // Greek\n\n var LANG_EL = {\n text_init: \"Προετοιμασία...\",\n text_ready: \"Anti-Robot Επαλήθευση\",\n button_start: \" Κάντε κλικ για να ξεκινήσει η επαλήθευση\",\n text_fetching: \" Λήψη πρόκλησης\",\n text_solving: \" Επιβεβαίωση ανθρώπου...\",\n text_completed: \"Είμαι άνθρωπος\",\n text_completed_sr: \" Ο αυτόματος έλεγχος ανεπιθύμητου περιεχομένου ολοκληρώθηκε\",\n text_expired: \" Η επαλήθευση Anti-Robot έληξε\",\n button_restart: \" Επανεκκίνηση\",\n text_error: \" Η επαλήθευση απέτυχε\",\n button_retry: \" Δοκιμάστε ξανά\",\n text_fetch_error: \" Αποτυχία σύνδεσης με\"\n }; // Ukrainian\n\n var LANG_UK = {\n text_init: \"Ініціалізація...\",\n text_ready: \"Антиробот верифікація\",\n button_start: \"Натисніть, щоб розпочати верифікацію\",\n text_fetching: \"З’єднання\",\n text_solving: \"Перевірка, що ви не робот...\",\n text_completed: \"Я не робот\",\n text_completed_sr: \"Автоматична перевірка спаму завершена\",\n text_expired: \"Час вичерпано\",\n button_restart: \"Почати знову\",\n text_error: \"Верифікація не вдалась\",\n button_retry: \"Спробувати знову\",\n text_fetch_error: \"Не вдалось з’єднатись\"\n }; // Bulgarian\n\n var LANG_BG = {\n text_init: \"Инициализиране...\",\n text_ready: \"Анти-робот проверка\",\n button_start: \"Щракнете, за да започнете проверката\",\n text_fetching: \"Предизвикателство\",\n text_solving: \"Проверяваме дали си човек...\",\n text_completed: \"Аз съм човек\",\n text_completed_sr: \"Автоматичната проверка за спам е завършена\",\n text_expired: \"Анти-Робот проверката изтече\",\n button_restart: \"Рестартирайте\",\n text_error: \"Неуспешна проверка\",\n button_retry: \"Опитайте пак\",\n text_fetch_error: \"Неуспешно свързване с\"\n }; // Czech\n\n var LANG_CS = {\n text_init: \"Inicializace...\",\n text_ready: \"Ověření proti robotům\",\n button_start: \"Klikněte pro ověření\",\n text_fetching: \"Problém při načítání\",\n text_solving: \"Ověření, že jste člověk...\",\n text_completed: \"Jsem člověk\",\n text_completed_sr: \"Automatická kontrola spamu dokončena\",\n text_expired: \"Ověření proti robotům vypršelo\",\n button_restart: \"Restartovat\",\n text_error: \"Ověření se nezdařilo\",\n button_retry: \"Zkusit znovu\",\n text_fetch_error: \"Připojení se nezdařilo\"\n }; // Slovak\n\n var LANG_SK = {\n text_init: \"Inicializácia...\",\n text_ready: \"Overenie proti robotom\",\n button_start: \"Kliknite pre overenie\",\n text_fetching: \"Problém pri načítaní\",\n text_solving: \"Overenie, že ste človek...\",\n text_completed: \"Som človek\",\n text_completed_sr: \"Automatická kontrola spamu dokončená\",\n text_expired: \"Overenie proti robotom vypršalo\",\n button_restart: \"Reštartovať\",\n text_error: \"Overenie sa nepodarilo\",\n button_retry: \"Skúsiť znova\",\n text_fetch_error: \"Pripojenie sa nepodarilo\"\n }; // Norwegian\n\n var LANG_NO = {\n text_init: \" Aktiverer...\",\n text_ready: \"Jeg er ikke en robot\",\n button_start: \"Klikk for å starte verifiseringen\",\n text_fetching: \"Henter data\",\n text_solving: \"Sjekker at du er et menneske...\",\n text_completed: \"Jeg er et menneske\",\n text_completed_sr: \"Automatisk spam-sjekk fullført\",\n text_expired: \"Verifisering kunne ikke fullføres\",\n button_restart: \"Omstart\",\n text_error: \"Bekreftelsen mislyktes\",\n button_retry: \"Prøv på nytt\",\n text_fetch_error: \"Tilkoblingen mislyktes\"\n }; // Finnish\n\n var LANG_FI = {\n text_init: \"Aktivoidaan...\",\n text_ready: \"En ole robotti\",\n button_start: \"Aloita vahvistus klikkaamalla\",\n text_fetching: \"Haetaan tietoja\",\n text_solving: \"Tarkistaa, että olet ihminen...\",\n text_completed: \"Olen ihminen\",\n text_completed_sr: \"Automaattinen roskapostin tarkistus suoritettu\",\n text_expired: \"Vahvistusta ei voitu suorittaa loppuun\",\n button_restart: \"Uudelleenkäynnistys\",\n text_error: \"Vahvistus epäonnistui\",\n button_retry: \"Yritä uudelleen\",\n text_fetch_error: \"Yhteys epäonnistui\"\n }; // Latvian\n\n var LANG_LV = {\n text_init: \"Notiek inicializēšana...\",\n text_ready: \"Verifikācija, ka neesat robots\",\n button_start: \"Noklikšķiniet, lai sāktu verifikāciju\",\n text_fetching: \"Notiek drošības uzdevuma izgūšana\",\n text_solving: \"Notiek pārbaude, vai esat cilvēks...\",\n text_completed: \"Es esmu cilvēks\",\n text_completed_sr: \"Automātiska surogātpasta pārbaude pabeigta\",\n text_expired: \"Verifikācijas, ka neesat robots, derīgums beidzies\",\n button_restart: \"Restartēt\",\n text_error: \"Verifikācija neizdevās\",\n button_retry: \"Mēģināt vēlreiz\",\n text_fetch_error: \"Neizdevās izveidot savienojumu ar\"\n }; // Lithuanian\n\n var LANG_LT = {\n text_init: \"Inicijuojama...\",\n text_ready: \"Patikrinimas, ar nesate robotas\",\n button_start: \"Spustelėkite patikrinimui pradėti\",\n text_fetching: \"Gavimo iššūkis\",\n text_solving: \"Tikrinama, ar esate žmogus...\",\n text_completed: \"Esu žmogus\",\n text_completed_sr: \"Automatinė patikra dėl pašto šiukšlių atlikta\",\n text_expired: \"Patikrinimas, ar nesate robotas, baigė galioti\",\n button_restart: \"Pradėti iš naujo\",\n text_error: \"Patikrinimas nepavyko\",\n button_retry: \"Kartoti\",\n text_fetch_error: \"Nepavyko prisijungti prie\"\n }; // Polish\n\n var LANG_PL = {\n text_init: \"Inicjowanie...\",\n text_ready: \"Weryfikacja antybotowa\",\n button_start: \"Kliknij, aby rozpocząć weryfikację\",\n text_fetching: \"Pobieranie\",\n text_solving: \"Weryfikacja, czy nie jesteś robotem...\",\n text_completed: \"Nie jestem robotem\",\n text_completed_sr: \"Zakończono automatyczne sprawdzanie spamu\",\n text_expired: \"Weryfikacja antybotowa wygasła\",\n button_restart: \"Uruchom ponownie\",\n text_error: \"Weryfikacja nie powiodła się\",\n button_retry: \"Spróbuj ponownie\",\n text_fetch_error: \"Nie udało się połączyć z\"\n }; // Estonian\n\n var LANG_ET = {\n text_init: \"Initsialiseerimine...\",\n text_ready: \"Robotivastane kinnitus\",\n button_start: \"Kinnitamisega alustamiseks klõpsake\",\n text_fetching: \"Väljakutse toomine\",\n text_solving: \"Kinnitatakse, et sa oled inimene...\",\n text_completed: \"Ma olen inimene\",\n text_completed_sr: \"Automaatne rämpsposti kontroll on lõpetatud\",\n text_expired: \"Robotivastane kinnitus aegus\",\n button_restart: \"Taaskäivita\",\n text_error: \"Kinnitamine nurjus\",\n button_retry: \"Proovi uuesti\",\n text_fetch_error: \"Ühenduse loomine nurjus\"\n }; // Croatian\n\n var LANG_HR = {\n text_init: \"Početno postavljanje...\",\n text_ready: \"Provjera protiv robota\",\n button_start: \"Kliknite za početak provjere\",\n text_fetching: \"Dohvaćanje izazova\",\n text_solving: \"Provjeravamo jeste li čovjek...\",\n text_completed: \"Nisam robot\",\n text_completed_sr: \"Automatska provjera je završena\",\n text_expired: \"Vrijeme za provjeru protiv robota je isteklo\",\n button_restart: \"Osvježi\",\n text_error: \"Provjera nije uspjlela\",\n button_retry: \" Ponovo pokreni\",\n text_fetch_error: \"Nije moguće uspostaviti vezu\"\n }; // Serbian\n\n var LANG_SR = {\n text_init: \"Pokretanje...\",\n text_ready: \"Anti-Robot Verifikacija\",\n button_start: \"Kliknite da biste započeli verifikaciju\",\n text_fetching: \"Učitavanje izazova\",\n text_solving: \"Verifikacija da ste čovek...\",\n text_completed: \"Ja sam čovek\",\n text_completed_sr: \"Automatska provera neželjene pošte je završena\",\n text_expired: \"Anti-Robot verifikacija je istekla\",\n button_restart: \"Ponovo pokrenuti\",\n text_error: \"Verifikacija nije uspela\",\n button_retry: \"Pokušajte ponovo\",\n text_fetch_error: \"Neuspelo povezivanje sa...\"\n }; // Slovenian\n\n var LANG_SL = {\n text_init: \"Inicializiranje...\",\n text_ready: \"Preverjanje robotov\",\n button_start: \"Kliknite za začetek preverjanja\",\n text_fetching: \"Prenašanje izziva\",\n text_solving: \"Preverjamo, ali ste človek\",\n text_completed: \"Nisem robot\",\n text_completed_sr: \"Avtomatsko preverjanje je zaključeno\",\n text_expired: \"Preverjanje robotov je poteklo\",\n button_restart: \"Osveži\",\n text_error: \"Preverjanje ni uspelo\",\n button_retry: \"Poskusi ponovno\",\n text_fetch_error: \"Povezave ni bilo mogoče vzpostaviti\"\n }; // Hungarian\n\n var LANG_HU = {\n text_init: \"Inicializálás...\",\n text_ready: \"Robotellenes ellenőrzés\",\n button_start: \"Kattintson az ellenőrzés megkezdéséhez\",\n text_fetching: \"Feladvány lekérése\",\n text_solving: \"Annak igazolása, hogy Ön nem robot...\",\n text_completed: \"Nem vagyok robot\",\n text_completed_sr: \"Automatikus spam ellenőrzés befejeződött\",\n text_expired: \"Robotellenes ellenőrzés lejárt\",\n button_restart: \"Újraindítás\",\n text_error: \"Az ellenőrzés nem sikerült\",\n button_retry: \"Próbálja újra\",\n text_fetch_error: \"Nem sikerült csatlakozni\"\n }; // Romanian\n\n var LANG_RO = {\n text_init: \"Se inițializează...\",\n text_ready: \"Verificare anti-robot\",\n button_start: \"Click pentru a începe verificarea\",\n text_fetching: \"Downloading\",\n text_solving: \"Verificare că ești om...\",\n text_completed: \"Sunt om\",\n text_completed_sr: \"Verificarea automată a spam-ului a fost finalizată\",\n text_expired: \"Verificarea anti-robot a expirat\",\n button_restart: \"Restart\",\n text_error: \"Verificare eșuată\",\n button_retry: \"Reîncearcă\",\n text_fetch_error: \"Nu s-a putut conecta\"\n }; // Chinese\n\n var LANG_ZH = {\n text_init: \"初始化中……\",\n text_ready: \"人机验证\",\n button_start: \"点击开始\",\n text_fetching: \"正在加载\",\n text_solving: \"人机校验中……\",\n text_completed: \"我不是机器人\",\n text_completed_sr: \"人机验证完成\",\n text_expired: \"验证已过期\",\n button_restart: \"重新开始\",\n text_error: \"校验失败\",\n button_retry: \"重试\",\n text_fetch_error: \"无法连接到\"\n }; // Traditional Chinese\n\n var LANG_ZH_TW = {\n text_init: \"正在初始化……\",\n text_ready: \"反機器人驗證\",\n button_start: \"點擊開始驗證\",\n text_fetching: \"載入中\",\n text_solving: \"反機器人驗證中……\",\n text_completed: \"我不是機器人\",\n text_completed_sr: \"驗證完成\",\n text_expired: \"驗證超時\",\n button_restart: \"重新開始\",\n text_error: \"驗證失敗\",\n button_retry: \"重試\",\n text_fetch_error: \"無法連線到\"\n }; // Vietnamese\n\n var LANG_VI = {\n text_init: \"Đang khởi tạo...\",\n text_ready: \"Xác minh chống Robot\",\n button_start: \"Bấm vào đây để xác minh\",\n text_fetching: \"Tìm nạp và xử lý thử thách\",\n text_solving: \"Xác minh bạn là người...\",\n text_completed: \"Bạn là con người\",\n text_completed_sr: \"Xác minh hoàn tất\",\n text_expired: \"Xác minh đã hết hạn\",\n button_restart: \"Khởi động lại\",\n text_error: \"Xác minh thất bại\",\n button_retry: \"Thử lại\",\n text_fetch_error: \"Không kết nối được\"\n }; // Hebrew\n\n var LANG_HE = {\n text_init: \"בביצוע...\",\n text_ready: \"אימות אנוש\",\n button_start: \"צריך ללחוץ להתחלת האימות\",\n text_fetching: \"אתגר המענה בהכנה\",\n text_solving: \"מתבצע אימות אנוש...\",\n text_completed: \"אני לא רובוט\",\n text_completed_sr: \"בדיקת הספאם האוטומטית הסתיימה\",\n text_expired: \"פג תוקף אימות האנוש\",\n button_restart: \"להתחיל שוב\",\n text_error: \"אימות האנוש נכשל\",\n button_retry: \"לנסות שוב\",\n text_fetch_error: \"נכשל החיבור אל\",\n rtl: true\n }; // Thai\n\n var LANG_TH = {\n text_init: \"การเริ่มต้น...\",\n text_ready: \" การตรวจสอบต่อต้านหุ่นยนต์\",\n button_start: \"คลิกเพื่อเริ่มการตรวจสอบ\",\n text_fetching: \"การดึงความท้าทาย\",\n text_solving: \"ยืนยันว่าคุณเป็นมนุษย์...\",\n text_completed: \"ฉันเป็นมนุษย์\",\n text_completed_sr: \"การตรวจสอบสแปมอัตโนมัติเสร็จสมบูรณ์\",\n text_expired: \"การตรวจสอบ ต่อต้านหุ่นยนต์ หมดอายุ\",\n button_restart: \"รีสตาร์ท\",\n text_error: \"การยืนยันล้มเหลว\",\n button_retry: \"ลองใหม่\",\n text_fetch_error: \"ไม่สามารถเชื่อมต่อได้\"\n };\n var localizations = {\n en: LANG_EN,\n de: LANG_DE,\n nl: LANG_NL,\n fr: LANG_FR,\n it: LANG_IT,\n pt: LANG_PT,\n es: LANG_ES,\n ca: LANG_CA,\n ja: LANG_JA,\n da: LANG_DA,\n ru: LANG_RU,\n sv: LANG_SV,\n tr: LANG_TR,\n el: LANG_EL,\n uk: LANG_UK,\n bg: LANG_BG,\n cs: LANG_CS,\n sk: LANG_SK,\n no: LANG_NO,\n fi: LANG_FI,\n lv: LANG_LV,\n lt: LANG_LT,\n pl: LANG_PL,\n et: LANG_ET,\n hr: LANG_HR,\n sr: LANG_SR,\n sl: LANG_SL,\n hu: LANG_HU,\n ro: LANG_RO,\n zh: LANG_ZH,\n zh_tw: LANG_ZH_TW,\n vi: LANG_VI,\n he: LANG_HE,\n th: LANG_TH,\n // alternative language codes\n nb: LANG_NO\n };\n\n function createDiagnosticsBuffer(solverID, timeToSolved) {\n var arr = new Uint8Array(3);\n var view = new DataView(arr.buffer);\n view.setUint8(0, solverID);\n view.setUint16(1, timeToSolved);\n return arr;\n }\n\n var workerString = \"!function(){function A(A,r){return function(A){if(Array.isArray(A))return A}(A)||function(A,t){if(\\\"undefined\\\"!=typeof Symbol&&Symbol.iterator in Object(A)){var r=[],n=!0,e=!1,o=void 0;try{for(var i,g=A[Symbol.iterator]();!(n=(i=g.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(I){e=!0,o=I}finally{try{n||null==g.return||g.return()}finally{if(e)throw o}}return r}}(A,r)||function(A,r){if(A){if(\\\"string\\\"==typeof A)return t(A,r);var n=Object.prototype.toString.call(A).slice(8,-1);return\\\"Object\\\"===n&&A.constructor&&(n=A.constructor.name),\\\"Map\\\"===n||\\\"Set\\\"===n?Array.from(A):\\\"Arguments\\\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(A,r):void 0}}(A,r)||function(){throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\")}()}function t(A,t){(null==t||t>A.length)&&(t=A.length);for(var r=0,n=new Array(t);r>>31))+a+(((u=I)&c|(u|c)&~(I=u+c))>>>31)),E=(Q=(h=(Q=h^(l=l+(D=C=y^(u=I))+((w&(y=Q)|(w|y)&~(I=w+y))>>>31)))>>>24^(C=E^(w=I))<<8)^(l=l+(D=(Q=D^(s=(s=s+h+((u&(E=C>>>24^Q<<8)|(u|E)&~(I=u+E))>>>31))+f+(((u=I)&B|(u|B)&~(I=u+B))>>>31)))>>>16^(C=y^(u=I))<<16)+((w&(y=C>>>16^Q<<16)|(w|y)&~(I=w+y))>>>31)))>>>31^(C=E^(w=I))<<1,h=C>>>31^Q<<1,A[r]=u,A[r+1]=s,A[n]=E,A[n+1]=h,A[e]=w,A[e+1]=l,A[o]=y,A[o+1]=D}var I,C,Q=[4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225],c=[0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6,22,16,24,0,10,4,30,26,20,28,6,12,14,2,18,8,14,18,6,2,26,24,22,28,4,12,10,20,8,0,30,16,18,0,10,14,4,8,20,30,28,2,22,24,12,16,6,26,4,24,12,20,0,22,16,6,8,26,14,10,30,28,2,18,24,10,2,30,28,26,8,20,0,14,12,6,18,4,16,22,26,22,14,28,24,2,6,18,10,0,30,8,16,12,4,20,12,30,28,18,22,6,0,16,24,4,26,14,2,8,20,10,20,4,16,8,14,12,2,10,30,22,18,28,6,24,26,0,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6];function a(A,t){for(var r=A.v,n=A.m,e=0;e<16;e++)r[e]=A.h[e],r[e+16]=Q[e];r[24]=r[24]^A.t,r[25]=r[25]^A.t/4294967296,t&&(r[28]=~r[28],r[29]=~r[29]);for(var o=0;o<32;o++)n[o]=i(A.b,4*o);for(var I=0;I<12;I++)g(r,n,0,8,16,24,c[16*I+0],c[16*I+1]),g(r,n,2,10,18,26,c[16*I+2],c[16*I+3]),g(r,n,4,12,20,28,c[16*I+4],c[16*I+5]),g(r,n,6,14,22,30,c[16*I+6],c[16*I+7]),g(r,n,0,10,20,30,c[16*I+8],c[16*I+9]),g(r,n,2,12,22,24,c[16*I+10],c[16*I+11]),g(r,n,4,14,16,26,c[16*I+12],c[16*I+13]),g(r,n,6,8,18,28,c[16*I+14],c[16*I+15]);for(var C=0;C<16;C++)A.h[C]=A.h[C]^r[C]^r[C+16]}function B(A,t){for(var r=0;r<16;r++)A.h[r]=Q[r];A.b.set(t),A.h[0]^=16842752^A.outlen}function f(A,t,r){if(128!=A.length)throw Error(\\\"Invalid input\\\");var n=A.buffer,e=new DataView(n),i=new o(32);i.t=128;for(var g=e.getUint32(124,!0),I=g+r,C=g;C2&&void 0!==arguments[2]?arguments[2]:4294967295,n=f(A,t,r);return[A,n]}))}))}Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,\\\"slice\\\",{value:function(A,t){return new Uint8Array(Array.prototype.slice.call(this,A,t))}}),self.ASC_TARGET=0;var s=new Promise((function(A){return C=A}));self.onerror=function(A){self.postMessage({type:\\\"error\\\",message:JSON.stringify(A)})},self.onmessage=function(t){return new Promise((function(e,o){var i;i=t.data;var g=function(){try{return e()}catch(A){return o(A)}},Q=function(A){try{return setTimeout((function(){throw A})),g()}catch(t){return o(t)}};try{var c=function(){return g()};if(\\\"solver\\\"!==i.type){var a,B,f,E,h=function(){return c.call(this)};return\\\"start\\\"===i.type?Promise.resolve(s).then(function(t){try{a=t,self.postMessage({type:\\\"started\\\"}),B=0;for(var r=0;r<256;r++){i.puzzleSolverInput[123]=r;var n=A(a(i.puzzleSolverInput,i.threshold),2),e=n[0];if(0!==n[1].length){f=e;break}console.warn(\\\"FC: Internal error or no solution found\\\"),B+=Math.pow(2,32)-1}return E=new DataView(f.slice(-4).buffer),B+=E.getUint32(0,!0),self.postMessage({type:\\\"done\\\",solution:f.slice(-8),h:B,puzzleIndex:i.puzzleIndex,puzzleNumber:i.puzzleNumber}),h.call(this)}catch(o){return Q(o)}}.bind(this),Q):h.call(this)}var w=function(){return self.postMessage({type:\\\"ready\\\",solver:I}),c.call(this)};if(i.forceJS)return I=1,Promise.resolve(u()).then(function(A){try{return C(A),w.call(this)}catch(t){return Q(t)}}.bind(this),Q);var l=function(){try{return w.call(this)}catch(A){return Q(A)}}.bind(this),y=function(A){try{return console.log(\\\"FriendlyCaptcha failed to initialize WebAssembly, falling back to Javascript solver: \\\"+A.toString()),I=1,Promise.resolve(u()).then((function(A){try{return C(A),l()}catch(t){return Q(t)}}),Q)}catch(t){return Q(t)}};try{var D;return I=2,D=WebAssembly.compile(function(A){var t=A.length,e=3*t>>>2;A.charCodeAt(t-1)===r&&e--,A.charCodeAt(t-2)===r&&e--;for(var o=new Uint8Array(e),i=0,g=0;i>4,o[g++]=(15&C)<<4|Q>>2,o[g++]=(3&Q)<<6|63&c}return o}(\\\"AGFzbQEAAAABKghgAABgAn9/AGADf39/AX9gAX8AYAR/f39/AGAAAX9gAX8Bf2ACf38BfwINAQNlbnYFYWJvcnQABAMMCwcGAwAAAQIFAQIABQMBAAEGFgR/AUEAC38BQQALfwBBAwt/AEHgDAsHbgkGbWVtb3J5AgAHX19hbGxvYwABCF9fcmV0YWluAAIJX19yZWxlYXNlAAMJX19jb2xsZWN0AAQHX19yZXNldAAFC19fcnR0aV9iYXNlAwMNVWludDhBcnJheV9JRAMCDHNvbHZlQmxha2UyYgAKCAELCvQSC5IBAQV/IABB8P///wNLBEAACyMBQRBqIgQgAEEPakFwcSICQRAgAkEQSxsiBmoiAj8AIgVBEHQiA0sEQCAFIAIgA2tB//8DakGAgHxxQRB2IgMgBSADShtAAEEASARAIANAAEEASARAAAsLCyACJAEgBEEQayICIAY2AgAgAkEBNgIEIAIgATYCCCACIAA2AgwgBAsEACAACwMAAQsDAAELBgAjACQBC7sCAQF/AkAgAUUNACAAQQA6AAAgACABakEEayICQQA6AAMgAUECTQ0AIABBADoAASAAQQA6AAIgAkEAOgACIAJBADoAASABQQZNDQAgAEEAOgADIAJBADoAACABQQhNDQAgAEEAIABrQQNxIgJqIgBBADYCACAAIAEgAmtBfHEiAmpBHGsiAUEANgIYIAJBCE0NACAAQQA2AgQgAEEANgIIIAFBADYCECABQQA2AhQgAkEYTQ0AIABBADYCDCAAQQA2AhAgAEEANgIUIABBADYCGCABQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgwgACAAQQRxQRhqIgFqIQAgAiABayEBA0AgAUEgTwRAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCABQSBrIQEgAEEgaiEADAELCwsLcgACfyAARQRAQQxBAhABIQALIAALQQA2AgAgAEEANgIEIABBADYCCCABQfD///8DIAJ2SwRAQcAKQfAKQRJBORAAAAsgASACdCIBQQAQASICIAEQBiAAKAIAGiAAIAI2AgAgACACNgIEIAAgATYCCCAAC88BAQJ/QaABQQAQASIAQQxBAxABQYABQQAQBzYCACAAQQxBBBABQQhBAxAHNgIEIABCADcDCCAAQQA2AhAgAEIANwMYIABC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\\\")),Promise.resolve(D).then((function(A){try{return Promise.resolve(function(A){return new Promise((function(t,r){var n,e,o;return Promise.resolve(function(A){return new Promise((function(t,r){var n,e;return n={env:{abort:function(){throw Error(\\\"Wasm aborted\\\")}}},Promise.resolve(WebAssembly.instantiate(A,n)).then((function(A){try{return e=function(A){var t={},r=A.exports,n=r.memory,e=r.__alloc,o=r.__retain,i=r.__rtti_base||-1;return t.__allocArray=function(A,t){var r=function(A){return new Uint32Array(n.buffer)[(i+4>>>2)+2*A]}(A),g=31-Math.clz32(r>>>6&31),I=t.length,C=e(I<>>2]=o(C),c[Q+4>>>2]=C,c[Q+8>>>2]=I<>>g)+f]=o(t[f]);else B.set(t,C>>>g);return Q},t.__getUint8Array=function(A){var t=new Uint32Array(n.buffer),r=t[A+4>>>2];return new Uint8Array(n.buffer,r,t[r-4>>>2]>>>0)},function(A){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=A.__argumentsLength?function(t){A.__argumentsLength.value=t}:A.__setArgumentsLength||A.__setargc||function(){return{}},n=function(n){if(!Object.prototype.hasOwnProperty.call(A,n))return\\\"continue\\\";var e=A[n],o=n.split(\\\".\\\")[0];\\\"function\\\"==typeof e&&e!==r?(t[o]=function(){return r(arguments.length),e.apply(void 0,arguments)}).original=e:t[o]=e};for(var e in A)n(e);return t}(r,t)}(A),t({exports:e})}catch(n){return r(n)}}),r)}))}(A)).then((function(A){try{return e=(n=A).exports.__retain(n.exports.__allocArray(n.exports.Uint8Array_ID,new Uint8Array(128))),o=n.exports.__getUint8Array(e),t((function(A,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4294967295;o.set(A);var i=n.exports.solveBlake2b(e,t,r);o=n.exports.__getUint8Array(e);var g=n.exports.__getUint8Array(i);return n.exports.__release(i),[o,g]}))}catch(i){return r(i)}}),r)}))}(A)).then((function(A){try{return C(A),l()}catch(t){return y(t)}}),y)}catch(t){return y(t)}}),y)}catch(v){y(v)}}catch(v){Q(v)}}))}}()}(\\\"undefined\\\"==typeof frcWorker?frcWorker={}:frcWorker);\"; // Defensive init to make it easier to integrate with Gatsby and friends.\n\n var URL;\n\n if (typeof window !== \"undefined\") {\n URL = window.URL || window.webkitURL;\n }\n\n var WorkerGroup = /*#__PURE__*/function () {\n function WorkerGroup() {\n _classCallCheck(this, WorkerGroup);\n\n this.workers = [];\n this.puzzleNumber = 0;\n this.numPuzzles = 0;\n this.threshold = 0;\n this.startTime = 0;\n this.progress = 0;\n this.totalHashes = 0;\n this.puzzleSolverInputs = []; // The index of the next puzzle\n\n this.puzzleIndex = 0;\n this.solutionBuffer = new Uint8Array(0); // initialize some value, so ts is happy\n\n this.solverType = 1;\n this.readyCount = 0;\n this.startCount = 0;\n\n this.progressCallback = function () {\n return 0;\n };\n\n this.readyCallback = function () {\n return 0;\n };\n\n this.startedCallback = function () {\n return 0;\n };\n\n this.doneCallback = function () {\n return 0;\n };\n\n this.errorCallback = function () {\n return 0;\n };\n }\n\n _createClass(WorkerGroup, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n this.terminateWorkers();\n this.progress = 0;\n this.totalHashes = 0;\n this.readyCount = 0;\n this.startCount = 0; // Setup four workers for now - later we could calculate this depending on the device\n\n this.workers = new Array(4);\n var workerBlob = new Blob([workerString], {\n type: \"text/javascript\"\n });\n\n var _loop = function _loop(_i4) {\n _this.workers[_i4] = new Worker(URL.createObjectURL(workerBlob));\n\n _this.workers[_i4].onerror = function (e) {\n return _this.errorCallback(e);\n };\n\n _this.workers[_i4].onmessage = function (e) {\n var data = e.data;\n if (!data) return;\n\n if (data.type === \"ready\") {\n _this.readyCount++;\n _this.solverType = data.solver; // We are ready, when all workers are ready\n\n if (_this.readyCount == _this.workers.length) {\n _this.readyCallback();\n }\n } else if (data.type === \"started\") {\n _this.startCount++; // We started, when the first worker starts working\n\n if (_this.startCount == 1) {\n _this.startTime = Date.now();\n\n _this.startedCallback();\n }\n } else if (data.type === \"done\") {\n if (data.puzzleNumber !== _this.puzzleNumber) return; // solution belongs to a previous puzzle\n\n if (_this.puzzleIndex < _this.puzzleSolverInputs.length) {\n _this.workers[_i4].postMessage({\n type: \"start\",\n puzzleSolverInput: _this.puzzleSolverInputs[_this.puzzleIndex],\n threshold: _this.threshold,\n puzzleIndex: _this.puzzleIndex,\n puzzleNumber: _this.puzzleNumber\n });\n\n _this.puzzleIndex++;\n }\n\n _this.progress++;\n _this.totalHashes += data.h;\n\n _this.progressCallback({\n n: _this.numPuzzles,\n h: _this.totalHashes,\n t: (Date.now() - _this.startTime) / 1000,\n i: _this.progress\n });\n\n _this.solutionBuffer.set(data.solution, data.puzzleIndex * 8); // We are done, when all puzzles have been solved\n\n\n if (_this.progress == _this.numPuzzles) {\n var totalTime = (Date.now() - _this.startTime) / 1000;\n\n _this.doneCallback({\n solution: _this.solutionBuffer,\n h: _this.totalHashes,\n t: totalTime,\n diagnostics: createDiagnosticsBuffer(_this.solverType, totalTime),\n solver: _this.solverType\n });\n }\n } else if (data.type === \"error\") {\n _this.errorCallback(data);\n }\n };\n };\n\n for (var _i4 = 0; _i4 < this.workers.length; _i4++) {\n _loop(_i4);\n }\n }\n }, {\n key: \"setupSolver\",\n value: function setupSolver() {\n var forceJS = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var msg = {\n type: \"solver\",\n forceJS: forceJS\n };\n\n for (var _i5 = 0; _i5 < this.workers.length; _i5++) {\n this.workers[_i5].postMessage(msg);\n }\n }\n }, {\n key: \"start\",\n value: function start(puzzle) {\n this.puzzleSolverInputs = getPuzzleSolverInputs(puzzle.buffer, puzzle.n);\n this.solutionBuffer = new Uint8Array(8 * puzzle.n);\n this.numPuzzles = puzzle.n;\n this.threshold = puzzle.threshold;\n this.puzzleIndex = 0;\n this.puzzleNumber++;\n\n for (var _i6 = 0; _i6 < this.workers.length; _i6++) {\n if (this.puzzleIndex === this.puzzleSolverInputs.length) break;\n\n this.workers[_i6].postMessage({\n type: \"start\",\n puzzleSolverInput: this.puzzleSolverInputs[_i6],\n threshold: this.threshold,\n puzzleIndex: this.puzzleIndex,\n puzzleNumber: this.puzzleNumber\n });\n\n this.puzzleIndex++;\n }\n }\n }, {\n key: \"terminateWorkers\",\n value: function terminateWorkers() {\n if (this.workers.length == 0) return;\n\n for (var _i7 = 0; _i7 < this.workers.length; _i7++) {\n this.workers[_i7].terminate();\n }\n\n this.workers = [];\n }\n }]);\n\n return WorkerGroup;\n }();\n\n var PUZZLE_ENDPOINT_URL = \"https://api.friendlycaptcha.com/api/v1/puzzle\";\n\n var WidgetInstance = /*#__PURE__*/function () {\n function WidgetInstance(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, WidgetInstance);\n\n this.workerGroup = new WorkerGroup();\n /**\r\n * The captcha has been succesfully solved.\r\n */\n\n this.valid = false;\n /**\r\n * Some errors may cause a need for the (worker) to be reinitialized. If this is\r\n * true `init` will be called again when start is called.\r\n */\n\n this.needsReInit = false;\n /**\r\n * Start() has been called at least once ever.\r\n */\n\n this.hasBeenStarted = false;\n this.hasBeenDestroyed = false;\n this.opts = Object.assign({\n forceJSFallback: false,\n skipStyleInjection: false,\n startMode: \"focus\",\n puzzleEndpoint: element.dataset[\"puzzleEndpoint\"] || PUZZLE_ENDPOINT_URL,\n startedCallback: function startedCallback() {\n return 0;\n },\n readyCallback: function readyCallback() {\n return 0;\n },\n doneCallback: function doneCallback() {\n return 0;\n },\n errorCallback: function errorCallback() {\n return 0;\n },\n sitekey: element.dataset[\"sitekey\"] || \"\",\n language: element.dataset[\"lang\"] || \"en\",\n solutionFieldName: element.dataset[\"solutionFieldName\"] || \"frc-captcha-solution\"\n }, options);\n this.e = element;\n this.e.friendlyChallengeWidget = this;\n this.loadLanguage(); // @ts-ignore Ignore is required as TS thinks that `this.lang` is not assigned yet, but it happens in `this.loadLanguage()` above.\n\n element.innerText = this.lang.text_init;\n\n if (!this.opts.skipStyleInjection) {\n injectStyle();\n }\n\n this.init(this.opts.startMode === \"auto\" || this.e.dataset[\"start\"] === \"auto\");\n }\n\n _createClass(WidgetInstance, [{\n key: \"init\",\n value: function init(forceStart) {\n var _this2 = this;\n\n if (this.hasBeenDestroyed) {\n console.error(\"FriendlyCaptcha widget has been destroyed using destroy(), it can not be used anymore.\");\n return;\n }\n\n this.initWorkerGroup();\n\n if (forceStart) {\n this.start();\n } else if (this.e.dataset[\"start\"] !== \"none\" && (this.opts.startMode === \"focus\" || this.e.dataset[\"start\"] === \"focus\")) {\n var form = findParentFormElement(this.e);\n\n if (form) {\n executeOnceOnFocusInEvent(form, function () {\n return _this2.start();\n });\n } else {\n console.log(\"FriendlyCaptcha div seems not to be contained in a form, autostart will not work\");\n }\n }\n }\n /**\r\n * Loads the configured language, or a language passed to this function.\r\n * Note that only the next update will be in the new language, consider calling `reset()` after switching languages.\r\n */\n\n }, {\n key: \"loadLanguage\",\n value: function loadLanguage(lang) {\n if (lang !== undefined) {\n this.opts.language = lang;\n } else if (this.e.dataset[\"lang\"]) {\n this.opts.language = this.e.dataset[\"lang\"];\n }\n\n if (typeof this.opts.language === \"string\") {\n var l = localizations[this.opts.language.toLowerCase()];\n\n if (l === undefined) {\n console.error('FriendlyCaptcha: language \"' + this.opts.language + '\" not found.'); // Fall back to English\n\n l = localizations.en;\n }\n\n this.lang = l;\n } else {\n // We assign to a copy of the English language localization, so that any missing values will be English\n this.lang = Object.assign(Object.assign({}, localizations.en), this.opts.language);\n }\n }\n /**\r\n * Add a listener to the button that calls `this.start` on click.\r\n */\n\n }, {\n key: \"makeButtonStart\",\n value: function makeButtonStart() {\n var _this3 = this;\n\n var b = this.e.querySelector(\"button\");\n\n if (b) {\n b.addEventListener(\"click\", function (e) {\n return _this3.start();\n }, {\n once: true,\n passive: true\n });\n b.addEventListener(\"touchstart\", function (e) {\n return _this3.start();\n }, {\n once: true,\n passive: true\n });\n }\n }\n }, {\n key: \"onWorkerError\",\n value: function onWorkerError(e) {\n this.hasBeenStarted = false;\n this.needsReInit = true;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n console.error(\"[FRC]\", e);\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Background worker error \" + e.message);\n this.makeButtonStart(); // Just out of precaution\n\n this.opts.forceJSFallback = true;\n }\n }, {\n key: \"initWorkerGroup\",\n value: function initWorkerGroup() {\n var _this4 = this;\n\n this.workerGroup.progressCallback = function (progress) {\n updateProgressBar(_this4.e, progress);\n };\n\n this.workerGroup.readyCallback = function () {\n _this4.e.innerHTML = getReadyHTML(_this4.opts.solutionFieldName, _this4.lang);\n\n _this4.makeButtonStart();\n\n _this4.opts.readyCallback();\n };\n\n this.workerGroup.startedCallback = function () {\n _this4.e.innerHTML = getRunningHTML(_this4.opts.solutionFieldName, _this4.lang);\n\n _this4.opts.startedCallback();\n };\n\n this.workerGroup.doneCallback = function (data) {\n var solutionPayload = _this4.handleDone(data);\n\n _this4.opts.doneCallback(solutionPayload);\n\n var callback = _this4.e.dataset[\"callback\"];\n\n if (callback) {\n window[callback](solutionPayload);\n }\n };\n\n this.workerGroup.errorCallback = function (e) {\n _this4.onWorkerError(e);\n };\n\n this.workerGroup.init();\n this.workerGroup.setupSolver(this.opts.forceJSFallback);\n }\n }, {\n key: \"expire\",\n value: function expire() {\n this.hasBeenStarted = false; // Node.isConnected will be undefined in older browsers\n\n if (this.e.isConnected !== false) {\n this.e.innerHTML = getExpiredHTML(this.opts.solutionFieldName, this.lang);\n this.makeButtonStart();\n }\n }\n }, {\n key: \"start\",\n value: function start() {\n return new Promise(function ($return, $error) {\n var sitekey;\n\n if (this.hasBeenDestroyed) {\n console.error(\"Can not start FriendlyCaptcha widget which has been destroyed\");\n return $return();\n }\n\n if (this.hasBeenStarted) {\n console.warn(\"Can not start FriendlyCaptcha widget which has already been started\");\n return $return();\n }\n\n sitekey = this.opts.sitekey || this.e.dataset[\"sitekey\"];\n\n if (!sitekey) {\n console.error(\"FriendlyCaptcha: sitekey not set on frc-captcha element\");\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Website problem: sitekey not set\", false);\n return $return();\n }\n\n if (isHeadless()) {\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Browser check failed, try a different browser\", false, true);\n return $return();\n }\n\n if (this.needsReInit) {\n this.needsReInit = false;\n this.init(true);\n return $return();\n }\n\n this.hasBeenStarted = true;\n\n var $Try_3_Post = function () {\n try {\n this.workerGroup.start(this.puzzle);\n return $return();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }.bind(this);\n\n var $Try_3_Catch = function (e) {\n try {\n {\n console.error(\"[FRC]\", e);\n this.hasBeenStarted = false;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, e.message);\n this.makeButtonStart();\n var code;\n code = \"error_getting_puzzle\";\n this.opts.errorCallback({\n code: code,\n description: e.toString(),\n error: e\n });\n var callback;\n callback = this.e.dataset[\"callback-error\"];\n\n if (callback) {\n window[callback](this);\n }\n\n return $return();\n }\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }.bind(this);\n\n try {\n this.e.innerHTML = getFetchingHTML(this.opts.solutionFieldName, this.lang);\n return Promise.resolve(getPuzzle(this.opts.puzzleEndpoint, sitekey, this.lang)).then(function ($await_11) {\n var _this5 = this;\n\n try {\n this.puzzle = decodeBase64Puzzle($await_11);\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n this.expiryTimeout = setTimeout(function () {\n return _this5.expire();\n }, this.puzzle.expiry - 30000); // 30s grace\n\n return $Try_3_Post();\n } catch ($boundEx) {\n return $Try_3_Catch($boundEx);\n }\n }.bind(this), $Try_3_Catch);\n } catch (e) {\n $Try_3_Catch(e);\n }\n }.bind(this));\n }\n /**\r\n * This is to be called when the puzzle has been succesfully completed.\r\n * Here the hidden field gets updated with the solution.\r\n * @param data message from the webworker\r\n */\n\n }, {\n key: \"handleDone\",\n value: function handleDone(data) {\n this.valid = true;\n var puzzleSolutionMessage = \"\".concat(this.puzzle.signature, \".\").concat(this.puzzle.base64, \".\").concat(encode(data.solution), \".\").concat(encode(data.diagnostics));\n this.e.innerHTML = getDoneHTML(this.opts.solutionFieldName, this.lang, puzzleSolutionMessage, data); // this.worker = null; // This literally crashes very old browsers..\n\n this.needsReInit = true;\n return puzzleSolutionMessage;\n }\n /**\r\n * Cleans up the widget entirely, removing any DOM elements and terminating any background workers.\r\n * After it is destroyed it can no longer be used for any purpose.\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.workerGroup.terminateWorkers();\n this.needsReInit = false;\n this.hasBeenStarted = false;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n\n if (this.e) {\n this.e.remove(); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n\n delete this.e;\n }\n\n this.hasBeenDestroyed = true;\n }\n /**\r\n * Resets the widget to the initial state.\r\n * This is useful in situations where the page does not refresh when you submit and the form may be re-submitted again\r\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.hasBeenDestroyed) {\n console.error(\"FriendlyCaptcha widget has been destroyed, it can not be used anymore\");\n return;\n }\n\n this.workerGroup.terminateWorkers();\n this.needsReInit = false;\n this.hasBeenStarted = false;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n this.init(this.opts.startMode === \"auto\" || this.e.dataset[\"start\"] === \"auto\");\n }\n }]);\n\n return WidgetInstance;\n }();\n\n window.friendlyChallenge = {\n WidgetInstance: WidgetInstance\n };\n\n function setup() {\n var autoWidget = window.friendlyChallenge.autoWidget;\n var elements = findCaptchaElements();\n\n for (var index = 0; index < elements.length; index++) {\n var hElement = elements[index];\n\n if (hElement && !hElement.dataset[\"attached\"]) {\n autoWidget = new WidgetInstance(hElement); // We set the \"data-attached\" attribute so we don't attach to the same element twice.\n\n hElement.dataset[\"attached\"] = \"1\";\n }\n }\n\n window.friendlyChallenge.autoWidget = autoWidget;\n }\n\n if (document.readyState !== \"loading\") {\n setup();\n } else {\n document.addEventListener(\"DOMContentLoaded\", setup);\n }\n})();\n","/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _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}\n\nfunction _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}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n styles: styles,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow, getDocument } from 'ssr-window';\nvar support;\n\nfunction calcSupport() {\n var window = getWindow();\n var document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\nvar device;\n\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n\n var support = getSupport();\n var window = getWindow();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!device) {\n device = calcDevice(overrides);\n }\n\n return device;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nvar browser;\n\nfunction calcBrowser() {\n var window = getWindow();\n\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getDocument, getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n var window = getWindow();\n var style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n var window = getWindow();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return \".\" + classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}\n\nfunction createElementIfNotDefined($container, params, createElements, checkProps) {\n var document = getDocument();\n\n if (createElements) {\n Object.keys(checkProps).forEach(function (key) {\n if (!params[key] && params.auto === true) {\n var element = document.createElement('div');\n element.className = checkProps[key];\n $container.append(element);\n params[key] = element;\n }\n });\n }\n\n return params;\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods, getComputedStyle, classesToSelector, createElementIfNotDefined };","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nexport default {\n name: 'resize',\n create: function create() {\n var swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = getWindow();\n\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var window = getWindow();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\nexport default {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};","import { extend } from '../../../utils/utils';\nexport default function updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { extend } from '../../../utils/utils';\nexport default function updateSlides() {\n var swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? params.spaceBetween && params.spaceBetween + \"px\" : '');\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(function (_, slideIndex) {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n var getSlideByIndex = function getSlideByIndex(index) {\n if (isVirtual) {\n return swiper.slides.filter(function (el) {\n return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;\n })[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}","export default function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../../utils/dom';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import { extend } from '../../../utils/utils';\nexport default function updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","import { extend } from '../../../utils/utils';\nexport default function updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../../utils/dom';\nexport default function updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\nexport default {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n};","import { getTranslate } from '../../../utils/utils';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\nexport default {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};","export default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\nexport default function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\nexport default {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loopCreate() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\nexport default {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};","export default function appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n var found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n var noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass;\n var isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchMove(event) {\n var document = getDocument();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../../utils/utils';\nexport default function onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n var swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\nvar dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\n\nexport default {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\nexport default {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};","import { extend } from '../../../utils/utils';\nexport default function setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n var wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill && breakpointParams.slidesPerColumnFill === 'column' || !breakpointParams.slidesPerColumnFill && params.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n\n swiper.emitContainerClasses();\n }\n\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n var isEnabled = swiper.params.enabled;\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = getWindow();\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n\n if (base === 'window') {\n if (window.matchMedia(\"(min-width: \" + value + \"px)\").matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\nexport default {\n addClasses: addClasses,\n removeClasses: removeClasses\n};","function prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\nexport default {\n loadImage: loadImage,\n preloadImages: preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = getWindow();\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n var isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default {\n checkOverflow: checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\nimport defaults from './defaults';\nvar prototypes = {\n modular: modular,\n eventsEmitter: eventsEmitter,\n update: update,\n translate: translate,\n transition: transition,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\n\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n var swipers = [];\n $(params.el).each(function (containerEl) {\n var newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n extend(swiper, {\n enabled: swiper.params.enabled,\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n var _proto = Swiper.prototype;\n\n _proto.enable = function enable() {\n var swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n };\n\n _proto.disable = function disable() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n };\n\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n };\n\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n };\n\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n var getWrapperSelector = function getWrapperSelector() {\n return \".\" + (swiper.params.wrapperClass || '').trim().split(' ').join('.');\n };\n\n var getWrapper = function getWrapper() {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n var res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = function (options) {\n return $el.children(options);\n };\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n var $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n var document = getDocument();\n var wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(\".\" + swiper.params.slideClass).each(function (slideEl) {\n $wrapperEl.append(slideEl);\n });\n }\n\n extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n };\n\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\n Swiper.prototype.modules[name] = module;\n };\n\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n };\n\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }]);\n\n return Swiper;\n}();\n\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import { extend } from '../../utils/utils';\nexport default {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\nexport default {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd\n};","export default function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}","export default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\nexport default {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n var swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper.el.style.cursor = '';\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper.$el, swiper.params.navigation, swiper.params.createElements, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click: function click(swiper, e) {\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, classesToSelector, createElementIfNotDefined } from '../../utils/utils';\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n if ($el.length > 1) {\n bullets.each(function (bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n }\n\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\" + ' / ' + (\"\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n swiper.params.pagination = createElementIfNotDefined(swiper.$el, swiper.params.pagination, swiper.params.createElements, {\n el: 'swiper-pagination'\n });\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n extend(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n};\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n pagination: _extends({\n dynamicBulletIndex: 0\n }, Pagination)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy(swiper) {\n swiper.pagination.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var $el = swiper.pagination.$el;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n },\n click: function click(swiper, e) {\n var targetEl = e.target;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};","/**\n * Project: bicc-ffvt-website\n * Author: Rolf Alberth \n * Last Modified: 2024-03-21 12:34:06\n * License: MIT License\n */\n\n// Styles\nimport 'swiper/swiper.less'\nimport 'swiper/components/navigation/navigation.less'\nimport 'swiper/components/pagination/pagination.less'\nimport 'c3/c3.css'\nimport './css/main.scss'\nimport './css/main.less'\n// import './css/custom.scss'\n\n// JS\nimport c3 from 'c3'\nimport \"friendly-challenge/widget\"\nimport '@popperjs/core'\nimport { Collapse, Dropdown } from 'bootstrap'\n\n// core version + navigation, pagination modules:\nimport Swiper, { Navigation, Pagination } from 'swiper/core';\n\n// configure Swiper to use modules\nSwiper.use([Navigation, Pagination]);\n\nconst collapsies = {}\nfor (const node of document.querySelectorAll('.collapse')) {\n const id = node.getAttribute('id')\n collapsies[id] = new Collapse(node, {toggle: false})\n}\n\nfor (const trigger of document.querySelectorAll('[data-toggle=\"collapse\"]')) {\n trigger.addEventListener('click', function (ev) {\n ev.preventDefault()\n const href = trigger.getAttribute('href')\n const id = href.substring(1)\n const coll = collapsies[id] || null\n if (coll) {\n coll.toggle()\n }\n })\n}\n\n\n// Scolling\nconst bodyElement = document.body || document.querySelector('body')\nconst dynamicHeader = document.querySelector('.dynamic-header')\nconst scollTrigger = document.querySelector('.compact-trigger')\nif (scollTrigger) {\n if (typeof IntersectionObserver !== 'undefined') {\n bodyElement.classList.add(\"scroll-watch-active\")\n const handle = (entries) => {\n if (entries[0].intersectionRatio > 0) {\n bodyElement.classList.remove(\"scroll-line-passed\")\n } else {\n bodyElement.classList.add(\"scroll-line-passed\")\n }\n }\n const observer = new IntersectionObserver(handle, {\n threshold: 1.0\n })\n observer.observe(scollTrigger)\n }\n}\nif (dynamicHeader) {\n dynamicHeader.addEventListener('transitionend', () => {\n if (bodyElement.classList.contains('scroll-line-passed')) {\n dynamicHeader.classList.add('solid')\n } else {\n dynamicHeader.classList.remove('solid')\n }\n })\n}\n\n\n// Navigation\n\nconst menuButton = document.querySelector('#navbar-toggler')\nconst closeButton = document.querySelector('#nav-close')\nconst navMenu = document.querySelector('#nav-menu')\nconst navOverlay = document.querySelector('#nav-overlay')\n\n\nmenuButton?.addEventListener('click', function (ev) {\n menuButton.classList.toggle('d-none')\n navMenu.classList.toggle('open')\n navOverlay.classList.toggle('open')\n})\n\ncloseButton?.addEventListener('click', function (ev) {\n menuButton.classList.remove('d-none')\n navMenu.classList.remove('open')\n navOverlay.classList.remove('open')\n})\n\nnavOverlay?.addEventListener('click', function (ev) {\n menuButton.classList.remove('d-none')\n navMenu.classList.remove('open')\n navOverlay.classList.remove('open')\n})\n\n// Email scrambling\nconst emailLinks = document.querySelectorAll('[data-email]')\nfor (const node of emailLinks) {\n var encoded = node.getAttribute('data-email')\n var decoded = ''\n var offset = 33\n for (var i = 0; i < encoded.length; i++) {\n var shift = 7 + ((i * 3) % 13)\n var code = encoded.charCodeAt(i)\n if (offset <= code && code <= 127) {\n code = (code - offset - shift) % 95\n if (code < 0) {\n code += 95\n }\n code += offset\n }\n decoded += String.fromCharCode(code)\n }\n if (node.nodeName === 'A') {\n node.setAttribute('href', \"mailto:\" + decoded)\n }\n node.textContent = decoded\n}\n\n// Linked cards\nfor (const node of document.querySelectorAll('.card-linked')) {\n\n const href = node.getAttribute('data-href')\n const main = node.querySelector('.main-link')\n if (href || main) {\n node.classList.add('card-clickable')\n }\n\n node.addEventListener('click', function (ev) {\n const isSelected = window.getSelection().toString()\n if (!isSelected) {\n const href = node.getAttribute('data-href')\n if (href) {\n document.location.href = href\n } else {\n if (main) {\n main.click()\n }\n }\n }\n })\n\n}\n\n// Swiper\nnew Swiper ('.swiper-container', {\n loop: true,\n speed: 500,\n grabCursor: true,\n hashNavigation: {\n watchState: true\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true\n },\n keyboard: {\n enabled: true\n }\n})\n\nconst countries = {\n DEU: {\n de: 'Deutschland',\n en: 'Germany'\n },\n FRA: {\n de: 'Frankreich',\n en: 'France'\n },\n SYR: {\n de: 'Syrien',\n en: 'Syria'\n },\n ITA: {\n de: 'Italien',\n en: 'Italy',\n },\n USA: {\n de: 'USA',\n en: 'USA',\n },\n}\n\nconst labels = {\n years: {\n en: 'Years',\n de: 'Jahre'\n },\n projects: {\n en: 'Running projects',\n de: 'Laufende Projekte'\n },\n projects_additional: {\n en: 'All projects',\n de: 'Erfasste Projekte'\n }\n}\n\nconst lang = document.documentElement.lang || 'de'\n\nc3.generate({\n bindto: '#focus-chart',\n data: {\n type : 'donut',\n columns: [\n [countries.DEU[lang], 298],\n [countries.FRA[lang], 16],\n [countries.SYR[lang], 12],\n [countries.ITA[lang], 12],\n [countries.USA[lang], 11]\n ],\n colors: {\n [countries.DEU[lang]]: '#5c8f94',\n [countries.FRA[lang]]: '#71b0b5',\n [countries.SYR[lang]]: '#7fc6cc',\n [countries.ITA[lang]]: '#89d5dc',\n [countries.USA[lang]]: '#95e8ef',\n }\n }\n})\n\nconst years = [2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023]\nconst projects_current = [98, 119, 157, 277, 434, 410, 326, 233, 181, 151, 140, 127]\nconst projects_additional = [32,\t 46,\t 66, 87, 124, 215, 330, 436, 495, 532, 548, 564]\n\nc3.generate({\n bindto: '#topic-chart',\n data: {\n type : 'bar',\n x: 'years',\n names: {\n 'years': labels.years[lang],\n 'projects_current': labels.projects[lang],\n 'projects_additional': labels.projects_additional[lang]\n },\n columns: [\n ['years', ...years],\n ['projects_current', ...projects_current],\n ['projects_additional', ...projects_additional]\n ],\n colors: {\n ['projects_current']: '#5c8f94',\n ['projects_additional']: '#7cbfc5'\n },\n groups: [\n ['projects_current', 'projects_additional']\n ]\n },\n axis: {\n\n },\n legend: {\n show: false\n },\n tooltip: {\n format: {\n value: (value, ratio, id, index) => {\n if (id == 'projects_additional') {\n value += projects_current[index]\n }\n return value\n }\n }\n }\n})\n\n\nconst radioStatus = function (node) {\n let value = null\n for (const radio of node.querySelectorAll('[type=radio]')) {\n if (radio.checked) {\n if (radio.value == 1) {\n value = true\n } else if (radio.value == 0) {\n value = false\n }\n }\n }\n return value\n}\n\nconst setupQuestionLogic = function () {\n\n const q1 = document.getElementById('q-1');\n // const q2 = document.getElementById('q-2');\n const q3 = document.getElementById('q-3');\n const q4 = document.getElementById('q-4');\n\n if (q4) {\n // q2.classList.add(\"collapse\");\n q4.classList.add(\"collapse\");\n\n // const c2 = new Collapse(q2, {toggle: !radioStatus(q1)});\n const c4 = new Collapse(q4, {toggle: radioStatus(q3)});\n\n for (const r of q3.querySelectorAll('[type=radio]')) {\n r.addEventListener('click', ev => {\n const t = ev.target.value\n if (t == 1) {\n c4.show();\n } else {\n c4.hide();\n }\n })\n }\n }\n\n}\n\n// Registration form (HACK)\ndocument.getElementById('questions-event-209') && setupQuestionLogic();\n"],"names":["ascending$3","a","b","NaN","bisector","compare","f","length","d","x","ascending","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pair","number$3","variance","values","valueof","value","delta","n","m","i","mean","sum","isNaN","number","deviation","array","v","Math","sqrt","extent$1","min","max","Array","prototype","slice","map","constant$d","identity$9","sequence","start","stop","step","arguments","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","thresholdSturges","LN2","threshold$1","p","i0","value0","max$2","merge","arrays","merged","j","min$1","transpose","matrix","row","identity$8","top","bottom","epsilon","translateX","translateY","y","scale","center","offset","bandwidth","round","entering","this","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","context","apply","domain","format","identity","spacing","range0","range1","position","copy","selection","path","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","insert","transition","getAttribute","parentNode","remove","filter","each","_","call","tickSize","noop","dispatch","t","test","Error","Dispatch","get","type","name","c","set","callback","concat","push","constructor","on","typename","types","T","trim","split","indexOf","hasOwnProperty","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","appendChild","child","insertBefore","next","keyPrefix","bindIndex","group","node","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","keyValues","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","join","splice","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","match","size","bind","constant","enterGroup","updateGroup","previous","i1","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","sort","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","property","classed","html","create","before","deep","typenames","parseTypenames","nextId","Local","toString","source","current","point$5","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","clientTop","mouse","changedTouches","touch","touches","identifier","nopropagation","stopImmediatePropagation","noevent$2","preventDefault","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","constant$b","DragEvent","target","subject","id","active","dx","dy","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","define","factory","extend","definition","Object","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","color","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","h","s","Hsl","hslConvert","hsl","hsl2rgb","m2","channels","assign","displayable","formatHsl","deg2rad","PI","rad2deg","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","cos","sin","A","B","C","D","E","ED","EB","BC_DA","cubehelix","Cubehelix","bl","cubehelixConvert","basis","v0","v1","v2","v3","basis$2","basisClosed$1","constant$a","linear","hue","gamma","nogamma","exponential","cosh","sinh","interpolateRgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","date$1","Date","setTime","interpolateNumber","object$1","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","q","one","zero","interpolateValue","date","isArray","valueOf","object","interpolateRound","cssNode","cssRoot","cssView","svgNode","degrees","rotate","skewX","scaleX","scaleY","decompose","e","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","SQRT2","rho2","rho4","epsilon2","exp","interpolateZoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","u","tanh","duration","colorHsl","hsl$1","hslLong","colorHcl","hcl$1","hclLong","cubehelixGamma","colorCubehelix","cubehelix$2","cubehelixLong","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","state","ease","init","interrupt","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate$1","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","quadInOut","cubicInOut","children","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","undefined","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinInOut","tpmt","expInOut","circleInOut","b2","b3","b4","b5","b6","b7","b8","b9","bounceOut","overshoot","backIn","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","constant$9","BrushEvent","noevent$1","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","X","handles","input","output","xy","Y","XY","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultExtent","hasAttribute","viewBox","width","height","__brush","brush","dim","touchending","extent","touchable","keys","listeners","handleSize","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","mode","metaKey","altKey","signX","signY","W","N","shifting","shiftKey","pointer","point0","beforestart","moved","ended","keyCode","move","point1","dragEnable","selection0","selection1","clear","starting","keyModifiers","constant$8","tauEpsilon","Path","_x0","_y0","_x1","_y1","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","startAngle","defaultEndAngle","endAngle","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","Map","createObject","setObject","createMap","setMap","Set","has","entries","proto","ascending$1","constant$7","contains$2","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","noop$2","cases","contours","threshold","smooth","smoothLinear","tz","contour","polygons","holes","fragmentByStart","fragmentByEnd","forEach","stitch","startIndex","endIndex","unshift","isorings","area","polygon","coordinates","xt","yt","_0","_1","thresholds","blurX","sr","blurY","defaultX","defaultY","defaultWeight","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","JSON","stringify","inferColumns","rows","columnSet","column","pad","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","year","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","dsvFormat","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","fixtz","getHours","responseBlob","response","ok","status","statusText","blob","responseArrayBuffer","arrayBuffer","responseText","text$1","fetch","then","dsvParse","responseJson","json","parser","DOMParser","parseFromString","constant$6","jiggle","random","tree","xm","ym","xp","yp","_root","leaf","_x","_y","Quad","quadtree","Quadtree","addAll","leaf_copy","treeProto","vx","vy","find","nodeById","nodeId","cover","xz","yz","visit","x3","y3","quads","retainer","removeAll","visitAfter","initialAngle","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","toUpperCase","identity$6","locale","formatPrefix","prefixes","formatLocale$1","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","adder","Adder","reset","temp","bv","av","quarterPi","radians","haversin","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","geoStream","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","phi0","lambda1","phi1","lambda2","ranges","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","angle","rangeCompare","rangeContains","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","constant$5","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","clipBuffer","lines","rejoin","shift","result","pointEqual","Intersection","points","other","entry","clipPolygon","segments","compareIntersection","startInside","clip","segment","link","isSubject","clipMax","clipMin","clipExtent","visible","from","to","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","winding","polygonInside","cleanInside","ax","ay","clipLine","polygonContains","sinPhi1","cosPhi1","absDelta","intersection","phiArc","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","length$1","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ab","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","identity$5","x00","y00","bounds","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","PathString","_string","circle","pointVisible","sink","rotatedStart","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","_circle","clipAntimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","transformer","methods","TransformStream","fitExtent","projection","fitSize","maxDepth","cosMinDistance","resample","project","delta2","resampleLineTo","c0","c1","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","projectionMutator","projectAt","projectRotate","cache","cacheStream","theta","preclip","postclip","projectResample","projectTransform","recenter","clipAngle","cr","smallRadius","notHemisphere","intersect","two","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","q1","code","v00","point2","clipCircle","conicProjection","parallels","conicEqualAreaRaw","sy0","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","cy0","fy","equirectangularRaw","conicEquidistantRaw","gy","nx","gnomonicRaw","scaleTranslate","kx","ky","tx","ty","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","links","enclose","circles","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","c3","d3","place","intersects","score","packEnclose","aa","sj","sk","pack","required","constantZero","constant$4","radiusLeaf","packChildren","translateChild","roundNode","treemapDice","preroot","ambiguous","defaultId","defaultParentId","parentId","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treemapSlice","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","dice","squarify","resquarify","_squarify","cross$1","lexicographicOrder","computeUpperHullIndexes","indexes","cross","uniform","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","logNormal","sourceRandomLogNormal","randomLogNormal","irwinHall","sourceRandomIrwinHall","randomIrwinHall","bates","sourceRandomBates","randomBates","sourceRandomExponential","randomExponential","initRange","initInterpolator","interpolator","implicit","ordinal","unknown","band","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","pointish","number$1","unit","normalize","clamper","bimap","d0","polymap","bisect","clamp","untransform","piecewise","continuous","linearish","nice","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","transformPow","transformSqrt","transformSquare","powish","newInterval","floori","offseti","field","millisecond","utcMillisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","utcSecond","minute","getSeconds","getMinutes","timeMinute","hour","timeHour","day","setHours","setDate","getDate","getTimezoneOffset","timeDay","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month","setMonth","getMonth","getFullYear","timeMonth","months","setFullYear","timeYear","years","utcMinute","setUTCSeconds","utcMinute$1","utcMinutes","utcHour","setUTCMinutes","utcHour$1","utcHours","utcDay","setUTCHours","setUTCDate","utcDay$1","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","utcMonth$1","utcMonths","utcYear","setUTCFullYear","utcYear$1","utcYears","localDate","H","M","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","G","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","Z","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","pads","charAt","newParse","week","timeMonday","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","timeSunday","dISO","timeThursday","dow","UTCdISO","isoSpecifier","formatIso","toISOString","formatIso$1","parseIso","parseIso$1","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","tickInterval","k10","sequentialPow","k21","divergingPow","category10","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","Tableau10","ramp$1","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","pi_1_3","pi_2_3","viridis","magma","inferno","plasma","constant$2","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","cx0","cx1","cy1","dx0","dy0","dx1","dy1","Linear","curveLinear","pointX","pointY","defined","curve","buffer","defined0","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending$1","identity$1","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineRadial$1","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","pointRadial","linkSource","linkTarget","argv","curveHorizontal","curveVertical","p2","p3","draw","tan30","tan30_2","diamond","kr","star","square","sqrt3","triangle","wye","symbols","Basis","BasisClosed","BasisOpen","Bundle","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t","none$1","series","stackValue","appearance","peaks","peak","vi","vj","sums","constant$1","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","fx","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","_t0","px","py","after","grandpa","uncle","sibling","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","ZoomEvent","Transform","triangles","_found","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","values0","values1","reduce","sturges","histogram","bin","bins","quantile","numbers","pairs","permutes","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","di","dj","subindex","ribbon","sa0","sa1","sx0","tr","ta0","ta1","sortValues","rollup","nest","sortKeys","createResult","setResult","valuesByKey","sortKey","weight","density","Float32Array","wi","transformPolygon","transformRing","transformPoint","resize","cellSize","mousedownx","mousedowny","mousemoving","container","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","sublisteners","clickDistance","image","Image","onerror","onload","src","force","sx","sy","radii","strength","iterations","ri","ri2","prepare","quad","rj","strengths","distances","bias","initializeStrength","initializeDistance","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","radiuses","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","initializeNodes","initializeForce","closest","feature","deltaMax","sy1","kx0","ky0","kx1","ky1","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","reflectX","reflectY","separation","nodeSize","cluster","previousNode","meanX","maxY","leafLeft","leafRight","partition","positionNode","stratify","nodeKey","nodeByKey","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","colorLab","samples","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","symlog","invertExtent","quantiles","quantize","timeWeek","timeSecond","timeMillisecond","utcWeek","sequential","sequentialLog","sequentialSymlog","sequentialQuantile","diverging","divergingLog","divergingSymlog","ts","cornerRadius","padRadius","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","kc","lc","descending","pie","arcs","pa","orderNone","offsetNone","stack","oz","kz","sz","sij","ki","si","yn","s2","sij0","s3","tops","bottoms","total","voronoi","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","wheelDelay","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","translateBy","translateTo","module","exports","ChartInternal","api","$$","require","require$$0","config","getDefaultConfig","axes","Chart","internal","loadConfig","beforeInit","afterInit","bindThis","fn","argThis","asHalfPixel","ceil10","diffDomain","getOption","options","defaultValue","isDefined","getPathBox","box","getBBox","items","pathSegList","getItem","element","ignore","hasValue","dict","found","isEmpty","isString","isFunction","isNumber","isUndefined","isValue","notEmpty","sanitise","str","flattenArray","arr","isWithinBox","sensitivity","xStart","xEnd","yStart","yEnd","getIEVersion","agent","userAgent","pos","isIE","version","ver","AxisInternal","component","scaleLinear","innerTickSize","outerTickSize","withOuterTick","tickOffset","tickCulling","tickCentered","tickTextCharSize","tickTextRotate","tickLength","generateAxis","axisX","axisY","generateTicks","copyScale","newScale","isCategory","textFormatted","formatted","updateRange","rangeExtent","updateTickTextCharSize","isVertical","tspanData","splitted","tickMultiline","splitTickText","tickMultilineMax","ellipsify","subtext","spaceIndex","textWidth","tickText","maxWidth","tickWidth","substr","ellipsified","remaining","available","padEnd","updateTickLength","lineY2","tickPosition","textY","textTransform","textTextAnchor","tspanDx","tspanDy","tickTransform","tickX","tickY","scale0","__chart__","scale1","ticksValues","tickUpdate","lineUpdate","textUpdate","tspans","tspanUpdate","pathUpdate","rangeBand","isCentered","getTotalLength","culling","CLASS","chart","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","dragZoom","focused","defocused","region","regions","title","tooltipContainer","tooltip","tooltipName","shape","shapes","bar","bars","arcLabelLine","areas","texts","gaugeValue","grid","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","colorScale","stanfordElements","stanfordLine","stanfordLines","stanfordRegion","stanfordRegions","stanfordText","stanfordTexts","axisXLabel","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","AxisClass","owner","Axis","main","axis_x_inner","clipPathForXAxis","getTranslate","axis_x_show","axis_rotated","textAnchorForXAxisLabel","axis_y_inner","clipPathForYAxis","axis_y_show","textAnchorForYAxisLabel","axis_y2_show","textAnchorForY2AxisLabel","getXAxis","withoutTransition","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","axis_x_tick_multilineMax","axis_x_tick_width","axis_x_tick_rotate","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","targets","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","axisId","isAxisNormalized","axis_y_tick_rotate","isTimeSeriesY","axis_y_tick_time_type","axis_y_tick_time_interval","getId","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","axis_x_tick_format","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","option","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","isInner","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","getLabelPositionById","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","getMaxTickWidth","getHorizontalAxisHeight","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","filterTargetsToShow","getYDomain","yOrient","yAxisTickValues","y2Orient","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","updateLabels","withTransition","getPadding","domainLength","convertPixelsToAxisPadding","pixels","tickCount","forTimeSeries","targetCount","tickValue","generateTransitions","axisSubX","subx","isHidden","generate","c3LogScale","linearScale","logScale","PROJECTION","logspace","len","tmp","scaleLog","powerOfTen","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragStart","dragging","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeParse","data_xLocaltime","data_xFormat","axis_x_localtime","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","binding","bindto","selectChart","observeInserted","xs","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","isStanfordGraphType","initStanfordData","updateSizes","updateScales","subX","subY","subY2","orgXDomain","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initPie","initDragZoom","subchart_show","initSubchart","initTooltip","initLegend","initTitle","initZoom","drawColorScale","initSubchartBrush","initRegion","initGrid","grid_lines_front","initGridLines","initStanfordElements","initEventRect","updateTargets","axis_x_selection","selectionAsValue","getDefaultSelection","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","bindWindowFocus","smoothLines","el","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","subchartXAxisHeight","subchartHeight","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","margin","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","hasType","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","drawLine","xForText","yForText","durationForExit","durationForAxis","transitionsToWait","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","legend_show","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateCircleY","circleY","circleX","updateXgridFocus","data_empty_label_text","redrawEventRect","updateGrid","updateStanfordElements","updateRegion","updateBar","updateLine","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","generateFlow","isTabVisible","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isStanfordType","isScatterType","opacityForText","xx","xvCustom","xyValue","axis_x_categories","yvCustom","yScale","yv","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","disconnect","observe","attributes","childList","characterData","console","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","resizeIfElementDisplayed","offsetParent","_this","windowFocusHandler","unbindWindowFocus","resizeFunctions","callResizeFunctions","endall","done","parsedDate","hidden","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","defineProperty","enumerable","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","measurementElement","lastPathSegment","numberOfItems","removeItem","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","insertItemBefore","replaceItem","item","appendItem","pathSegArray","Builder","appendSegment","Source","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","integer","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","builder","targetLength","padString","repeat","varArgs","nextSource","nextKey","writable","configurable","labels","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","axis_y2_type","category","categories","size_width","size_height","flush","destroy","targetIds","shown","targetId","flat","ret","dataValue","clearLegendItemTextBoxCache","updateDataAttributes","stackNormalized","normalized","isStackNormalized","data_stack_normalize","donut","donut_padAngle","baseTarget","baseValue","diff","notfoundIds","orgDataCount","getMaxDataCount","tail","getOtherTargetX","missing","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","wait","updateXGrid","hideXGridFocus","flowTransition","easeLinear","isRegionOnX","xgridAttr","regionX","regionWidth","focus","candidates","mapToTargetIds","selectorTargets","revert","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","data_groups","show","hide","hideLegend","load","addXs","classes","data_classes","data_colors","hasCaches","cacheIds","getCaches","unload","loadFromArgs","ids","pie_padAngle","selected","getTargetSelectorSuffix","indices","resetOther","data_selection_enabled","toggle","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","subchart","isShown","getTargets","removeSubchart","filterByX","getMousePosition","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom_onzoom","enable","enabled","zoom_enabled","unzoom","zoom_x_max","zoom_x_min","getPadAngle","orderFct","getOrderFunction","isOrderAsc","isOrderDesc","defaultSort_1","gauge_width","donut_width","gaugeArcWidth","gauge_arcs_minWidth","innerRadiusRatio","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","hasGaugeType","singleArcWidth","withoutUpdate","updated","rate","expandWidth","getArc","isArcType","transformForArcLabel","hasGauge","donut_label_ratio","pie_label_ratio","getArcRatio","getRatio","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","arcLabelLines","mainArcLabelLine","arcData","classArc","interaction_enabled","_current","gauge_labelLine_show","lineLength","lineThickness","innerLineLength","lineAngle","linePositioningAngle","data_onmouseover","selectedData","showTooltip","revertLegend","hideTooltip","data_onmouseout","toggleShape","data_onclick","interpolated","index_1","backgroundArc","gauge_label_show","gauge_units","addToCache","getFromCache","resetCache","addCache","cloneTarget","generateTargetClass","generateClass","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","targetClass","CSS","escape","selectorTarget","selectorLegend","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","pattern","color_pattern","schemeCategory10","data_color","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_initialRange","zoom_type","zoom_disableDefaultBehavior","zoom_privileged","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_epochs","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_x_height","axis_y_inverted","axis_y_center","axis_y_tick_format","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_format","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","stanford_lines","stanford_regions","stanford_texts","stanford_scaleMin","stanford_scaleMax","stanford_scaleWidth","stanford_scaleFormat","stanford_scaleValues","stanford_colors","stanford_padding","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_horizontal","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","read","this_config","url","mimeType","headers","converter","convertXsvToData","catch","xsv","_a","targetKeys","new_rows","new_row","findValueInJson","pathArray","newRows","newRow","appendXs","epochs","isX","isEpochs","isNotXAndNotEpochs","isNotX","xKey","getXKey","rawX","generateTargetX","getOtherTargetXs","getXValuesOfXKey","convertedId","id_org","returnData","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","some","isTargetNormalized","includes","getTotalPerIndex","cached","sumByAxis","getTotalDataSum","totalDataSum","xValues","getXValue","idsForX","valueOnIndex","hasTarget","getTargetsToShow","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","orderAsc","orderDesc","reducer","t1Sum","t2Sum","orderTargets","fct","filterByIndex","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","paddingCoef","dataLabelFormat","isNoneArc","isArc","findClosestFromTargets","findClosest","horizontalDistance","dist","findClosestFromTargetsByX","newDiff","dataPoints","computeDist","minDist","isWithinBar","xIndex","yIndex","convertValuesToStep","converted","asPercent","attrs","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","pixelsToAxisPadding","getY","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","firstX","lastX","getTime","withTrim","updateScale","trimXDomain","zoomDomain","getZoomDomain","mx","my","minX","maxX","minY","_w","_h","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","defaultFormat","xgridData","generateGridData","xgridEnter","updateYGrid","gridValues","ygridEnter","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLineEnter","ygridLineEnter","showXGridFocus","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","param","forX","toRemove","toShow","zoomTransform","mouseout","unexpandCircles","unexpandBars","isHoveringDataPoint","withName","isMouseCloseToDataPoint","closestByX","mouseX","expandCircles","expandBars","isWithinShape","getYScale","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","rects","tiles","background","maxHeight","posMin","tileWidth","totalLength","offsets","widths","heights","margins","steps","getTextBox","textElement","getTextRect","updatePositions","maxLength","isLast","itemWidth","itemHeight","itemLength","areaLength","updateValues","withoutStep","regionY","regionHeight","labelRegion","regionLabels","labelOffsetX","labelOffsetY","labelTransform","label","vertical","paddingX","paddingY","getScale","forTimeseries","scaleTime","getX","_scale","raw","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","pointSelectR","unselectPoint","selectPath","unselectPath","nodeName","isStepType","barData","mainBarEnter","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","posX","posY","barShape","typeFilter","targetsNum","rowValues","isWithinStep","isWithinCircle","getInterpolate","curveLinearClosed","curveBasis","curveBasisOpen","curveBasisClosed","curveBundle","curveCardinal","curveCardinalOpen","curveCardinalClosed","monotone","curveMonotoneX","curveStep","curveStepBefore","curveStepAfter","isSplineType","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","_regions","sWithRegion","diffx2","xOffset","isWithinRegions","generateM","x_diff","xv0","xv1","mainAreaEnter","orgAreaOpacity","generateGetAreaPoints","getAreaBaseValue","areaTargetsNum","areaOffset","lineOrScatterOrStanfordData","mainCircleEnter","pointR","getStanfordPointColor","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","defaultPadding","legendWidthOnRight","getColorScalePadding","getParentRectValue","tagName","offsetWidth","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","isSubchart","initBrush","brushY","brushX","redrawForBrush","updateExtent","brushSelection","contextLineEnter","contextLine","contextBarEnter","contextBar","updateBarForSubchart","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","contextAreaEnter","redrawAreaForSubchart","drawAreaOnSub","zoomIdentity","mainTextEnter","barOrLineData","forFlow","cls","font","getAreaPoints","getBarPoints","getLinePoints","getter","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","barWidth","barHeight","legendAxis","axisScale","inverseScale","scaleSequential","minEpochs","maxEpochs","axisRight","xForColorScale","compareEpochs","interpolateHslLong","colorscale","scaleSequentialLog","getCentroid","getRegionArea","getStanfordTooltipTitle","labelX","labelY","countEpochsInRegion","accumulator","currentValue","pointInRegion","percentage","stanfordLineEnter","stanfordRegionEnter","stanfordTextEnter","countPointsInRegion","content","getTooltipSortFunction","obj","sortFunction","bgcolor","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","ua","startEvent","redrawForZoom","updateDomain","brushXPos","brushYPos","getZoomedDomain","dragZoomBrush","zoomedDomain","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_slicedToArray","_arrayWithHoles","Symbol","iterator","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","isObject","loaderSVG","errorSVG","getTemplate","fieldName","rtl","svgContent","svgAriaHidden","solutionString","buttonText","progress","debugData","additionalContainerClasses","getErrorHTML","errorDescription","recoverable","headless","text_error","button_retry","nav","CHARS","EQ_CHAR","lookup","Uint8Array","encode","bytes","base64","decodeBase64Puzzle","base64Puzzle","parts","puzzle","bufferLength","_i2","encoded1","encoded2","encoded3","encoded4","decode","signature","expiry","getPuzzle","urlsSeparatedByComma","siteKey","lang","$return","$error","urls","$Loop_4_trampoline","$Loop_4_local","$Loop_4_step","$Loop_4","$Try_1_Catch","text_fetch_error","rawError","$boundEx","fetchAndRetryWithBackoff","$await_7","$If_6","$Try_1_Post","$await_8","_json","$Try_2_Post","errors","$Try_2_Catch","$await_9","$Loop_4_exit","_exception","opts","$await_10","LANG_NO","text_init","text_ready","button_start","text_fetching","text_solving","text_completed","text_completed_sr","text_expired","button_restart","localizations","en","de","nl","fr","it","pt","es","ja","ru","sv","uk","bg","cs","no","fi","lv","lt","pl","et","hr","sl","hu","ro","zh","zh_tw","he","th","webkitURL","WorkerGroup","workers","puzzleNumber","numPuzzles","startTime","totalHashes","puzzleSolverInputs","puzzleIndex","solutionBuffer","solverType","readyCount","startCount","progressCallback","readyCallback","startedCallback","doneCallback","errorCallback","terminateWorkers","workerBlob","Blob","_loop","_i4","Worker","createObjectURL","onmessage","solverID","timeToSolved","solver","postMessage","puzzleSolverInput","solution","totalTime","diagnostics","setUint8","setUint16","msg","forceJS","_i5","puzzleBuffer","startingPoints","_i3","getPuzzleSolverInputs","_i6","_i7","terminate","WidgetInstance","workerGroup","valid","needsReInit","hasBeenStarted","hasBeenDestroyed","forceJSFallback","skipStyleInjection","startMode","puzzleEndpoint","dataset","sitekey","language","solutionFieldName","friendlyChallengeWidget","loadLanguage","innerText","styleSheet","head","injectStyle","forceStart","_this2","initWorkerGroup","form","parentElement","findParentFormElement","once","passive","executeOnceOnFocusInEvent","_this3","expiryTimeout","message","makeButtonStart","_this4","perc","updateProgressBar","solutionPayload","handleDone","onWorkerError","setupSolver","isConnected","warn","appVersion","webdriver","languages","$Try_3_Post","$Try_3_Catch","description","$await_11","_this5","expire","puzzleSolutionMessage","timeData","getDoneHTML","setup","autoWidget","friendlyChallenge","elements","findCaptchaElements","hElement","readyState","ssrDocument","body","activeElement","blur","getElementById","childNodes","getElementsByTagName","importNode","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","screen","matchMedia","cancelAnimationFrame","getWindow","win","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_construct","Parent","Class","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","_wrapNativeSuper","_cache","Wrapper","Dom7","_Array","subClass","superClass","makeReactive","ReferenceError","_assertThisInitialized","arrayFlat","res","arrayFilter","$","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","support","device","browser","Methods","addClass","_len","_key","classNames","_el$classList","removeClass","_len2","_key2","_el$classList2","hasClass","_len4","_key4","className","toggleClass","_len3","_key3","attrName","removeAttr","transitionDuration","_len5","_key5","eventType","targetSelector","handleLiveEvent","eventData","dom7EventData","is","handleEvent","events","_event","dom7LiveListeners","proxyListener","dom7Listeners","off","_len6","_key6","handlers","handler","dom7proxy","trigger","_len9","_key9","evt","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","parseFloat","outerHeight","_styles2","offsetHeight","scrollTop","scrollY","scrollLeft","scrollX","css","_prop","compareWith","webkitMatchesSelector","msMatchesSelector","eq","returnIndex","newChild","tempDiv","prepend","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","_prev","foundElements","nextTick","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","HTMLElement","keysArray","nextIndex","desc","getOwnPropertyDescriptor","__swiper__","bindModuleMethods","subKey","classesToSelector","createElementIfNotDefined","$container","createElements","checkProps","auto","getSupport","DocumentTouch","pointerEvents","PointerEvent","passiveListener","supportsPassive","calcSupport","getDevice","overrides","_temp","platform","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isEdge","isWebView","calcBrowser","methodName","Resize","swiper","createObserver","destroyed","initialized","ResizeObserver","newWidth","newHeight","_ref","contentBoxSize","contentRect","inlineSize","blockSize","resizeHandler","removeObserver","unobserve","orientationChangeHandler","resizeObserver","_extends","Observer","attach","WebkitMutationObserver","observerUpdate","observers","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","Observer$1","eventsEmitter","method","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","updateSize","isHorizontal","updateSlides","getDirectionLabel","marginRight","getDirectionPropertyValue","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginBottom","marginTop","slidesPerColumn","slidesPerView","slidesPerColumnFill","newSlidesGrid","_$wrapperEl$css","_$wrapperEl$css2","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","slidesPerGroup","slideIndexInGroup","columnsInGroup","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","_slide$","swiperSlideSize","centeredSlides","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","_slidesGridItem","_slides$filter$css","slideIndex","cssMode","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","_allSlidesSize","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","updateProgress","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","previousTranslate","runCallbacks","translateBounds","animating","preventInteractionOnTransition","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","slideTo","initial","indexAsNumber","initialSlide","normalizedTranslate","normalizedGird","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","val","prevIndex","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","loopDestroy","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","onTouchStart","touchEventsData","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","isTouched","isMoved","noSwipingClass","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","touchAngle","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","_increment","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","passiveListeners","simulateTouch","updateOnWindowResize","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","directionChanged","needsReLoop","changeDirection","isEnabled","disable","containerEl","innerHeight","_points$i","addClasses","suffixes","resultClasses","prepareClasses","autoheight","multirow","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","onReady","complete","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","defaults","uniqueNavElements","wrapperClass","_emitClasses","prototypes","modular","useParams","instanceParams","modules","moduleName","useModules","modulesParams","moduleParams","moduleEventName","dir","isLocked","cursor","unsetGrabCursor","wasLocked","lastSlidePosition","extendedDefaults","Swiper","swipers","newParams","moduleParamName","swiperParams","passedParams","eventName","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","_proto","setProgress","getSlideClasses","slideEl","updates","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","deleteProps","extendDefaults","newDefaults","installModule","use","prototypeGroup","protoMethod","Swiper$1","Navigation","toggleEl","disabled","disabledClass","_swiper$navigation","$nextEl","$prevEl","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Navigation$1","hideOnClick","hiddenClass","toEdge","fromEdge","_swiper$navigation3","click","_swiper$navigation4","targetEl","pagination","clickable","Pagination","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickableClass","modifierClass","progressbarOppositeClass","Pagination$1","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","collapsies","Collapse","ev","coll","bodyElement","dynamicHeader","scollTrigger","IntersectionObserver","intersectionRatio","menuButton","closeButton","navMenu","navOverlay","emailLinks","encoded","decoded","fromCharCode","getSelection","hashNavigation","watchState","keyboard","countries","DEU","FRA","SYR","ITA","USA","projects","projects_additional","projects_current","radioStatus","radio","checked","q3","q4","c4","setupQuestionLogic"],"mappings":"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"}