{"version":3,"file":"sortable.esm-xY41QhSf.js","sources":["../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/number.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisect.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/extent.js","../../../node_modules/.pnpm/internmap@2.0.3/node_modules/internmap/src/index.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/identity.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/group.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/permute.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sort.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ticks.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/maxIndex.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/minIndex.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quickselect.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/greatest.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/range.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/union.js","../../../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/identity.js","../../../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/axis.js","../../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/pointer.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/basis.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/basisClosed.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/array.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/date.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/object.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/round.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/piecewise.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/quantize.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../../../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../../../node_modules/.pnpm/d3-path@3.1.0/node_modules/d3-path/src/path.js","../../../node_modules/.pnpm/robust-predicates@3.0.2/node_modules/robust-predicates/esm/util.js","../../../node_modules/.pnpm/robust-predicates@3.0.2/node_modules/robust-predicates/esm/orient2d.js","../../../node_modules/.pnpm/delaunator@5.0.1/node_modules/delaunator/index.js","../../../node_modules/.pnpm/d3-delaunay@6.0.4/node_modules/d3-delaunay/src/path.js","../../../node_modules/.pnpm/d3-delaunay@6.0.4/node_modules/d3-delaunay/src/polygon.js","../../../node_modules/.pnpm/d3-delaunay@6.0.4/node_modules/d3-delaunay/src/voronoi.js","../../../node_modules/.pnpm/d3-delaunay@6.0.4/node_modules/d3-delaunay/src/delaunay.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatDecimal.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/exponent.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatGroup.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatNumerals.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTrim.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatRounded.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTypes.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/identity.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/locale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionFixed.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionRound.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/init.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/ordinal.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/band.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/number.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/identity.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/nice.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/log.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/pow.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/radial.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/quantile.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/quantize.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/threshold.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/millisecond.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/second.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/minute.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/hour.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/week.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/month.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/year.js","../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/ticks.js","../../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/locale.js","../../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/time.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/utcTime.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/sequential.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/sequentialQuantile.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/diverging.js","../../../node_modules/.pnpm/d3-scale-chromatic@3.1.0/node_modules/d3-scale-chromatic/src/colors.js","../../../node_modules/.pnpm/d3-scale-chromatic@3.1.0/node_modules/d3-scale-chromatic/src/ramp.js","../../../node_modules/.pnpm/d3-scale-chromatic@3.1.0/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/math.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/arc.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/array.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/point.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/line.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/area.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/descending.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/identity.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/pie.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/pointRadial.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/bump.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/asterisk.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/circle.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/cross.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/diamond.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/diamond2.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/plus.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/square.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/square2.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/star.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/triangle.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/triangle2.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/wye.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/times.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/noop.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basis.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basisClosed.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basisOpen.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/linearClosed.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/natural.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/step.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/offset/none.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/order/none.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/stack.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/offset/expand.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/offset/silhouette.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/offset/wiggle.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../../../node_modules/.pnpm/@get-dx+d3-charts@5.0.2_d3@7.9.0/node_modules/@get-dx/d3-charts/dist/main.js","../../../node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js"],"sourcesContent":["export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, maxValue) > 0\n : ascending(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n const set = new InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\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)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\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 offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\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] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\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 + offset) : 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)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\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 = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), 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 axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\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: () => {}};\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.js\";\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; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\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","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\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","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\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","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else 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","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.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 Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\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","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\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 = new Map,\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 = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(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 = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\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.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\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 = arraylike(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\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\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 if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\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","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\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 let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\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 namespace from \"../namespace.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, 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.js\";\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.js\";\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","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\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","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\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.options);\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, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\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.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\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 for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\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","export default function*() {\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]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\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\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\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 selection: selection_selection,\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 [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\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","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\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 if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\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(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","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 x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","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 svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\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","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(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","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(undefined, 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(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 interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\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 {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\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\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 {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {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 {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","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","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 {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 // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\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_easeVarying from \"./easeVarying.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 selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\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 easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\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 {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 throw new Error(`transition ${id} not found`);\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","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0, minDist = Infinity; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n // find the point closest to the seed\n for (let i = 0, minDist = Infinity; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n const d = this._dists[id];\n if (d > d0) {\n hull[j++] = id;\n d0 = d;\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(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 value() {\n return this._ || null;\n }\n}\n","export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n let bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the “center” of\n // the diagram , defined as the hull’s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n bx /= hull.length, by /= hull.length;\n }\n const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] === cj[aj]\n && ci[ai + 1] === cj[aj + 1]\n && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return this._simplify(V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points));\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n const flip = c0 < c1;\n if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n _simplify(P) {\n if (P && P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\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","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","// [[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","// 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 {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 \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","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","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\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","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.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 path = withPath(arc);\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. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (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 } else {\n rc0 = rc1 = 0;\n }\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","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","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 array from \"./array.js\";\nimport 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 = array(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","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\n context.closePath();\n }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const s = sqrt(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","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*as t from\"d3\";function i(t,i){for(var s={},e=i.length,a=0,h=0,l=0,n=0,r=0,o=0;ot.toLocaleString()),showYAxisTickLabels:c=!1,showYAxisTicks:d=!1,showYAxisInnerTicks:x=!0,showYAxisLine:g=!1,yAxisTickLabelSpread:m=50,yAxisTickLabelFormat:p=(t=>t.toLocaleString()),axisTickLabelClass:u=\"tick-label-text\",axis:y={x:{label:\"\"},y:{label:\"\",max:void 0}},showTrendline:b=!1,trendlineClass:f=\"trend-line\",paddingInner:k=.4,paddingOuter:A=0,onClick:v,tooltipHtml:w,enableRoundedCorners:L=!1,minimalBarHeightForZero:T=!1,leftMargin:D=null}){this.elChart=t,this.values=i,this.maxBarWidth=s,this.enableHoverPointer=e,this.hoverColor=a,this.showXAxisTickLabels=h,this.showXAxisTicks=l,this.showXAxisInnerTicks=n,this.showXAxisLine=r,this.xAxisTickLabelFormat=o,this.showYAxisTickLabels=c,this.showYAxisTicks=d,this.showYAxisInnerTicks=x,this.showYAxisLine=g,this.yAxisTickLabelSpread=m,this.yAxisTickLabelFormat=p,this.axisTickLabelClass=u,this.axis=Object.assign({x:{label:\"\"},y:{label:\"\",max:void 0}},y),this.showTrendline=b,this.trendlineClass=f,this.paddingInner=k,this.paddingOuter=A,this.onClick=v,this.tooltipHtml=w,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.left=this.left.bind(this),this.clicked=this.clicked.bind(this),this.enableRoundedCorners=L,this.minimalBarHeightForZero=T,this.leftMargin=D,this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.margin={},this.parseDate=t.utcParse(\"%Y-%m-%d\"),this.x=t.scaleBand().paddingInner(this.paddingInner).paddingOuter(this.paddingOuter),this.y=t.scaleLinear(),this.tooltipData=null}scaffold(){this.container=t.select(this.elChart).classed(\"chart bar-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\").on(\"mouseover\",this.entered).on(\"mouseout\",this.left).on(\"click\",this.clicked),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\")}wrangle(){if(0===this.values.length)return;this.accessor={x:t=>t.date||t.name,y:t=>t.value,color:t=>t.color},this.x.domain(this.values.map(this.accessor.x));if(this.y.domain([0,void 0===this.axis.y.max?1.05*t.max(this.values,this.accessor.y)||1:this.axis.y.max]),this.lr=null,this.showTrendline){const t=this.values.reduce(((t,i,s)=>(null!==this.accessor.y(i)&&t.push(s),t)),[]);if(t.length>=2){const s=t,e=t.map((t=>this.accessor.y(this.values[t])));this.lr=i(s,e)}}this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.y.range([this.height-this.margin.bottom,this.margin.top]),this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),0!==this.values.length&&this.render()}render(){this.adjustXMargin(),this.renderXAxis(),this.adjustYMargin(),this.renderYAxis(),this.renderBars(),this.renderTrendLine()}adjustXMargin(){this.margin.left=1,this.margin.right=1,this.showYAxisTickLabels&&(this.margin.left=52),this.showYAxisLabel=\"\"!==this.axis.y.label,this.showYAxisLabel&&(this.margin.left+=20),null!==this.leftMargin&&(this.margin.left=this.leftMargin),this.showXAxisTickLabels&&(this.margin.right=16),this.x.range([this.margin.left,this.width-this.margin.right])}renderXAxis(){if(this.svg.selectAll(\".axis--x\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--x\"))).call(t.axisBottom(this.x).tickSizeOuter(0).tickSizeInner(this.showXAxisInnerTicks?6:0).tickFormat(((t,i)=>this.showXAxisTickLabels?this.xAxisTickLabelFormat(t,i):\"\"))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showXAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"y2\",-(this.height-this.margin.top-this.margin.bottom)))).call((t=>t.selectAll(\".tick text\").classed(this.axisTickLabelClass,!0))).call((t=>t.select(\".domain\").style(\"display\",this.showXAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(\"\"!==this.axis.x.label?[this.axis.x.label]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\"))).attr(\"x\",(this.margin.left+this.width-this.margin.right)/2).text(\"\"))),this.showXAxisTickLabels){const t=this.x.bandwidth()+Math.min(this.x.step()*this.paddingOuter+this.margin.right,this.x.step()*this.paddingInner/2);let i=t;this.svg.select(\".axis--x\").selectAll(\".tick text\").each((function(){i=Math.max(i,this.getBoundingClientRect().width)})),i>t&&this.svg.select(\".axis--x\").selectAll(\".tick text\").attr(\"text-anchor\",\"end\").attr(\"dy\",\"0.32em\").attr(\"transform\",\"rotate(-45,0,9)\")}}adjustYMargin(){this.margin.top=1,this.margin.bottom=4,this.showXAxisTickLabels&&(this.margin.top=8,this.margin.bottom+=Math.ceil(this.svg.select(\".axis--x\").node().getBoundingClientRect().height)),this.showXAxisLabel=\"\"!==this.axis.x.label,this.showXAxisLabel&&(this.margin.bottom+=20),this.svg.select(\".axis--x\").attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).selectAll(\".axis-title-text\").attr(\"y\",this.margin.bottom-4).text((t=>t)),this.y.range([this.height-this.margin.bottom,this.margin.top])}renderYAxis(){this.svg.selectAll(\".axis--y\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--y\"))).attr(\"transform\",`translate(${this.margin.left},0)`).call(t.axisLeft(this.y).ticks((this.height-this.margin.top-this.margin.bottom)/this.yAxisTickLabelSpread).tickSizeOuter(0).tickSizeInner(this.showYAxisInnerTicks?6:0).tickFormat((t=>this.showYAxisTickLabels?this.yAxisTickLabelFormat(t):\"\"))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showYAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"x2\",this.width-this.margin.left-this.margin.right))).call((t=>t.selectAll(\".tick text\").classed(this.axisTickLabelClass,!0))).call((t=>t.select(\".domain\").style(\"display\",this.showYAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(\"\"!==this.axis.y.label?[this.axis.y.label]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\").attr(\"dy\",\"0.71em\"))).attr(\"x\",4-this.margin.left).attr(\"y\",(this.margin.top+this.height-this.margin.bottom)/2).attr(\"transform\",`rotate(-90,${4-this.margin.left},${(this.margin.top+this.height-this.margin.bottom)/2})`).text((t=>t))))}renderBars(){const i=Math.min(this.maxBarWidth,this.x.bandwidth()),s=this.enableRoundedCorners?3:0;this.barRect=this.svg.selectAll(\".bar-rects\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"bar-rects\"))).classed(\"is-clickable\",!!this.onClick).selectAll(\".bar-rect\").data(this.values).join((t=>t.append(\"rect\").attr(\"class\",\"bar-rect\"))).attr(\"x\",(t=>this.x(this.accessor.x(t))+this.x.bandwidth()/2-i/2)).attr(\"y\",(t=>this.y(Math.max(this.accessor.y(t),0)))).attr(\"width\",i).attr(\"height\",(t=>{const i=this.y(0)-this.y(this.accessor.y(t))||0;return this.minimalBarHeightForZero&&0===this.accessor.y(t)?1:Math.max(i,0)})).style(\"fill\",(t=>this.accessor.color(t))).attr(\"rx\",s).attr(\"ry\",s),this.enableHoverPointer&&this.barRect.style(\"cursor\",\"pointer\"),this.barRect.on(\"mouseover\",((i,s)=>{const e=s.hoverColor||this.hoverColor;e&&t.select(i.currentTarget).style(\"fill\",e)})).on(\"mouseout\",((i,s)=>{t.select(i.currentTarget).style(\"fill\",this.accessor.color(s))}))}renderTrendLine(){const t=this.svg.selectAll(\".trend-line\").data(this.lr?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",this.trendlineClass)));if(this.lr){const i=this.x.domain(),s=this.y.range(),e=this.x(i[0])+this.x.bandwidth()/2,a=this.x(i[i.length-1])+this.x.bandwidth()/2,h=Math.max(s[1],Math.min(s[0],this.y(this.lr.intercept))),l=Math.max(s[1],Math.min(s[0],this.y(this.lr.slope*(i.length-1)+this.lr.intercept)));t.attr(\"x1\",e).attr(\"x2\",a).attr(\"y1\",h).attr(\"y2\",l)}}entered(i){if(!this.tooltipHtml)return;const s=i.target.closest(\".bar-rect\");s&&(this.barRect.classed(\"is-active\",(function(){return this===s})),this.tooltipData=t.select(s).datum(),this.updateTooltip(),this.positionTooltip())}left(t){if(!this.tooltipHtml)return;t.target.closest(\".bar-rect\")&&(this.barRect.classed(\"is-active\",!1),this.tooltipData=null,this.updateTooltip())}clicked(i){const s=i.target.closest(\".bar-rect\");if(!s)return;const e=t.select(s).datum();this.onClick&&this.onClick(e,i)}updateTooltip(){this.tooltipData?this.tooltip.html(this.tooltipHtml(this.tooltipData)).classed(\"is-visible\",!0):this.tooltip.classed(\"is-visible\",!1)}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect();let i=this.x(this.accessor.x(this.tooltipData))+this.x.bandwidth()/2-t.width/2;let s=this.y(this.accessor.y(this.tooltipData))-8-t.height;this.tooltip.style(\"transform\",`translate(${i}px,${s}px)`)}redraw(){this.wrangle()}}class e{constructor({elChart:t,data:i,colorByChange:s=!1,focusedOn:e}){this.elChart=t,this.data=i,this.colorByChange=s,this.focusedOn=e,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.left=this.left.bind(this),this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize),this.focusedOn&&this.entered(void 0,this.focusedOn)}setup(){this.margin={top:32,right:200,bottom:0,left:48},this.rowHeight=40,this.narrowColumnThreshold=80,this.nodeRadius=4,this.parseDate=t.utcParse(\"%Y-%m-%d\"),this.formatTickDate=i=>{const s=this.parseDate(i);return this.isNarrow?t.utcFormat(\"%b %-d\")(s):t.utcFormat(\"%b %-d, %Y\")(s)},this.x=t.scalePoint(),this.y=t.scalePoint().padding(.5);const i=[[\"#FB7185\",\"#F43F5E\"],[\"#F472B6\",\"#EC4899\"],[\"#E879F9\",\"#D946EF\"],[\"#C084FC\",\"#A855F7\"],[\"#A78BFA\",\"#8B5CF6\"],[\"#818CF8\",\"#6366F1\"],[\"#60A5FA\",\"#3B82F6\"],[\"#38BDF8\",\"#0EA5E9\"],[\"#22D3EE\",\"#06B6D4\"],[\"#2DD4BF\",\"#14B8A6\"],[\"#34D399\",\"#10B981\"],[\"#4ADE80\",\"#22C55E\"],[\"#A3E635\",\"#84CC16\"],[\"#FACC15\",\"#EAB308\"],[\"#FBBF24\",\"#F59E0B\"],[\"#FB923C\",\"#F97316\"],[\"#F87171\",\"#EF4444\"],[\"#94A3B8\",\"#64748B\"]];this.colorLine=t.scaleOrdinal().range(i.map((t=>t[0]))),this.colorLabel=t.scaleOrdinal().range(i.map((t=>t[1]))),this.yNames=this.y.copy(),this.diff=(t,i)=>this.colorByChange?null===t||null===i||t===i?\"is-flat\":t>i?\"is-down\":\"is-up\":\"\",this.line=t.line().x((t=>this.x(t[0]))).y((t=>this.y(t[1]))).curve(t.curveBumpX)}scaffold(){this.container=t.select(this.elChart).classed(\"bump-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\"),this.gTop=this.svg.append(\"g\").attr(\"class\",\"axis axis--top\"),this.gNamesRight=this.svg.append(\"g\").attr(\"class\",\"axis axis--right axis--right--names\"),this.gLinks=this.svg.append(\"g\").attr(\"class\",\"links\"),this.gNodes=this.svg.append(\"g\").attr(\"class\",\"nodes\")}wrangle(){this.x.domain(this.data.dates),this.height=this.rowHeight*this.data.series.length+this.margin.top+this.margin.bottom,this.y.domain(t.range(1,this.data.series.length+1)).range([this.margin.top,this.height-this.margin.bottom]),this.yNames.range(this.y.range()),this.data.series.forEach((i=>{i.meanRank=t.mean(i.ranks),i.visualRanks=[]})),this.nodes=[],this.links=[];for(let i=0;it.descending(null!==s.ranks[i],null!==e.ranks[i])||t.ascending(s.ranks[i],e.ranks[i])||t.ascending(s.meanRank,e.meanRank))).forEach(((t,s)=>{const e=null===t.ranks[i]?null:s+1;t.visualRanks.push(e),null!==e&&this.nodes.push({name:t.name,date:this.data.dates[i],rank:t.ranks[i],visualRank:e,diff:0===i?this.diff(null,e):this.diff(t.visualRanks[i-1],e)})})),i===this.data.dates.length-1){this.yNames.domain(this.data.series.map((t=>t.name)));const i=this.yNames.domain().sort(t.ascending);this.colorLine.domain(i),this.colorLabel.domain(i)}this.data.series.reverse(),this.data.series.forEach((t=>{for(let i=0;ithis.x(t.date)),(t=>this.y(t.visualRank))),this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),this.render()}render(){this.renderXAxisTop(),this.renderYNamesAxisRight(),this.renderLinks(),this.renderNodes()}renderXAxisTop(){this.gTop.attr(\"transform\",`translate(0,${this.margin.top})`).call(t.axisTop(this.x).tickFormat(this.formatTickDate).tickSize(0).tickPadding(12)).call((t=>t.select(\".domain\").remove()))}renderYNamesAxisRight(){this.gNamesRight.attr(\"transform\",`translate(${this.width-this.margin.right+20},0)`).call(t.axisRight(this.yNames).tickSize(0)).call((t=>t.select(\".domain\").remove())),this.yTick=this.gNamesRight.selectAll(\".tick\").on(\"mouseenter\",this.entered).on(\"mouseleave\",this.left).call((t=>t.select(\"text\").attr(\"fill\",(t=>this.colorByChange?\"currentColor\":this.colorLabel(t)))))}renderLinks(){this.link=this.gLinks.selectAll(\".link\").data(this.links).join((t=>t.append(\"g\").attr(\"class\",\"link\").call((t=>t.append(\"path\").attr(\"class\",\"link__path link__bg\"))).call((t=>t.append(\"path\").attr(\"class\",(t=>`link__path link__fg ${t.diff}`)))).on(\"mouseenter\",((t,i)=>{this.entered(t,i.name)})).on(\"mouseleave\",this.left))).call((t=>t.select(\".link__bg\").attr(\"d\",(t=>this.line(t.points))))).call((t=>t.select(\".link__fg\").attr(\"d\",(t=>this.line(t.points))).attr(\"stroke\",(t=>this.colorLine(t.name)))))}renderNodes(){this.node=this.gNodes.selectAll(\".node\").data(this.nodes).join((t=>t.append(\"g\").attr(\"class\",\"node\").call((t=>t.append(\"circle\").attr(\"class\",(t=>`node__circle ${t.diff}`)).attr(\"r\",this.nodeRadius))).on(\"mouseenter\",((t,i)=>{this.entered(t,i.name)})).on(\"mouseleave\",this.left))).attr(\"transform\",(t=>`translate(${this.x(t.date)},${this.y(t.visualRank)})`)).attr(\"stroke\",(t=>this.colorLine(t.name)))}entered(t,i){this.svg.classed(\"is-highlighting\",!0),this.link.classed(\"is-muted\",(t=>t.name!==i)),this.node.classed(\"is-muted\",(t=>t.name!==i)),this.yTick.classed(\"is-muted\",(t=>t!==i)),this.colorByChange||this.gNamesRight.selectAll(\".tick\").select(\"text\").attr(\"fill\",(t=>t===i?this.colorLine(t):this.colorLabel(t)))}left(){this.svg.classed(\"is-highlighting\",!1),this.link.classed(\"is-muted\",!1),this.node.classed(\"is-muted\",!1),this.yTick.classed(\"is-muted\",!1),this.colorByChange||this.gNamesRight.selectAll(\".tick\").select(\"text\").attr(\"fill\",(t=>this.colorLabel(t))),this.focusedOn&&this.entered(void 0,this.focusedOn)}}class a{constructor({elChart:t,values:i=[],comparisonValues:s=[],showXAxisLine:e=!0,showXAxisTicks:a=!0,showPoints:h=!1,showComparisonPoints:l=!1,dotLastSegment:n=!1,startDate:r,endDate:o,yAxisMin:c,yAxisMax:d,showYAxisTickLabels:x=!1,showYAxisTicks:g=!1,showYAxisInnerTicks:m=!1,showYAxisLine:p=!1,yAxisTickLabelSpread:u=50,yAxisTickLabelFormat:y=(t=>t.toLocaleString()),yAxisLabel:b=\"\",tooltipHtml:f,onClick:k}){this.finishedRendering=!1,this.elChart=t,this.values=i,this.comparisonValues=s,this.showXAxisLine=e,this.showXAxisTicks=a,this.showPoints=h,this.showBenchmarkPoints=l,this.dotLastSegment=n,this.startDate=r,this.endDate=o,this.yAxisMin=c,this.yAxisMax=d,this.tooltipHtml=f,this.showYAxisTickLabels=x,this.showYAxisTicks=g,this.showYAxisInnerTicks=m,this.showYAxisLine=p,this.yAxisTickLabelSpread=u,this.yAxisTickLabelFormat=y,this.yAxisLabel=b,this.onClick=k,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.moved=this.moved.bind(this),this.left=this.left.bind(this),this.clicked=this.clicked.bind(this),this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.id=this.elChart.id||\"_\"+crypto.getRandomValues(new Uint32Array(1)).toString(36),this.dotRadius=2.5,this.margin={top:3,right:3,bottom:3,left:3},this.parseDate=t.utcParse(\"%Y-%m-%d\"),this.indexDate=null,this.x=t.scaleUtc(),this.y=t.scaleLinear(),this.line=t.line().x((t=>this.x(t.x))).y((t=>this.y(t.y)))}scaffold(){this.container=t.select(this.elChart).classed(\"chart line-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\").classed(\"is-clickable\",!!this.onClick).on(\"mouseover\",this.entered).on(\"mousemove\",this.moved).on(\"mouseout\",this.left).on(\"click\",this.clicked),this.defs=this.svg.append(\"defs\"),this.g=this.svg.append(\"g\"),this.focusLine=this.svg.append(\"line\").attr(\"class\",\"focus-line\"),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\")}wrangle(){if(0===this.values.length)return;this.accessor={x:t=>this.parseDate(t.date),y:t=>t.value};const i=[...this.values.map(this.accessor.y),...this.comparisonValues.map(this.accessor.y)],[s,e]=t.extent(i);let a=0,h=e;s>15&&(a=s-10),this.y.domain([void 0===this.yAxisMin?a:this.yAxisMin,void 0===this.yAxisMax?h:this.yAxisMax||1]),this.foregroundData=this.values.map((t=>({x:this.accessor.x(t),y:this.accessor.y(t)}))),this.dates=this.foregroundData.map((t=>t.x)),this.hasBenchmarkLine=this.comparisonValues.length>0,this.foregroundBenchmarks=this.comparisonValues.map((t=>({x:this.accessor.x(t),y:this.accessor.y(t)}))),this.benchmarkDates=this.foregroundBenchmarks.map((t=>t.x)),this.startDate&&this.endDate?(this.xMin=this.parseDate(this.startDate),this.xMax=this.parseDate(this.endDate)):(this.xMin=t.min([this.dates[0],this.benchmarkDates[0]]),this.xMax=t.max([this.dates[this.dates.length-1],this.benchmarkDates[this.benchmarkDates.length-1]])),this.backgroundData=[{x:this.xMin,y:this.foregroundData[0].y},...this.foregroundData,{x:this.xMax,y:this.foregroundData[this.foregroundData.length-1].y}],this.clipData=[this.dates[0],this.dates[this.dates.length-1]],this.hasBenchmarkLine?(this.backgroundBenchmarks=[{x:this.xMin,y:this.foregroundBenchmarks[0].y},...this.foregroundBenchmarks,{x:this.xMax,y:this.foregroundBenchmarks[this.foregroundBenchmarks.length-1].y}],this.benchmarkClipData=[this.benchmarkDates[0],this.benchmarkDates[this.benchmarkDates.length-1]]):(this.backgroundBenchmarks=[],this.benchmarkClipData=[]),this.x.domain([this.xMin,this.xMax]),this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.y.range([this.height-this.margin.bottom,this.margin.top]),this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),this.focusLine.attr(\"y2\",this.height-this.margin.bottom),0!==this.values.length&&this.render()}render(){this.adjustXMargin(),this.renderClip(),this.renderXAxis(),this.renderYAxis(),this.renderZeroLine(),this.renderBenchmarkLine(),this.renderBenchmarkDots(),this.renderLine(),this.renderDots(),this.finishedRendering=!0}adjustXMargin(){this.margin.left=1,this.margin.right=1,this.showYAxisTickLabels&&(this.margin.left=52),this.showYAxisLabel=\"\"!==this.yAxisLabel,this.showYAxisLabel&&(this.margin.left+=20),this.showXAxisTickLabels&&(this.margin.right=16),this.x.range([this.margin.left,this.width-this.margin.right])}renderClip(){const t=this.defs.selectAll(\".clip\").data(this.clipData?[this.clipData]:[]).join((t=>t.append(\"clipPath\").attr(\"class\",\"clip\").attr(\"id\",`${this.id}-clip`).call((t=>t.append(\"rect\")))));this.clipData.length>0&&t.select(\"rect\").attr(\"x\",(([t])=>this.x(t))).attr(\"width\",(([t,i])=>this.x(i)-this.x(t))).attr(\"height\",this.height);const i=this.defs.selectAll(\".benchmark-clip\").data(this.benchmarkClipData?[this.benchmarkClipData]:[]).join((t=>t.append(\"clipPath\").attr(\"class\",\"benchmark-clip\").attr(\"id\",`${this.id}-benchmark-clip`).call((t=>t.append(\"rect\")))));this.benchmarkClipData.length>0&&i.select(\"rect\").attr(\"x\",(([t])=>this.x(t))).attr(\"width\",(([t,i])=>this.x(i)-this.x(t))).attr(\"height\",this.height)}renderXAxis(){this.g.selectAll(\".axis--x\").data(this.showXAxisTicks?[0]:[]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--x\"))).attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).call(t.axisBottom(this.x).tickValues(this.dates).tickSize(-this.height+this.margin.top+this.margin.bottom)).call((t=>t.select(\".domain\").remove())).call((t=>t.selectAll(\".tick text\").remove()))}renderYAxis(){this.svg.selectAll(\".axis--y\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--y\"))).attr(\"transform\",`translate(${this.margin.left},0)`).call(t.axisLeft(this.y).ticks((this.height-this.margin.top-this.margin.bottom)/this.yAxisTickLabelSpread).tickSizeOuter(0).tickSizeInner(this.showYAxisInnerTicks?6:0).tickFormat((t=>this.showYAxisTickLabels?this.yAxisTickLabelFormat(t):\"\"))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showYAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"x2\",this.width-this.margin.left-this.margin.right))).call((t=>t.selectAll(\".tick text\"))).call((t=>t.select(\".domain\").style(\"display\",this.showYAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(\"\"!==this.yAxisLabel?[this.yAxisLabel]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\").attr(\"dy\",\"0.71em\"))).attr(\"x\",4-this.margin.left).attr(\"y\",(this.margin.top+this.height-this.margin.bottom)/2).attr(\"transform\",`rotate(-90,${4-this.margin.left},${(this.margin.top+this.height-this.margin.bottom)/2})`).text((t=>t))))}renderZeroLine(){this.g.selectAll(\".zero-line\").data(this.showXAxisLine?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"zero-line\").attr(\"x1\",this.margin.left))).attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).attr(\"x2\",this.width-this.margin.right)}renderBenchmarkLine(){this.g.selectAll(\".benchmark-background-line\").data(this.hasBenchmarkLine?[this.backgroundBenchmarks]:[]).join((t=>t.append(\"path\").attr(\"class\",\"benchmark-background-line\").attr(\"fill\",\"none\"))).attr(\"d\",this.line),this.g.selectAll(\".benchmark-foreground-line\").data(this.hasBenchmarkLine?[this.foregroundBenchmarks]:[]).join((t=>t.append(\"path\").attr(\"class\",\"benchmark-foreground-line\").attr(\"clip-path\",`url(#${this.id}-benchmark-clip)`).attr(\"fill\",\"none\"))).attr(\"d\",this.line)}renderBenchmarkDots(){this.benchmarkDotCircle=this.g.selectAll(\".benchmark-dot-circles\").data(this.hasBenchmarkLine?[0]:[]).join((t=>t.append(\"g\").attr(\"class\",\"benchmark-dot-circles\"))).selectAll(\".benchmark-dot-circle\").data(this.foregroundBenchmarks).join((t=>t.append(\"circle\").attr(\"class\",\"benchmark-dot-circle\"))).classed(\"is-visible\",1===this.foregroundBenchmarks.length||this.showBenchmarkPoints).attr(\"r\",1===this.foregroundBenchmarks.length||this.showBenchmarkPoints?this.dotRadius:1).attr(\"cx\",(t=>this.x(t.x))).attr(\"cy\",(t=>this.y(t.y)))}renderLine(){this.g.selectAll(\".background-line\").data([this.backgroundData]).join((t=>t.append(\"path\").attr(\"class\",\"background-line\").attr(\"fill\",\"none\"))).attr(\"d\",this.line),this.g.selectAll(\".foreground-line\").data([this.dotLastSegment?this.foregroundData.slice(0,-1):this.foregroundData]).join((t=>t.append(\"path\").attr(\"class\",\"foreground-line\").attr(\"fill\",\"none\").attr(\"clip-path\",`url(#${this.id}-clip)`))).attr(\"d\",this.line)}renderDots(){this.dotCircle=this.g.selectAll(\".dot-circles\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"dot-circles\"))).selectAll(\".dot-circle\").data(this.foregroundData).join((t=>t.append(\"circle\").attr(\"class\",\"dot-circle\"))).classed(\"is-visible\",1===this.foregroundData.length||this.showPoints).attr(\"r\",1===this.foregroundData.length||this.showPoints?this.dotRadius:1).attr(\"cx\",(t=>this.x(t.x))).attr(\"cy\",(t=>this.y(t.y)))}entered(){this.finishedRendering&&this.tooltipHtml&&this.focusLine.classed(\"is-visible\",!0)}moved(i){if(!this.finishedRendering)return;if(!this.tooltipHtml)return;this.pointer=t.pointer(i,this.svg.node());const s=this.x.invert(this.pointer[0]),e=t.bisectCenter(this.dates,s);this.indexDate!==e&&(this.indexDate=e,this.focusLine.classed(\"has-ticks\",this.showXAxisTicks).attr(\"transform\",`translate(${this.x(this.dates[this.indexDate])},0)`),this.dotCircle.classed(\"is-active\",(t=>t.x-this.dates[this.indexDate]==0)),this.benchmarkDotCircle.classed(\"is-active\",(t=>t.x-this.dates[this.indexDate]==0)),this.updateTooltip()),this.tooltip.classed(\"is-visible\")&&this.positionTooltip()}left(){this.finishedRendering&&this.tooltipHtml&&(this.indexDate=null,this.focusLine.classed(\"is-visible\",!1),this.dotCircle.classed(\"is-active\",!1),this.benchmarkDotCircle.classed(\"is-active\",!1),this.updateTooltip())}clicked(){if(!this.onClick||null===this.indexDate)return;const t=this.dates[this.indexDate],i=this.values.find((i=>this.accessor.x(i)-t==0)),s=this.comparisonValues.find((i=>this.accessor.x(i)-t==0));this.onClick(i,s)}updateTooltip(){if(null===this.indexDate)this.tooltip.classed(\"is-visible\",!1);else{const t=this.dates[this.indexDate],i=this.values.find((i=>this.accessor.x(i)-t==0)),s=this.comparisonValues.find((i=>this.accessor.x(i)-t==0));this.tooltip.html(this.tooltipHtml(i,s)).classed(\"is-visible\",!0)}}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect();let i=this.x(this.dates[this.indexDate])-t.width/2;i+t.width>this.width?i=this.width-t.width:i<0&&(i=0);let s=-t.height-4;this.tooltip.style(\"transform\",`translate(${i}px,${s}px)`)}redraw(){this.wrangle()}}class h{constructor({elChart:i,series:s=[],values:e=[],showXAxisLine:a=!0,showXAxisTicks:h=!0,xAxisTickLabelFormat:l=t.timeFormat(\"%b %d\"),showPoints:n=!1,startDate:r,endDate:o,yAxisMin:c,yAxisMax:d,showYAxisTickLabels:x=!0,showYAxisTicks:g=!0,showYAxisInnerTicks:m=!1,showYAxisLine:p=!1,yAxisTickLabelSpread:u=50,yAxisTickLabelFormat:y=(t=>t.toLocaleString()),yAxisLabel:b=\"\",xAxisLabel:f=\"\",tooltipHtml:k,showTrendlines:A=!1,trendlineClass:v=\"trend-line\",minTickSpacing:w=null,goalLines:L=[],goalLineClass:T=\"goal-line\"}){this.elChart=i,this.series=s,this.values=e,this.showXAxisLine=a,this.showXAxisTicks=h,this.showPoints=n,this.startDate=r,this.endDate=o,this.yAxisMin=c,this.yAxisMax=d,this.showYAxisTickLabels=x,this.showYAxisTicks=g,this.showYAxisInnerTicks=m,this.showYAxisLine=p,this.yAxisTickLabelSpread=u,this.yAxisTickLabelFormat=y,this.yAxisLabel=b,this.xAxisLabel=f,this.tooltipHtml=k,this.showTrendlines=A,this.trendlineClass=v,this.minTickSpacing=w,this.goalLines=L,this.goalLineClass=T,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.moved=this.moved.bind(this),this.left=this.left.bind(this),this.xAxisTickLabelFormat=l,this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.margin={},this.dotRadius=2.5,this.parseDate=t.utcParse(\"%Y-%m-%d\"),this.indexDate=null,this.x=t.scaleUtc(),this.y=t.scaleLinear(),this.color=t.scaleOrdinal(),this.line=t.line().x(((t,i)=>this.x(this.dates[i]))).y((t=>this.y(t))).defined((t=>void 0!==t))}scaffold(){this.container=t.select(this.elChart).classed(\"chart multi-line-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\").on(\"mouseover\",this.entered).on(\"mousemove\",this.moved).on(\"mouseout\",this.left),this.g=this.svg.append(\"g\"),this.focusLine=this.svg.append(\"line\").attr(\"class\",\"focus-line\"),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\")}wrangle(){if(0===this.values.length||0===this.series.length)return;this.seriesAccessor={key:t=>t.key,color:t=>t.color},this.accessor={xString:t=>t.xValue,x:t=>this.parseDate(t.xValue),y:t=>t.yValue,z:t=>t.series};let[s,e]=t.extent(this.values,this.accessor.x);this.x.domain([void 0===this.startDate?s:this.parseDate(this.startDate),void 0===this.endDate?e:this.parseDate(this.endDate)]);let[a,h]=t.extent(this.values,this.accessor.y);const l=h-a;this.y.domain([void 0===this.yAxisMin?Math.max(0,a-.05*l):this.yAxisMin,void 0===this.yAxisMax?h+.05*l:this.yAxisMax]),void 0===this.yAxisMin&&void 0===this.yAxisMax&&this.y.nice(),this.color.domain(this.series.map(this.seriesAccessor.key)).range(this.series.map(this.seriesAccessor.color));const n=t.rollup(this.values,(t=>this.accessor.y(t[0])),this.accessor.z,this.accessor.x);this.dates=Array.from(new Set(this.values.map(this.accessor.xString))).map(this.parseDate).sort(t.ascending),this.lineData=this.color.domain().map((t=>{const i=this.goalLines.includes(t),s=this.dates.map((i=>n.get(t)?.get(i)));if(i&&s.some((t=>void 0!==t))){const i=s.find((t=>void 0!==t)),e=[...s].reverse().find((t=>void 0!==t)),a=[...s];if(this.startDate){const t=this.parseDate(this.startDate);tthis.dates[this.dates.length-1]&&(this.dates.push(t),a.push(e))}return{key:t,values:a}}return{key:t,values:s}})),this.showTrendlines&&(this.lineData=this.lineData.map((t=>{if(this.goalLines.includes(t.key))return t;const s=t.values.reduce(((t,i,s)=>(void 0!==i&&t.push(s),t)),[]);let e=null,a=!1;if(s.length>=2){const h=s,l=s.map((i=>t.values[i]));a=l.every((t=>t===l[0])),a||(e=i(h,l),(isNaN(e.slope)||isNaN(e.intercept))&&(e=null))}return{...t,trendline:e,isFlat:a}}))),this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),0!==this.values.length&&0!==this.series.length&&this.render()}render(){this.adjustXMargin(),this.adjustYMargin(),this.renderXAxis(),this.renderYAxis(),this.renderFocusLine(),this.renderTrendlines(),this.renderSeries()}adjustXMargin(){if(this.margin.left=1,this.margin.right=1,this.showYAxisTickLabels){let t=0;this.g.selectAll(\".axis--y .tick text\").each((function(){const i=this.getBBox();t=Math.max(t,i.width)}));const i=16;this.margin.left=t+i}this.showYAxisLabel=\"\"!==this.yAxisLabel,this.showYAxisLabel&&(this.margin.left+=24),this.x.range([this.margin.left,this.width-this.margin.right])}adjustYMargin(){this.margin.top=3,this.margin.bottom=4;const t=Math.ceil(this.g.select(\".axis--x\").node()?.getBoundingClientRect().height||20);this.margin.bottom+=t,this.showXAxisLabel=\"\"!==this.xAxisLabel,this.showXAxisLabel&&(this.margin.bottom+=16),this.y.range([this.height-this.margin.bottom,this.margin.top])}renderXAxis(){const i=this.g.append(\"g\").attr(\"class\",\"temp-axis\").call(t.axisBottom(this.x).tickValues([this.dates[0]]).tickFormat(this.xAxisTickLabelFormat));let s=0;i.selectAll(\".tick text\").each((function(){s=Math.max(s,this.getBoundingClientRect().width)})),i.remove();const e=s+16,a=Math.max(e,this.minTickSpacing||e),h=[this.dates[0]];let l=this.x(this.dates[0]);this.dates.slice(1,-1).forEach((t=>{const i=this.x(t);i-l>=a&&(h.push(t),l=i)}));const n=this.dates[this.dates.length-1];this.x(n)-l>=.75*a||h.pop(),h.push(n),this.g.selectAll(\".axis--x\").data(this.showXAxisTicks?[0]:[]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--x\"))).attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).call(t.axisBottom(this.x).tickValues(h).tickSize(0).tickPadding(14).tickFormat(this.xAxisTickLabelFormat)).call((t=>t.select(\".domain\").remove())).call((t=>{const i=t.select(\".tick:first-of-type\");i.select(\"text\").attr(\"text-anchor\",\"start\").attr(\"transform\",`translate(${this.margin.left-this.x(this.dates[0])},0)`);const s=t.select(\".tick:last-of-type\");s.select(\"text\").attr(\"text-anchor\",\"end\").attr(\"transform\",`translate(${this.width-this.margin.right-this.x(this.dates[this.dates.length-1])},0)`);const e=t.selectAll(\".tick\").nodes();if(e.length>2){const a=i.select(\"text\").node().getBoundingClientRect(),h=s.select(\"text\").node().getBoundingClientRect(),l=t.select(\".tick:nth-of-type(2)\"),n=l.select(\"text\").node().getBoundingClientRect();if(a.right+10>n.left&&l.select(\"text\").style(\"opacity\",0),e.length>3){const i=t.select(\".tick:nth-last-of-type(2)\");i.select(\"text\").node().getBoundingClientRect().right+10>h.left&&i.select(\"text\").style(\"opacity\",0)}}})).call((t=>t.selectAll(\".tick text\"))).call((t=>t.selectAll(\".x-axis-label\").data(\"\"!==this.xAxisLabel?[this.xAxisLabel]:[]).join((t=>t.append(\"text\").attr(\"class\",\"x-axis-label axis-title-text\").attr(\"text-anchor\",\"middle\").attr(\"fill\",\"currentColor\"))).attr(\"x\",(this.x.range()[0]+this.x.range()[1])/2).attr(\"y\",46).text((t=>t))))}renderYAxis(){const i=this.g.selectAll(\".axis--y\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--y\"))).attr(\"transform\",`translate(${this.margin.left},0)`).call(t.axisLeft(this.y).ticks((this.height-this.margin.top-this.margin.bottom)/this.yAxisTickLabelSpread).tickSizeOuter(0).tickSizeInner(this.showYAxisInnerTicks?6:0).tickPadding(16).tickFormat((t=>this.showYAxisTickLabels?this.yAxisTickLabelFormat(t):\"\")));let s=0;this.showYAxisTickLabels&&i.selectAll(\".tick text\").each((function(){const t=this.getBBox();s=Math.max(s,t.width)}));const e=s+40;i.call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showYAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"x2\",this.width-this.margin.left-this.margin.right))).call((t=>t.selectAll(\".tick text\"))).call((t=>t.select(\".domain\").style(\"display\",this.showYAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(\"\"!==this.yAxisLabel?[this.yAxisLabel]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\").attr(\"dy\",\"0.71em\"))).attr(\"x\",-e).attr(\"y\",(this.margin.top+this.height-this.margin.bottom)/2).attr(\"transform\",(()=>`rotate(-90,${-e},${(this.margin.top+this.height-this.margin.bottom)/2})`)).text((t=>t))))}renderFocusLine(){this.focusLine.attr(\"y2\",this.height-this.margin.bottom)}renderZeroLine(){this.g.selectAll(\".zero-line\").data(this.showXAxisLine?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"zero-line\").attr(\"x1\",this.margin.left))).attr(\"transform\",`translate(0,${this.y(0)})`).attr(\"x2\",this.width-this.margin.right)}renderTrendlines(){if(!this.showTrendlines)return;this.g.selectAll(\".trend-lines\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"trend-lines\"))).selectAll(\".trend-line\").data(this.lineData.filter((t=>t.trendline))).join((t=>t.append(\"line\").attr(\"class\",(()=>`trend-line ${this.trendlineClass}`)))).attr(\"stroke\",(t=>this.color(t.key))).attr(\"x1\",(t=>{const i=t.values.findIndex((t=>void 0!==t));return this.x(this.dates[i])})).attr(\"x2\",(t=>{const i=t.values.length-1-[...t.values].reverse().findIndex((t=>void 0!==t));return this.x(this.dates[i])})).attr(\"y1\",(t=>{const i=t.values.findIndex((t=>void 0!==t));return this.y(t.trendline.slope*i+t.trendline.intercept)})).attr(\"y2\",(t=>{const i=t.values.length-1-[...t.values].reverse().findIndex((t=>void 0!==t));return this.y(t.trendline.slope*i+t.trendline.intercept)}))}renderSeries(){const t=this.g.selectAll(\".all-series\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"all-series\"))).selectAll(\".series\").data(this.lineData,(t=>t.key)).join((t=>t.append(\"g\").attr(\"class\",(t=>`series ${this.goalLines.includes(t.key)?this.goalLineClass:\"\"}`)).call((t=>t.append(\"path\").attr(\"class\",\"line\").attr(\"fill\",\"none\"))).call((t=>t.append(\"g\").attr(\"class\",\"dot-circles\")))));t.select(\".line\").attr(\"stroke\",(t=>this.color(t.key))).attr(\"d\",(t=>this.line(t.values))),t.select(\".dot-circles\").attr(\"fill\",(t=>this.color(t.key))).selectAll(\".dot-circle\").data((t=>this.goalLines.includes(t.key)?[]:t.values.map(((i,s)=>{const e=this.dates[s],a=0===s||void 0===t.values[s-1],h=s===t.values.length-1||void 0===t.values[s+1],l=t.values.every((i=>i===t.values[0]));return{date:e,value:i,isVisible:void 0!==i&&(a&&h&&!l||this.showPoints&&!l)}})).filter((t=>t.isVisible)))).join((t=>t.append(\"circle\").attr(\"class\",\"dot-circle\").attr(\"r\",this.dotRadius))).attr(\"cx\",(t=>this.x(t.date))).attr(\"cy\",(t=>this.y(t.value)))}entered(){this.tooltipHtml&&0!==this.values.length&&0!==this.series.length&&this.focusLine.classed(\"is-visible\",!0)}moved(i){if(!this.tooltipHtml)return;if(0===this.values.length||0===this.series.length)return;this.pointer=t.pointer(i,this.svg.node());const s=this.x.invert(this.pointer[0]),e=t.bisectCenter(this.dates,s);this.indexDate!==e&&(this.indexDate=e,this.focusLine.classed(\"has-ticks\",this.showXAxisTicks).attr(\"transform\",`translate(${this.x(this.dates[this.indexDate])},0)`),this.updateTooltip()),this.tooltip.classed(\"is-visible\")&&this.positionTooltip()}left(){this.tooltipHtml&&0!==this.values.length&&0!==this.series.length&&(this.indexDate=null,this.focusLine.classed(\"is-visible\",!1),this.updateTooltip())}updateTooltip(){if(null===this.indexDate)this.tooltip.classed(\"is-visible\",!1);else{const t=this.dates[this.indexDate],i=this.values.filter((i=>this.accessor.x(i)-t==0));this.tooltip.html(this.tooltipHtml(i)).classed(\"is-visible\",!0)}}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect();let i=this.x(this.dates[this.indexDate])-t.width/2;i+t.width>this.width?i=this.width-t.width:i<0&&(i=0);let s=-t.height-4;this.tooltip.style(\"transform\",`translate(${i}px,${s}px)`)}redraw(){this.wrangle()}}class l{constructor({elChart:t,tooltipHtml:i,values:s=[],minAngleForValueLabel:e=15,minAngleForLabel:a=5,labelRadiusRatio:h=.95,pieRadiusRatio:l=.9,valueRadiusRatio:n=.7}){this.elChart=t,this.tooltipHtml=i,this.values=s,this.minAngleForValueLabel=e,this.minAngleForLabel=a,this.labelRadiusRatio=h,this.pieRadiusRatio=l,this.valueRadiusRatio=n,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.left=this.left.bind(this),this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.margin={top:8,right:8,bottom:8,left:8},this.color=t.scaleOrdinal(),this.pie=t.pie(),this.arc=t.arc().innerRadius(0),this.arcValue=t.arc(),this.arcLabel=t.arc(),this.arcLinkStart=t.arc(),this.tooltipData=null}scaffold(){this.container=t.select(this.elChart).classed(\"chart pie-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\").on(\"mouseover\",this.entered).on(\"mouseout\",this.left),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\")}wrangle(){if(0===this.values.length)return;this.accessor={value:t=>+t.value||0,label:t=>t.label,color:t=>t.color},this.pie.value(this.accessor.value),this.sortedValues=this.values.slice().sort(((i,s)=>t.descending(this.accessor.value(i),this.accessor.value(s))));const i=this.sortedValues.filter((t=>!this.accessor.color(t))).length,s=t.quantize((i=>t.interpolateSpectral(.8*i+.1)),Math.max(i,2));let e=[];this.sortedValues.forEach((t=>{e.push(this.accessor.color(t)?this.accessor.color(t):s.pop())})),this.color.domain(this.sortedValues.map(this.accessor.label)).range(e),this.arcs=this.pie(this.sortedValues),this.arcs.forEach((t=>t.midAngle=(t.startAngle+t.endAngle)/2)),this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.radius=Math.min(this.width-this.margin.left-this.margin.right,this.height-this.margin.top-this.margin.bottom)/2,this.arc.outerRadius(this.radius*this.pieRadiusRatio),this.arcLabel.innerRadius(this.radius*this.labelRadiusRatio).outerRadius(this.radius*this.labelRadiusRatio),this.arcValue.innerRadius(this.radius*this.valueRadiusRatio).outerRadius(this.radius*this.valueRadiusRatio),this.arcLinkStart.innerRadius(this.radius*this.pieRadiusRatio).outerRadius(this.radius*this.pieRadiusRatio),this.boundedWidth=this.width-this.margin.left-this.margin.right,this.boundedHeight=this.height-this.margin.top-this.margin.bottom,this.svg.attr(\"viewBox\",[-this.margin.left-this.boundedWidth/2,-this.margin.top-this.boundedHeight/2,this.width,this.height]),0!==this.values.length&&this.render()}render(){this.renderArcs(),this.renderValues(),this.renderLabels()}renderArcs(){this.arcPath=this.svg.selectAll(\".arc-paths\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"arc-paths\"))).selectAll(\".arc-path\").data(this.arcs,(t=>this.accessor.value(t.data))).join((t=>t.append(\"path\").attr(\"class\",\"arc-path\"))).attr(\"fill\",(t=>this.color(this.accessor.label(t.data)))).attr(\"d\",this.arc)}renderValues(){this.svg.selectAll(\".arc-value-texts\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"arc-value-texts\").attr(\"text-anchor\",\"middle\"))).selectAll(\".arc-value-text\").data(this.arcs,(t=>this.accessor.label(t.data))).join((t=>t.append(\"text\").attr(\"class\",\"arc-value-text\").attr(\"dy\",\"0.32em\"))).attr(\"transform\",(t=>`translate(${this.arcValue.centroid(t)})`)).text((t=>t.endAngle-t.startAngle>this.minAngleForValueLabel/180*Math.PI?this.accessor.value(t.data):\"\"))}renderLabels(){const i=this.svg.selectAll(\".arc-labels\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"arc-labels\"))).style(\"display\",null),s=i.selectAll(\".arc-label\").data(this.arcs,(t=>this.accessor.label(t.data))).join((t=>t.append(\"g\").attr(\"class\",\"arc-label\").call((t=>t.append(\"polyline\").attr(\"class\",\"arc-label-polyline\").attr(\"fill\",\"none\"))).call((t=>t.append(\"text\").attr(\"class\",\"arc-label-text\").attr(\"dy\",\"0.32em\"))))).style(\"display\",(t=>t.endAngle-t.startAngle>this.minAngleForLabel/180*Math.PI?null:\"none\")).call((t=>t.select(\".arc-label-polyline\").attr(\"points\",(t=>{const i=this.arcLabel.centroid(t);return i[0]=this.radius*(t.midAnglet.select(\".arc-label-text\").attr(\"transform\",(t=>{const i=this.arcLabel.centroid(t);return i[0]=this.radius*(t.midAnglet.midAnglethis.accessor.label(t.data))))),e=i.node().getBBox();i.style(\"display\",e.width>this.width||e.height>this.height?\"none\":null);const a=[];s.each(((i,s,e)=>{const h=e[s],l=h.getBBox(),n=a.length>0&&(r=a[a.length-1],o=l,!(r.x>o.x+o.width||o.x>r.x+r.width||r.y>o.y+o.height||o.y>r.y+r.height));var r,o;n||a.push(l),t.select(h).style(\"display\",n?\"none\":null)}))}entered(i){if(!this.tooltipHtml)return;const s=i.target.closest(\".arc-path\");s&&(this.arcPath.classed(\"is-active\",(function(){return this===s})).filter((function(){return this===s})).raise(),this.tooltipData=t.select(s).datum(),this.updateTooltip(),this.positionTooltip())}left(t){if(!this.tooltipHtml)return;t.target.closest(\".arc-path\")&&(this.arcPath.classed(\"is-active\",!1).order(),this.tooltipData=null,this.updateTooltip())}updateTooltip(){this.tooltipData?this.tooltip.html(this.tooltipHtml(this.tooltipData.data)).classed(\"is-visible\",!0):this.tooltip.classed(\"is-visible\",!1)}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect(),i=this.arcValue.centroid(this.tooltipData);i[0]+=this.margin.left+this.boundedWidth/2,i[1]+=this.margin.top+this.boundedHeight/2;let s=i[0]-t.width/2;s+t.width>this.width?s=this.width-t.width:s<0&&(s=0);let e=i[1]-8-t.height;e<0&&(e=i[1]+8),this.tooltip.style(\"transform\",`translate(${s}px,${e}px)`)}redraw(){this.wrangle()}}class n{constructor({elChart:t,showXAxisTicks:i=!0,xAxisTickLabelFormat:s=(t=>t.toLocaleString()),showXAxisLabel:e=!0,showXAxisLine:a=!0,showXAxisTickLabels:h=!0,xAxisTickLabelSpread:l=100,showYAxisTicks:n=!0,yAxisTickLabelFormat:r=(t=>t.toLocaleString()),showYAxisLabel:o=!0,showYAxisLine:c=!0,showYAxisTickLabels:d=!0,yAxisTickLabelSpread:x=50,showTrendline:g=!1,matrix:m,highlightedQuadrant:p,axis:u={x:{label:\"\"},y:{label:\"\"}},dotRadius:y=2.5,hoverRadius:b=24,labelTextFormat:f,onClick:k,tooltipHtml:A,values:v=[]}){this.elChart=t,this.showXAxisTicks=i,this.xAxisTickLabelFormat=s,this.showXAxisLabel=e,this.showXAxisLine=a,this.showXAxisTickLabels=h,this.showYAxisTicks=n,this.xAxisTickLabelSpread=l,this.yAxisTickLabelFormat=r,this.showYAxisLabel=o,this.showYAxisLine=c,this.showYAxisTickLabels=d,this.yAxisTickLabelSpread=x,this.showTrendline=g,this.matrix=m,this.highlightedQuadrant=p,this.axis=u,this.dotRadius=y,this.hoverRadius=b,this.labelTextFormat=f,this.onClick=k,this.tooltipHtml=A,this.values=v,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.moved=this.moved.bind(this),this.left=this.left.bind(this),this.clicked=this.clicked.bind(this),this.init()}init(){this.labeler=function(){let t,i=[],s=[],e=1,a=1,h={},l=5,n=.5,r=.2,o=1,c=30,d=30,x=3,g=!1;const m=t=>{let e=i.length,a=0,h=i[t].x-s[t].x,l=s[t].y-i[t].y,n=Math.sqrt(h*h+l*l),g=!0;n>0&&(a+=n*r),h/=n,l/=n,a+=h>0&&l>0?0*x:h<0&&l>0?1*x:h<0&&l<0?2*x:3*x;let m,p,u,b,f,k,A,v=i[t].x,w=i[t].y-i[t].height+2,L=i[t].x+i[t].width,T=i[t].y+2;for(let h=0;h{let n,r,o=Math.floor(Math.random()*i.length),c=i[o].x,d=i[o].y;n=g?t(o,i,s):m(o),i[o].x+=(Math.random()-.5)*l,i[o].y+=(Math.random()-.5)*l,i[o].x>e&&(i[o].x=c),i[o].x<0&&(i[o].x=c),i[o].y>a&&(i[o].y=d),i[o].y<0&&(i[o].y=d),r=g?t(o,i,s):m(o);let x=r-n;Math.random(){let l,r=Math.floor(Math.random()*i.length),o=i[r].x,c=i[r].y;l=g?t(r,i,s):m(r);let d=(Math.random()-.5)*n,x=Math.sin(d),p=Math.cos(d);i[r].x-=s[r].x,i[r].y-=s[r].y;let u,y=i[r].x*p-i[r].y*x,b=i[r].x*x+i[r].y*p;i[r].x=y+s[r].x,i[r].y=b+s[r].y,i[r].x>e&&(i[r].x=o),i[r].x<0&&(i[r].x=o),i[r].y>a&&(i[r].y=c),i[r].y<0&&(i[r].y=c),u=g?t(r,i,s):m(r);let f=u-l;Math.random(){let r,o,c,d,x;return c=(n-l)*(i-t)-(e-s)*(h-a),d=(e-s)*(a-l)-(n-l)*(t-s),x=(i-t)*(a-l)-(h-a)*(t-s),r=d/c,o=x/c,!(r<0||r>1||o<0||o>1)},b=(t,i,s)=>t-i/s;return h.start=function(t){let s=i.length,e=1,a=1;for(let i=0;it.x,y:t=>t.y};const s=.05,[e,a]=t.extent(this.values,this.accessor.x),h=a-e;this.x.domain([void 0===this.axis.x.min?e-h*s:this.axis.x.min,void 0===this.axis.x.max?a+h*s:this.axis.x.max]),void 0===this.axis.x.min&&void 0===this.axis.x.max&&this.x.nice();const[l,n]=t.extent(this.values,this.accessor.y),r=n-l;if(this.y.domain([void 0===this.axis.y.min?l-r*s:this.axis.y.min,void 0===this.axis.y.max?n+r*s:this.axis.y.max]),void 0===this.axis.y.min&&void 0===this.axis.y.max&&this.y.nice(),this.lr=null,this.showTrendline){const t=this.values.reduce(((t,i,s)=>(null!==this.accessor.y(i)&&t.push(s),t)),[]);if(t.length>=2){const s=t.map((t=>this.accessor.x(this.values[t]))),e=t.map((t=>this.accessor.y(this.values[t])));this.lr=i(s,e)}}this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),0!==this.values.length&&this.render()}render(){this.adjustMargin(),this.renderDelaunay(),this.renderClip(),this.renderXAxis(),this.renderYAxis(),this.renderMatrix(),this.renderDots(),this.renderLabels(),this.renderTrendLine()}adjustMargin(){this.margin.bottom=4,this.showXAxisTickLabels&&(this.margin.bottom+=20),this.showXAxisLabel&&(this.margin.bottom+=20),this.margin.left=4,this.showYAxisTickLabels&&(this.margin.left+=48),this.showYAxisLabel&&(this.margin.left+=20),this.x.range([this.margin.left,this.width-this.margin.right]),this.y.range([this.height-this.margin.bottom,this.margin.top])}renderDelaunay(){this.delaunay=t.Delaunay.from(this.values,(t=>this.x(this.accessor.x(t))),(t=>this.y(this.accessor.y(t))))}renderClip(){this.defs.selectAll(\"clipPath\").data([0]).join((t=>t.append(\"clipPath\").attr(\"id\",`${this.id}-clip`).call((t=>t.append(\"rect\").attr(\"x\",this.margin.left).attr(\"y\",this.margin.top))))).select(\"rect\").attr(\"width\",this.width-this.margin.left-this.margin.right).attr(\"height\",this.height-this.margin.top-this.margin.bottom)}renderXAxis(){this.svg.selectAll(\".axis--x\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--x\"))).attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).call(t.axisBottom(this.x).ticks((this.width-this.margin.left-this.margin.right)/this.xAxisTickLabelSpread).tickSizeOuter(0).tickSizeInner(this.showXAxisTickLabels?6:0).tickFormat((t=>this.showXAxisTickLabels?this.xAxisTickLabelFormat(t):\"\"))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showXAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"y2\",-(this.height-this.margin.top-this.margin.bottom)))).call((t=>t.selectAll(\".tick text\").classed(\"tick-label-text\",!0))).call((t=>t.select(\".domain\").style(\"display\",this.showXAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(this.showXAxisLabel?[this.axis.x.label]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\"))).attr(\"x\",(this.margin.left+this.width-this.margin.right)/2).attr(\"y\",this.margin.bottom-4).text((t=>t))))}renderYAxis(){this.svg.selectAll(\".axis--y\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--y\"))).attr(\"transform\",`translate(${this.margin.left},0)`).call(t.axisLeft(this.y).ticks((this.height-this.margin.top-this.margin.bottom)/this.yAxisTickLabelSpread).tickSizeOuter(0).tickSizeInner(this.showYAxisTickLabels?6:0).tickFormat((t=>this.showYAxisTickLabels?this.yAxisTickLabelFormat(t):\"\"))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showYAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"x2\",this.width-this.margin.left-this.margin.right))).call((t=>t.selectAll(\".tick text\").classed(\"tick-label-text\",!0))).call((t=>t.select(\".domain\").style(\"display\",this.showYAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(this.showYAxisLabel?[this.axis.y.label]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\").attr(\"dy\",\"0.71em\"))).attr(\"x\",4-this.margin.left).attr(\"y\",(this.margin.top+this.height-this.margin.bottom)/2).attr(\"transform\",`rotate(-90,${4-this.margin.left},${(this.margin.top+this.height-this.margin.bottom)/2})`).text((t=>t))))}renderMatrix(){this.matrixG=this.svg.selectAll(\".matrix-g\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"matrix-g\")));const t=this.matrix&&this.highlightedQuadrant?{1:{x:this.x(this.matrix[0]),y:this.y.range()[1],width:this.x.range()[1]-this.x(this.matrix[0]),height:this.y(this.matrix[1])-this.y.range()[1]},2:{x:this.x.range()[0],y:this.y.range()[1],width:this.x(this.matrix[0])-this.x.range()[0],height:this.y(this.matrix[1])-this.y.range()[1]},3:{x:this.x.range()[0],y:this.y(this.matrix[1]),width:this.x(this.matrix[0])-this.x.range()[0],height:this.y.range()[0]-this.y(this.matrix[1])},4:{x:this.x(this.matrix[0]),y:this.y(this.matrix[1]),width:this.x.range()[1]-this.x(this.matrix[0]),height:this.y.range()[0]-this.y(this.matrix[1])}}:{};this.matrixG.selectAll(\".matrix-rect\").data(this.matrix&&this.highlightedQuadrant?[t[this.highlightedQuadrant]]:[]).join((t=>t.append(\"rect\").attr(\"class\",\"matrix-rect\"))).attr(\"x\",(t=>t.x)).attr(\"y\",(t=>t.y)).attr(\"width\",(t=>t.width)).attr(\"height\",(t=>t.height)),this.matrixG.selectAll(\".matrix-line--x\").data(this.matrix?[this.matrix[0]]:[]).join((t=>t.append(\"line\").attr(\"class\",\"matrix-line matrix-line--x\"))).attr(\"y1\",this.margin.top).attr(\"y2\",this.height-this.margin.bottom).attr(\"transform\",(t=>`translate(${this.x(t)},0)`)),this.matrixG.selectAll(\".matrix-line--y\").data(this.matrix?[this.matrix[1]]:[]).join((t=>t.append(\"line\").attr(\"class\",\"matrix-line matrix-line--y\"))).attr(\"x1\",this.margin.left).attr(\"x2\",this.width-this.margin.right).attr(\"transform\",(t=>`translate(0,${this.y(t)})`))}renderDots(){this.dotCircle=this.svg.selectAll(\".dot-circles\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"dot-circles\"))).classed(\"is-clickable\",!!this.onClick).selectAll(\".dot-circle\").data(this.values).join((t=>t.append(\"circle\").attr(\"class\",\"dot-circle\").attr(\"r\",this.dotRadius))).attr(\"cx\",(t=>this.x(this.accessor.x(t)))).attr(\"cy\",(t=>this.y(this.accessor.y(t))))}renderLabels(){let t=[],i=[];this.labelTextFormat&&(t=this.values.map((t=>({x:this.x(this.accessor.x(t))-this.margin.left,y:this.y(this.accessor.y(t))-this.margin.top,r:this.dotRadius}))),i=t.map(((t,i)=>({x:t.x,y:t.y,name:this.labelTextFormat(this.values[i])})))),this.labelText=this.svg.selectAll(\".dot-label-texts\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"dot-label-texts\"))).selectAll(\".dot-label-text\").data(i).join((t=>t.append(\"text\").attr(\"class\",\"dot-label-text\"))).text((t=>t.name)).each((function(t){const{width:i,height:s}=this.getBBox();t.width=Math.ceil(i),t.height=Math.ceil(s)})),this.labelTextFormat&&(this.labeler().label(i).anchor(t).width(this.width-this.margin.left-this.margin.right-120).height(this.height-this.margin.top-this.margin.bottom).start(1e3),i.forEach((t=>{t.x+=this.margin.left,t.y+=this.margin.top}))),this.labelText.attr(\"x\",(t=>t.x)).attr(\"y\",(t=>t.y))}renderTrendLine(){const t=this.svg.selectAll(\".trend-line\").data(this.lr?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"trend-line\").attr(\"clip-path\",`url(#${this.id}-clip)`)));this.lr&&t.attr(\"x1\",this.x(this.x.domain()[0])).attr(\"y1\",this.y(this.lr.intercept)).attr(\"x2\",this.x(this.x.domain()[1])).attr(\"y2\",this.y(this.lr.slope*this.x.domain()[1]+this.lr.intercept))}entered(t){this.tooltipHtml&&this.moved(t)}moved(i){if(!this.tooltipHtml)return;const[s,e]=t.pointer(i),a=this.delaunay.find(s,e,this.indexData||0),h=this.values[a];if(Math.hypot(s-this.x(h.x),e-this.y(h.y))>this.hoverRadius)return this.left();this.indexData!==a&&(this.indexData=a,this.dotCircle.classed(\"is-active\",((i,s,e)=>i===this.values[this.indexData]&&(t.select(e[s]).raise(),!0))),this.updateTooltip(),this.positionTooltip())}left(){this.tooltipHtml&&(this.indexData=null,this.dotCircle.classed(\"is-active\",!1).order(),this.updateTooltip())}clicked(){if(!this.onClick||null===this.indexData)return;const t=this.values[this.indexData];this.onClick(t)}updateTooltip(){if(null===this.indexData)this.tooltip.classed(\"is-visible\",!1);else{const t=this.values[this.indexData];this.tooltip.html(this.tooltipHtml(t,this.axis)).classed(\"is-visible\",!0)}}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect();let i=this.x(this.accessor.x(this.values[this.indexData]))-t.width/2;i+t.width>this.width?i=this.width-t.width:i<0&&(i=0);const s=this.dotRadius+8;let e=this.y(this.accessor.y(this.values[this.indexData]))-s-t.height;e<0&&(e=this.y(this.accessor.y(this.values[this.indexData]))+s),this.tooltip.style(\"transform\",`translate(${i}px,${e}px)`)}redraw(){this.wrangle()}}class r{constructor({elChart:t,values:i=[],showXAxisLine:s=!0,startDate:e,endDate:a,yAxisMin:h,yAxisMax:l,showTrendline:n=!1,benchmarkValue:r,tooltipHtml:o,onClick:c}){this.elChart=t,this.values=i,this.showXAxisLine=s,this.startDate=e,this.endDate=a,this.yAxisMin=h,this.yAxisMax=l,this.showTrendline=n,this.benchmarkValue=r,this.tooltipHtml=o,this.onClick=c,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.moved=this.moved.bind(this),this.left=this.left.bind(this),this.clicked=this.clicked.bind(this),this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.id=this.elChart.id||\"_\"+crypto.getRandomValues(new Uint32Array(1)).toString(36),this.dotRadius=2.5,this.margin={top:3,right:3,bottom:3,left:3},this.parseDate=t.utcParse(\"%Y-%m-%d\"),this.indexData=null,this.x=t.scaleUtc(),this.y=t.scaleLinear()}scaffold(){this.container=t.select(this.elChart).classed(\"chart scatter-time-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\").on(\"mouseover\",this.entered).on(\"mousemove\",this.moved).on(\"mouseout\",this.left).on(\"click\",this.clicked),this.defs=this.svg.append(\"defs\"),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\")}wrangle(){if(0===this.values.length)return;this.accessor={x:t=>this.parseDate(t.date),y:t=>t.value,tooltipData:t=>t.tooltip_data},this.hasBenchmarkLine=void 0!==this.benchmarkValue;const s=this.values.map(this.accessor.y);this.hasBenchmarkLine&&s.push(this.benchmarkValue);const[e,a]=t.extent(s),h=a-e,l=e-.05*h,n=a+.05*h;if(this.y.domain([void 0===this.yAxisMin?l:this.yAxisMin,void 0===this.yAxisMax?n:this.yAxisMax]),this.x.domain([this.startDate?this.parseDate(this.startDate):t.min(this.values,this.accessor.x),this.endDate?this.parseDate(this.endDate):t.max(this.values,this.accessor.x)]),this.lr=null,this.showTrendline){const s=this.values.reduce(((t,i,s)=>(null!==this.accessor.y(i)&&t.push(s),t)),[]);if(s.length>=2){const e=s.map((i=>t.utcDay.count(this.x.domain()[0],this.accessor.x(this.values[i])))),a=s.map((t=>this.accessor.y(this.values[t])));this.lr=i(e,a)}}this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.x.range([this.margin.left,this.width-this.margin.right]),this.y.range([this.height-this.margin.bottom,this.margin.top]),this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),0!==this.values.length&&this.render()}render(){this.renderDelaunay(),this.renderClip(),this.renderZeroLine(),this.renderBenchmarkLine(),this.renderTrendLine(),this.renderDots()}renderDelaunay(){this.delaunay=t.Delaunay.from(this.values,(t=>this.x(this.accessor.x(t))),(t=>this.y(this.accessor.y(t))))}renderClip(){this.defs.selectAll(\"clipPath\").data([0]).join((t=>t.append(\"clipPath\").attr(\"id\",`${this.id}-clip`).call((t=>t.append(\"rect\").attr(\"x\",this.margin.left).attr(\"y\",this.margin.top))))).select(\"rect\").attr(\"width\",this.width-this.margin.left-this.margin.right).attr(\"height\",this.height-this.margin.top-this.margin.bottom)}renderZeroLine(){this.svg.selectAll(\".zero-line\").data(this.showXAxisLine?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"zero-line\").attr(\"x1\",this.margin.left))).attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).attr(\"x2\",this.width-this.margin.right)}renderBenchmarkLine(){this.svg.selectAll(\".benchmark-line\").data(this.hasBenchmarkLine?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"benchmark-line\").attr(\"clip-path\",`url(#${this.id}-clip)`))).attr(\"x1\",this.x(this.parseDate(this.startDate))).attr(\"y1\",this.y(this.benchmarkValue)).attr(\"x2\",this.x(this.parseDate(this.endDate))).attr(\"y2\",this.y(this.benchmarkValue))}renderTrendLine(){const i=this.svg.selectAll(\".trend-line\").data(this.lr?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"trend-line\").attr(\"clip-path\",`url(#${this.id}-clip)`)));if(this.lr){const s=this.x.domain()[0],[e,a]=t.extent(this.values,this.accessor.x);i.attr(\"x1\",this.x(e)).attr(\"y1\",this.y(this.lr.slope*t.utcDay.count(s,e)+this.lr.intercept)).attr(\"x2\",this.x(a)).attr(\"y2\",this.y(this.lr.slope*t.utcDay.count(s,a)+this.lr.intercept))}}renderDots(){this.dotCircle=this.svg.selectAll(\".dot-circles\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"dot-circles\"))).classed(\"is-clickable\",!!this.onClick).selectAll(\".dot-circle\").data(this.values).join((t=>t.append(\"circle\").attr(\"class\",\"dot-circle\").attr(\"r\",this.dotRadius))).attr(\"cx\",(t=>this.x(this.accessor.x(t)))).attr(\"cy\",(t=>this.y(this.accessor.y(t))))}entered(t){this.tooltipHtml&&this.moved(t)}moved(i){if(!this.tooltipHtml)return;const s=this.delaunay.find(...t.pointer(i),this.indexData||0);this.indexData!==s&&(this.indexData=s,this.dotCircle.classed(\"is-active\",((i,s,e)=>i===this.values[this.indexData]&&(t.select(e[s]).raise(),!0))),this.updateTooltip(),this.positionTooltip())}left(){this.tooltipHtml&&(this.indexData=null,this.dotCircle.classed(\"is-active\",!1).order(),this.updateTooltip())}clicked(){if(!this.onClick||null===this.indexData)return;const t=this.accessor.tooltipData(this.values[this.indexData]);this.onClick(t)}updateTooltip(){if(null===this.indexData)this.tooltip.classed(\"is-visible\",!1);else{const t=this.accessor.tooltipData(this.values[this.indexData]);this.tooltip.html(this.tooltipHtml(t)).classed(\"is-visible\",!0)}}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect();let i=this.x(this.accessor.x(this.values[this.indexData]))-t.width/2;i+t.width>this.width?i=this.width-t.width:i<0&&(i=0);const s=this.dotRadius+8;let e=this.y(this.accessor.y(this.values[this.indexData]))-s-t.height;e<0&&(e=this.y(this.accessor.y(this.values[this.indexData]))+s),this.tooltip.style(\"transform\",`translate(${i}px,${e}px)`)}redraw(){this.wrangle()}}class o{constructor({elChart:t,values:i=[],series:s=[],showXAxisLine:e=!0,xAxisTickLabelFormat:a=(t=>t.toLocaleString()),showYAxisTicks:h=!0,showYAxisInnerTicks:l=!0,showYAxisLine:n=!1,yAxisTickLabelSpread:r=50,yAxisTickLabelFormat:o=(t=>t.toLocaleString()),spaceBetweenSeries:c=!1,yAxisLabel:d=\"\",yAxisMin:x,yAxisMax:g,xAxisLabel:m=\"\",paddingInner:p=.4,paddingOuter:u=0,maxBarWidth:y=1/0,tooltipHtml:b,enableRoundedCorners:f=!0,leftMargin:k=null,showTrendline:A=!1,trendlineClass:v=\"trend-line\",goalLines:w=[]}){this.elChart=t,this.paddingInner=p,this.paddingOuter=u,this.maxBarWidth=y,this.tooltipHtml=b,this.values=i,this.series=s,this.goalLines=w,this.spaceBetweenSeries=c,this.showXAxisLine=e,this.xAxisTickLabelFormat=a,this.showYAxisTicks=h,this.showYAxisInnerTicks=l,this.showYAxisLine=n,this.yAxisTickLabelSpread=r,this.yAxisTickLabelFormat=o,this.maxBarWidth=y,this.leftMargin=k,this.enableRoundedCorners=f,this.showTrendline=A,this.trendlineClass=v,this.resize=this.resize.bind(this),this.moved=this.moved.bind(this),this.left=this.left.bind(this),this.yAxisLabel=d,this.xAxisLabel=m,this.yAxisMin=x,this.yAxisMax=g,this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.id=this.elChart.id||\"_\"+crypto.getRandomValues(new Uint32Array(1)).toString(36),this.margin={top:16,right:16},this.x=t.scaleBand().paddingInner(this.paddingInner).paddingOuter(this.paddingOuter),this.y=t.scaleLinear(),this.color=t.scaleOrdinal(),this.tooltipData=null}scaffold(){this.container=t.select(this.elChart).classed(\"chart stacked-bar-chart \"+(this.spaceBetweenSeries?\"stacked-bar-chart-spaced\":\"\"),!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-scg\").on(\"mousemove\",(t=>this.moved(t))).on(\"mouseleave\",(()=>this.left())),this.defs=this.svg.append(\"defs\"),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\"),this.tooltipHtml&&(this.tooltipLine=this.svg.append(\"line\").attr(\"y1\",0).attr(\"stroke\",\"#aaa\").attr(\"stroke-dasharray\",\"2,3\").attr(\"stroke-width\",1).attr(\"opacity\",0).style(\"pointer-events\",\"none\").style(\"visibility\",\"hidden\"))}wrangle(){if(0===this.values.length)return;this.accessor={x:t=>t.xValue,y:t=>t.yValue,z:t=>t.series},this.seriesKeys=this.series.length>0?this.series.map((t=>t.key)):Array.from(t.union(this.values.map(this.accessor.z))),this.seriesKeys.length>0?(this.barSeriesKeys=this.seriesKeys.filter((t=>!this.goalLines.includes(t))),this.goalLineKeys=this.seriesKeys.filter((t=>this.goalLines.includes(t)))):(this.barSeriesKeys=[],this.goalLineKeys=[]),this.values.length>0?(this.barData=this.values.filter((t=>!this.goalLines.includes(this.accessor.z(t)))),this.goalLineData=this.values.filter((t=>this.goalLines.includes(this.accessor.z(t))))):(this.barData=[],this.goalLineData=[]),this.color.domain(this.seriesKeys).range(this.series.length>0?this.series.map((t=>t.color)):t.quantize((i=>t.interpolateSpectral(.8*i+.1)),Math.max(this.seriesKeys.length,2))),this.stacked=t.stack().keys(this.barSeriesKeys).value((([,t],i)=>this.accessor.y(t.get(i))))(t.index(this.barData,this.accessor.x,this.accessor.z)),this.x.domain(t.union(this.values.map(this.accessor.x)));const s=t.max(this.stacked,(i=>t.max(i,(t=>t[1])))),e=this.goalLineKeys.length>0?t.max(this.goalLineData,this.accessor.y):-1/0,a=Math.max(s,e);if(this.y.domain([0,void 0===this.yAxisMax?a+.05*a:this.yAxisMax]),void 0===this.yAxisMax&&this.y.nice(),this.lr=null,this.showTrendline){const s=Array.from(t.group(this.barData,this.accessor.x)).map((([,i])=>t.sum(i,this.accessor.y))),e=s.reduce(((t,i,s)=>(null!==i&&t.push(s),t)),[]);if(e.length>=2){const t=e,a=e.map((t=>s[t]));this.lr=i(t,a)}}this.width&&this.render()}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),0!==this.values.length&&this.render()}render(){this.adjustXMargin(),this.renderXAxis(),this.adjustYMargin(),this.renderYAxis(),this.renderBars(),this.renderGoalLines(),this.renderTrendLine()}adjustXMargin(){this.margin.left=52,this.showYAxisLabel=\"\"!==this.yAxisLabel,this.showYAxisLabel&&(this.margin.left+=32),null!==this.leftMargin&&(this.margin.left=this.leftMargin),this.x.range([this.margin.left,this.width-this.margin.right])}renderXAxis(){const i=this.svg.selectAll(\".axis--x\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--x\"))).call(t.axisBottom(this.x).tickSizeOuter(0).tickSizeInner(0).tickFormat(((t,i)=>this.xAxisTickLabelFormat(t,i)))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.select(\".domain\").style(\"display\",this.showXAxisLine?null:\"none\"))),s=i.selectAll(\".tick text\").nodes();let e=!1;for(let t=0;ta.left){e=!0;break}}i.selectAll(\".tick text\").classed(\"tick-label-text\",!0).style(\"text-anchor\",e?\"end\":\"middle\").attr(\"dy\",e?\"0.6em\":\"1.5em\").attr(\"dx\",e?\"-0.2em\":null).attr(\"transform\",e?\"rotate(-45)\":null),i.call((t=>t.selectAll(\".axis-title-text\").data(\"\"!==this.xAxisLabel?[this.xAxisLabel]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\"))).attr(\"x\",(this.x.range()[0]+this.x.range()[1])/2).attr(\"y\",this.margin.bottom?this.margin.bottom-30:30).text((t=>t))))}adjustYMargin(){const t=this.svg.select(\".axis--x\").node(),i=t?Math.ceil(t.getBoundingClientRect().height):20;this.margin.bottom=4+i;const s=this.svg.select(\".axis--y\").selectAll(\".tick text\");if(!s.empty()){const t=Math.ceil(s.nodes()[0].getBoundingClientRect().height);this.margin.top=Math.max(16,t/2)}this.showXAxisLabel=\"\"!==this.xAxisLabel,this.showXAxisLabel&&(this.margin.bottom+=20),this.svg.select(\".axis--x\").attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).selectAll(\".axis-title-text\").attr(\"y\",this.margin.bottom-10).text((t=>t)),this.y.range([this.height-this.margin.bottom,this.margin.top])}renderYAxis(){this.svg.selectAll(\".axis--y\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"axis axis--y\"))).attr(\"transform\",`translate(${this.margin.left},0)`).call(t.axisLeft(this.y).ticks((this.height-this.margin.top-this.margin.bottom)/this.yAxisTickLabelSpread).tickSizeOuter(0).tickPadding(12).tickFormat((t=>this.yAxisTickLabelFormat(t)))).call((t=>t.selectAll(\".tick line\").classed(\"tick-line\",!0))).call((t=>t.selectAll(\".tick\").selectAll(\".grid-line\").data(this.showYAxisTicks?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",\"grid-line\"))).attr(\"x2\",this.width-this.margin.left-this.margin.right))).call((t=>t.selectAll(\".tick text\").classed(\"tick-label-text\",!0))).call((t=>t.select(\".domain\").style(\"display\",this.showYAxisLine?null:\"none\"))).call((t=>t.selectAll(\".axis-title-text\").data(\"\"!==this.yAxisLabel?[this.yAxisLabel]:[]).join((t=>t.append(\"text\").attr(\"class\",\"axis-title-text\").attr(\"fill\",\"currentColor\").attr(\"text-anchor\",\"middle\").attr(\"dy\",\"0.71em\"))).attr(\"x\",4-this.margin.left).attr(\"y\",(this.margin.top+this.height-this.margin.bottom)/2).attr(\"transform\",`rotate(-90,${4-this.margin.left},${(this.margin.top+this.height-this.margin.bottom)/2})`).text((t=>t))))}renderBars(){const i=Math.min(this.maxBarWidth,this.x.bandwidth()),s=this.enableRoundedCorners?3:0;this.bars=this.svg.selectAll(\".bars\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"bars\"))),this.barSeries=this.bars.selectAll(\".bar-series\").data(this.stacked,(t=>t.key)).join((t=>t.append(\"g\").attr(\"class\",\"bar-series\"))).attr(\"fill\",(t=>this.color(t.key)));const e=new Map;this.stacked.forEach((t=>{t.forEach((t=>{const i=t.data[0],s=t[1];(!e.has(i)||e.get(i)t.map((i=>(i.key=t.key,i))))).join((t=>t.append(\"path\").attr(\"class\",\"bar-rect\"))).attr(\"d\",(t=>{const a=this.x(t.data[0])+this.x.bandwidth()/2-i/2,h=this.y(t[1]),l=this.y(t[0])-this.y(t[1]),n=i;if(0===l)return\"\";const r=e.get(t.data[0])===t[1]&&l>0?s:0;return`\\n M ${a+r},${h}\\n L ${a+n-r},${h}\\n Q ${a+n},${h} ${a+n},${h+r}\\n L ${a+n},${h+l}\\n L ${a},${h+l}\\n L ${a},${h+r}\\n Q ${a},${h} ${a+r},${h}\\n Z\\n `})).attr(\"fill\",(t=>this.barSeries.filter((i=>i.key===t.key)).attr(\"fill\")));const a=Array.from(t.group(this.barData,this.accessor.x)).map((([t,i])=>({x:t,values:i,height:e.get(t)||0})));this.columnOverlays=this.bars.selectAll(\".column-overlay\").data(a).join(\"rect\").attr(\"class\",\"column-overlay\").attr(\"x\",(t=>this.x(t.x)+this.x.bandwidth()/2-i/2)).attr(\"y\",(t=>this.y(t.height))).attr(\"width\",i).attr(\"height\",(t=>this.height-this.margin.bottom-this.y(t.height))).attr(\"fill\",\"transparent\")}renderGoalLines(){const i=this.goalLineKeys.map((i=>{const s=Array.from(t.group(this.goalLineData.filter((t=>this.accessor.z(t)===i)),this.accessor.x)).map((([s,e])=>({x:s,y:t.mean(e,this.accessor.y),key:i})));if(s.length>0){const t={x:this.x.domain()[0],xOffset:0,y:s[0].y,key:i,isExtension:!0},e={x:this.x.domain()[this.x.domain().length-1],xOffset:this.x.bandwidth(),y:s[s.length-1].y,key:i,isExtension:!0};return{key:i,values:[t,...s,e]}}return{key:i,values:s}})),s=t.line().x((t=>this.x(t.x)+(t.xOffset||0))).y((t=>this.y(t.y)));this.svg.selectAll(\".goal-line-group\").data(i).join((t=>t.append(\"g\").attr(\"class\",\"goal-line-group\"))).each(((i,e,a)=>{t.select(a[e]).selectAll(\".goal-line\").data([i]).join(\"path\").attr(\"class\",\"goal-line\").attr(\"d\",(t=>s(t.values))).attr(\"fill\",\"none\").attr(\"stroke\",(t=>this.color(t.key))).attr(\"stroke-width\",2)}))}renderTrendLine(){const t=this.svg.selectAll(\".trend-line\").data(this.lr?[0]:[]).join((t=>t.append(\"line\").attr(\"class\",this.trendlineClass)));if(this.lr){const i=this.x.domain(),s=this.y.range(),e=this.x(i[0])+this.x.bandwidth()/2,a=this.x(i[i.length-1])+this.x.bandwidth()/2,h=Math.max(s[1],Math.min(s[0],this.y(this.lr.intercept))),l=Math.max(s[1],Math.min(s[0],this.y(this.lr.slope*(i.length-1)+this.lr.intercept)));t.attr(\"x1\",e).attr(\"x2\",a).attr(\"y1\",h).attr(\"y2\",l)}}moved(i){if(!this.tooltipHtml||!this.x.domain().length)return;const[s]=t.pointer(i),e=this.x.domain().reduce(((t,i)=>{const e=Math.abs(this.x(t)+this.x.bandwidth()/2-s);return Math.abs(this.x(i)+this.x.bandwidth()/2-s)this.accessor.x(t)===e)),h=this.goalLineData.filter((t=>this.accessor.x(t)===e));if(this.tooltipData=[...a,...h],this.tooltipData.length>0){const t=this.x(e)+this.x.bandwidth()/2;this.tooltipLine.attr(\"x1\",t).attr(\"x2\",t).attr(\"y2\",this.height-this.margin.bottom).style(\"visibility\",\"visible\").attr(\"opacity\",1).raise(),this.columnOverlays&&this.columnOverlays.classed(\"is-active\",(t=>t.x===e)),this.updateTooltip(),this.positionTooltip(i,t)}}left(){this.tooltipHtml&&(this.tooltipLine&&this.tooltipLine.style(\"visibility\",\"hidden\").attr(\"opacity\",0),this.columnOverlays&&this.columnOverlays.classed(\"is-active\",!1),this.tooltipData=null,this.updateTooltip())}updateTooltip(){this.tooltipData?this.tooltip.html(this.tooltipHtml(this.tooltipData)).classed(\"is-visible\",!0):this.tooltip.classed(\"is-visible\",!1)}positionTooltip(i,s){const e=this.tooltip.node().getBoundingClientRect();let a=s-e.width/2;a+e.width>this.width?a=this.width-e.width:a<0&&(a=0);const h=t.pointer(i)[1];let l=h-8-e.height;l<0&&(l=h+8),this.tooltip.style(\"transform\",`translate(${a}px,${l}px)`)}redraw(){this.wrangle()}}class c{constructor({elChart:t,tooltipHtml:i,values:s={series:[],dates:[]}}){this.elChart=t,this.tooltipHtml=i,this.values=s,this.resize=this.resize.bind(this),this.entered=this.entered.bind(this),this.moved=this.moved.bind(this),this.left=this.left.bind(this),this.init()}init(){this.setup(),this.scaffold(),this.wrangle(),this.resize(),window.addEventListener(\"resize\",this.resize)}setup(){this.margin={top:3,right:3,bottom:3,left:3},this.parseDate=t.utcParse(\"%Y-%m-%d\"),this.x=t.scaleUtc(),this.y=t.scaleLinear().domain([0,1]),this.area=t.area().x(((t,i)=>this.x(this.dates[i]))).y0((t=>this.y(t[0]))).y1((t=>this.y(t[1]))),this.indexDate=null}scaffold(){this.container=t.select(this.elChart).classed(\"chart stacked-area-chart\",!0),this.svg=this.container.append(\"svg\").attr(\"class\",\"chart-svg\").on(\"mouseover\",this.entered).on(\"mousemove\",this.moved).on(\"mouseout\",this.left),this.g=this.svg.append(\"g\"),this.focusLine=this.svg.append(\"line\").attr(\"class\",\"focus-line\"),this.tooltip=this.container.append(\"div\").attr(\"class\",\"chart-tooltip\")}wrangle(){if(0!==this.values.dates.length){this.dates=this.values.dates.map(this.parseDate),this.x.domain(t.extent(this.dates)),this.series=this.values.series.map((t=>Object.assign({percentages:Array(t.counts.length),stacked:Array(t.counts.length)},t)));for(let i=0;it.counts[i]))|1/0;let e=0;this.series.forEach((t=>{t.percentages[i]=t.counts[i]/s,t.stacked[i]=[e,Math.min(1,e+=t.percentages[i])]}))}this.width&&this.render()}}resize(){this.width=this.container.node().clientWidth,this.height=this.container.node().clientHeight,this.x.range([this.margin.left,this.width-this.margin.right]),this.y.range([this.height-this.margin.bottom,this.margin.top]),this.svg.attr(\"viewBox\",[0,0,this.width,this.height]),this.focusLine.attr(\"y2\",this.height-this.margin.bottom),0!==this.values.dates.length&&this.render()}render(){this.renderZeroLine(),this.renderStackedAreas()}renderZeroLine(){this.g.selectAll(\".zero-line\").data([0]).join((t=>t.append(\"line\").attr(\"class\",\"zero-line\").attr(\"x1\",this.margin.left))).attr(\"transform\",`translate(0,${this.height-this.margin.bottom})`).attr(\"x2\",this.width-this.margin.right)}renderStackedAreas(){this.g.selectAll(\".stacked-areas\").data([0]).join((t=>t.append(\"g\").attr(\"class\",\"stacked-areas\"))).selectAll(\".stacked-area\").data(this.series,(t=>t.name)).join((t=>t.append(\"path\").attr(\"class\",\"stacked-area\"))).attr(\"fill\",(t=>t.color)).attr(\"d\",(t=>this.area(t.stacked)))}entered(){this.tooltipHtml&&this.dates&&this.focusLine.classed(\"is-visible\",!0)}moved(i){if(!this.tooltipHtml||!this.dates)return;this.pointer=t.pointer(i,this.svg.node());const s=this.x.invert(this.pointer[0]),e=t.bisectCenter(this.dates,s);this.indexDate!==e&&(this.indexDate=e,this.focusLine.attr(\"transform\",`translate(${this.x(this.dates[this.indexDate])},0)`),this.updateTooltip()),this.tooltip.classed(\"is-visible\")&&this.positionTooltip()}left(){this.tooltipHtml&&this.dates&&(this.indexDate=null,this.focusLine.classed(\"is-visible\",!1),this.updateTooltip())}updateTooltip(){if(null===this.indexDate)this.tooltip.classed(\"is-visible\",!1);else{const t=this.dates[this.indexDate],i=this.series.map((t=>({name:t.name,count:t.counts[this.indexDate],percentage:t.percentages[this.indexDate],color:t.color})));this.tooltip.html(this.tooltipHtml(t,i)).classed(\"is-visible\",!0)}}positionTooltip(){const t=this.tooltip.node().getBoundingClientRect();let i=this.x(this.dates[this.indexDate])+4;i+t.width>this.width&&(i=this.x(this.dates[this.indexDate])-4-t.width,i<0&&(i=0));let s=(-t.height-4)/2;this.tooltip.style(\"transform\",`translate(${i}px,${s}px)`)}redraw(){this.wrangle()}}export{s as BarChart,e as BumpChart,a as LineChart,h as MultiLineChart,l as PieChart,n as ScatterChart,r as ScatterTimeChart,c as StackedAreaChart,o as StackedBarChart,i as linearRegression};\n","/**!\n * Sortable 1.15.6\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.6\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._onDrop);\n // Native D&D triggers pointercancel\n !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n } else {\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n }\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n } else {\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n }\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'pointerup', this._disableDelayedDrag);\n off(ownerDocument, 'pointercancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = getParentOrHost(parent));\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n window.getSelection().removeAllRanges();\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'pointercancel', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild,\n expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n (function () {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n var filter = options.filter;\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n // Check if element is draggable\n if (!closest(children[i], options.draggable, parentEl, false)) continue;\n // Check if element is filtered\n var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n return closest(children[i], criteria.trim(), parentEl, false);\n }));\n if (filtered) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n })();\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n"],"names":["ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","i","number","numbers","values","valueof","value","index","ascendingBisect","bisectRight","bisectLeft","bisectCenter","extent","min","max","InternMap","entries","key","keyof","intern_get","intern_set","intern_delete","InternSet","_intern","_key","identity","group","keys","nest","groups","flatten","n","g","flatGroup","flatRollup","reduce","rollups","rollup","unique","indexes","map","regroup","permute","source","sort","F","j","c","ascendingDefined","compareDefined","compare","e10","e5","e2","tickSpec","start","stop","count","step","power","error","factor","i1","i2","inc","ticks","reverse","tickIncrement","tickStep","maxIndex","minIndex","quickselect","array","k","m","z","s","sd","newLeft","newRight","t","swap","greatest","defined","maxValue","element","quantile","p","i0","value0","value1","quantileSorted","quantileIndex","_","mean","sum","range","union","others","set","other","o","identity$6","top","bottom","epsilon","translateX","translateY","y","scale","offset","entering","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","context","format","spacing","range0","range1","position","selection","path","tick","tickExit","tickEnter","line","text","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Dispatch","parseTypenames","typenames","types","name","typename","callback","T","get","copy","type","that","args","xhtml","namespaces","namespace","prefix","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","subgroups","subgroup","node","subnode","Selection","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$2","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","selection_data","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","v","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","onRemove","on","onAdd","options","selection_on","dispatchEvent","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","sourceEvent","pointer","svg","point","rect","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","l","rgbn","Rgb","rgba","hsla","r","rgbConvert","rgb","opacity","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","Hsl","hsl","m2","hsl2rgb","clamph","clampt","basis","t1","v0","v1","v2","v3","t2","t3","basis$1","basisClosed","constant$1","linear","exponential","hue","gamma","nogamma","interpolateRgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","numberArray","isNumberArray","array$1","genericArray","nb","na","date$1","interpolateNumber","object","reA","reB","one","interpolateString","bi","am","bm","bs","q","interpolate$1","date","interpolateRound","degrees","decompose","e","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","interpolateTransformCss","interpolateTransformSvg","piecewise","interpolate","I","quantize$1","interpolator","samples","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id","timing","schedules","init","self","tween","interrupt","active","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","resolve","reject","cancel","selection_prototype","cubicIn","cubicOut","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","pi","tau","tauEpsilon","append","strings","appendRound","digits","Path$1","x1","y1","x2","y2","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","a1","ccw","dx","dy","cw","da","w","Path","pathRound","splitter","resulterrbound","elen","flen","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","EPSILON","EDGE_STACK","Delaunator","points","getX","defaultGetX","getY","defaultGetY","coords","maxTriangles","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","d0","circumcenter","hullSize","xp","yp","pseudoAngle","triangles","halfedges","ar","b0","al","bl","p0","pr","pl","p1","inCircle","hbl","br","px","py","ex","ey","fx","fy","ap","bp","cp","cl","ids","dists","temp","tempDist","median","arr","tmp","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","vectors","circumcenters","x3","y3","ab","buffer","inedges","ti","tj","xi","yi","xj","yj","h0","h1","cell","polygon","S","c0","c1","ci","cj","loop","ai","li","aj","lj","e0","V","P","e1","sx0","sy0","sx1","sy1","flip","vx0","vy0","vxn","vyn","vx","vy","pow","pointX","pointY","collinear","jitter","Delaunay","flatArray","flatIterable","bounds","hullIndex","_hullIndex","dc","dt","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","width","length","formatNumerals","numerals","re","formatSpecifier","specifier","FormatSpecifier","formatTrim","out","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$4","prefixes","formatLocale$1","locale","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","symbol","comma","precision","trim","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","initRange","domain","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","r0","r1","bandwidth","round","paddingInner","paddingOuter","rescale","sequence","pointish","constants","unit","normalize","clamper","bimap","d1","polymap","bisect","target","transformer","interpolateValue","untransform","clamp","output","input","continuous","linearish","prestep","maxIter","nice","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","base","logp","reflect","loggish","logs","pows","log","transformSymlog","transformSymexp","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","sqrt","square","unsquare","radial","squared","thresholds","threshold","quantize","timeInterval","floori","offseti","field","test","millisecond","milliseconds","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","seconds","timeMinute","timeMinutes","utcMinute","utcMinutes","timeHour","timeHours","utcHour","utcHours","timeDay","timeDays","utcDay","utcDays","unixDay","unixDays","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","timeMonths","utcMonth","utcMonths","timeYear","timeYears","utcYear","utcYears","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","newDate","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","newParse","Z","parseSpecifier","numberRe","percentRe","requoteRe","requote","dISO","dow","UTCdISO","timeFormat","timeParse","utcFormat","utcParse","calendar","invert","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","ramp","scheme","interpolateRgbBasis","Spectral","abs","atan2","cos","sin","halfPi","acos","asin","withPath","shape","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","arc","innerRadius","outerRadius","cornerRadius","padRadius","startAngle","endAngle","padAngle","a01","a11","a00","a10","da0","da1","rp","rc0","rc1","oc","kc","lc","slice","Linear","curveLinear","shapeLine","curve","defined0","shapeArea","area","x0z","y0z","arealine","identity$1","pie","sortValues","arcs","pa","pointRadial","Bump","BumpRadial","p2","p3","bumpX","bumpY","bumpRadial","sqrt3","asterisk","symbolCircle","symbolCross","tan30","tan30_2","symbolDiamond","diamond2","plus","symbolSquare","square2","ka","kr","kx","ky","symbolStar","symbolTriangle","triangle2","symbolWye","times","symbolsFill","circle","cross","diamond","star","triangle","wye","symbolsStroke","Symbol","Basis","curveBasis","BasisClosed","curveBasisClosed","BasisOpen","curveBasisOpen","LinearClosed","curveLinearClosed","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","curveNatural","Step","curveStep","stepBefore","stepAfter","stackOffsetNone","series","order","stackOrderNone","stackValue","stackSeries","shapeStack","orderNone","offsetNone","stack","sz","oz","stackOffsetExpand","stackOffsetSilhouette","stackOffsetWiggle","s2","si","sij0","sij1","s3","sk","skj0","skj1","Transform","location","A","L","t.utcParse","t.scaleBand","t.scaleLinear","t.select","t.max","t.axisBottom","t.axisLeft","t.utcFormat","t.scalePoint","t.scaleOrdinal","t.line","t.curveBumpX","t.range","t.mean","t.descending","t.ascending","t.Delaunay","t.axisTop","t.axisRight","t.scaleUtc","t.extent","t.min","t.pointer","t.bisectCenter","t.pie","t.arc","t.quantize","t.interpolateSpectral","t.utcDay","t.union","t.stack","t.index","t.group","t.sum","t.area","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","_typeof","obj","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","len","arr2","version","userAgent","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","el","fn","off","matches","getParentOrHost","closest","ctx","includeCTX","R_SPACE","toggleClass","state","className","css","prop","val","matrix","selfOnly","appliedTransforms","matrixFn","tagName","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","elRect","height","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","Sortable","lastChild","last","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","elem","gotSelf","elemCSS","dst","src","isRectEqual","rect1","rect2","_throttleTimeout","throttle","ms","_this","cancelThrottle","scrollBy","Polymer","$","setRect","unsetRect","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","expando","AnimationStateManager","animationStates","animationCallbackId","fromRect","childMatrix","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","duration","repaint","plugins","defaults","PluginManager","plugin","option","eventName","sortable","evt","eventNameGlobal","pluginName","initialized","modified","eventProperties","modifiedValue","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","dragEl","parentEl","nextEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","info","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","to","from","sameGroup","otherGroup","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","touch","originalTarget","_saveInputCheckedState","criteria","ownerDocument","dragStartFn","_disableDraggable","_nextTick","fallback","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","after","_onMove","changed","capture","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","firstChild","direction","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","sibling","dragIndex","nextSibling","moveVector","_unsilent","_cancelNextTick","_globalDragOver","_generateId","useAnimation","items","store","willInsertAfter","onMoveFn","retVal","firstElRect","childContainingRect","spacer","lastElRect","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","str","inputs","idx","_len","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","_ref2","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","speed","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","_ref3","Remove","_ref4","parentSortable","lastSwapEl","SwapPlugin","Swap","onMove","prevSwapEl","swapNodes","n1","n2","multiDragElements","multiDragClones","lastMultiDragSelect","multiDragSortable","initialFolding","folding","dragStarted","dragEl$1","clonesFromRect","clonesHidden","MultiDragPlugin","MultiDrag","multiDragElement","dragged","insertMultiDragClones","cloneNowShown","_ref5","cloneNowHidden","_ref6","_ref7","_this2","removeMultiDragElements","_ref8","_ref9","insertMultiDragElements","_ref10","dragRectAbsolute","clonesHiddenBefore","_ref11","dragMatrix","_ref12","lastIndex","currentIndex","filtered","multiDragIndex","_this3","oldIndicies","newIndicies","clonesInserted","elementsInserted"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229]}