{"version":3,"file":"593.js","mappings":"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","sources":["webpack://WebComponents/./node_modules/byte-base64/lib.js","webpack://WebComponents/./node_modules/codemirror/addon/edit/matchbrackets.js","webpack://WebComponents/./node_modules/codemirror/addon/hint/anyword-hint.js","webpack://WebComponents/./node_modules/codemirror/addon/hint/show-hint.js","webpack://WebComponents/./node_modules/codemirror/addon/hint/sql-hint.js","webpack://WebComponents/./node_modules/codemirror/mode/css/css.js","webpack://WebComponents/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://WebComponents/./node_modules/codemirror/mode/xml/xml.js","webpack://WebComponents/./node_modules/json-stable-stringify/index.js","webpack://WebComponents/./node_modules/json-stringify-pretty-compact/index.js","webpack://WebComponents/./node_modules/jsonify/index.js","webpack://WebComponents/./node_modules/jsonify/lib/parse.js","webpack://WebComponents/./node_modules/jsonify/lib/stringify.js","webpack://WebComponents/./node_modules/tslib/tslib.es6.js","webpack://WebComponents/./node_modules/d3-selection/src/selector.js","webpack://WebComponents/./node_modules/d3-selection/src/selectorAll.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/sparse.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/enter.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/data.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/sort.js","webpack://WebComponents/./node_modules/d3-selection/src/namespaces.js","webpack://WebComponents/./node_modules/d3-selection/src/namespace.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/attr.js","webpack://WebComponents/./node_modules/d3-selection/src/window.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/style.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/property.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/classed.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/text.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/html.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/raise.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/lower.js","webpack://WebComponents/./node_modules/d3-selection/src/creator.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/insert.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/remove.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/clone.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/on.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/dispatch.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/index.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/select.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/selectAll.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/filter.js","webpack://WebComponents/./node_modules/d3-selection/src/matcher.js","webpack://WebComponents/./node_modules/d3-selection/src/constant.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/exit.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/join.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/merge.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/order.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/call.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/nodes.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/node.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/size.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/empty.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/each.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/append.js","webpack://WebComponents/./node_modules/d3-selection/src/selection/datum.js","webpack://WebComponents/./node_modules/vega-dataflow/src/util/UniqueList.js","webpack://WebComponents/./node_modules/vega-dataflow/src/Tuple.js","webpack://WebComponents/./node_modules/vega-dataflow/src/ChangeSet.js","webpack://WebComponents/./node_modules/vega-dataflow/src/Parameters.js","webpack://WebComponents/./node_modules/vega-dataflow/src/Operator.js","webpack://WebComponents/./node_modules/vega-dataflow/src/EventStream.js","webpack://WebComponents/./node_modules/vega-loader/src/loader.js","webpack://WebComponents/./node_modules/vega-loader/src/type.js","webpack://WebComponents/./node_modules/d3-dsv/src/dsv.js","webpack://WebComponents/./node_modules/vega-loader/src/formats/dsv.js","webpack://WebComponents/./node_modules/vega-loader/src/formats/json.js","webpack://WebComponents/./node_modules/topojson-client/src/identity.js","webpack://WebComponents/./node_modules/topojson-client/src/feature.js","webpack://WebComponents/./node_modules/topojson-client/src/transform.js","webpack://WebComponents/./node_modules/topojson-client/src/reverse.js","webpack://WebComponents/./node_modules/topojson-client/src/stitch.js","webpack://WebComponents/./node_modules/topojson-client/src/mesh.js","webpack://WebComponents/./node_modules/vega-loader/src/formats/index.js","webpack://WebComponents/./node_modules/vega-loader/src/formats/topojson.js","webpack://WebComponents/./node_modules/d3-time/src/interval.js","webpack://WebComponents/./node_modules/d3-time/src/duration.js","webpack://WebComponents/./node_modules/d3-time/src/utcWeek.js","webpack://WebComponents/./node_modules/d3-time/src/utcDay.js","webpack://WebComponents/./node_modules/d3-time/src/week.js","webpack://WebComponents/./node_modules/d3-time/src/day.js","webpack://WebComponents/./node_modules/d3-time/src/year.js","webpack://WebComponents/./node_modules/d3-time/src/utcYear.js","webpack://WebComponents/./node_modules/d3-time-format/src/locale.js","webpack://WebComponents/./node_modules/d3-time-format/src/defaultLocale.js","webpack://WebComponents/./node_modules/vega-loader/src/read.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/on.js","webpack://WebComponents/./node_modules/vega-dataflow/src/Pulse.js","webpack://WebComponents/./node_modules/vega-dataflow/src/MultiPulse.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/run.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/update.js","webpack://WebComponents/./node_modules/vega-dataflow/src/util/Heap.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/Dataflow.js","webpack://WebComponents/./node_modules/vega-dataflow/src/Transform.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/add.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/connect.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/rank.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/load.js","webpack://WebComponents/./node_modules/vega-dataflow/src/dataflow/events.js","webpack://WebComponents/./node_modules/vega-dataflow/src/register.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/AggregateKeys.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/AggregateOps.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/ascending.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/max.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/min.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/sort.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/quickselect.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/number.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/quantile.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/median.js","webpack://WebComponents/./node_modules/vega-statistics/build/vega-statistics.module.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/deviation.js","webpack://WebComponents/./node_modules/vega-statistics/node_modules/d3-array/src/variance.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/TupleStore.js","webpack://WebComponents/./node_modules/vega-transforms/src/Aggregate.js","webpack://WebComponents/./node_modules/vega-transforms/src/Bin.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/SortedList.js","webpack://WebComponents/./node_modules/vega-transforms/src/Collect.js","webpack://WebComponents/./node_modules/vega-transforms/src/Compare.js","webpack://WebComponents/./node_modules/vega-transforms/src/CountPattern.js","webpack://WebComponents/./node_modules/vega-transforms/src/Cross.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/Distributions.js","webpack://WebComponents/./node_modules/d3-array/src/extent.js","webpack://WebComponents/./node_modules/d3-array/src/range.js","webpack://WebComponents/./node_modules/vega-transforms/src/Density.js","webpack://WebComponents/./node_modules/vega-transforms/src/Expression.js","webpack://WebComponents/./node_modules/vega-transforms/src/Extent.js","webpack://WebComponents/./node_modules/vega-transforms/src/Subflow.js","webpack://WebComponents/./node_modules/vega-transforms/src/Facet.js","webpack://WebComponents/./node_modules/vega-transforms/src/Field.js","webpack://WebComponents/./node_modules/vega-transforms/src/Filter.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/util.js","webpack://WebComponents/./node_modules/vega-transforms/src/Flatten.js","webpack://WebComponents/./node_modules/vega-transforms/src/Fold.js","webpack://WebComponents/./node_modules/vega-transforms/src/Formula.js","webpack://WebComponents/./node_modules/vega-transforms/src/Generate.js","webpack://WebComponents/./node_modules/d3-array/src/max.js","webpack://WebComponents/./node_modules/d3-array/src/min.js","webpack://WebComponents/./node_modules/d3-array/src/ascending.js","webpack://WebComponents/./node_modules/d3-array/src/quickselect.js","webpack://WebComponents/./node_modules/d3-array/src/quantile.js","webpack://WebComponents/./node_modules/d3-array/src/number.js","webpack://WebComponents/./node_modules/vega-transforms/src/Impute.js","webpack://WebComponents/./node_modules/d3-array/src/median.js","webpack://WebComponents/./node_modules/d3-array/src/mean.js","webpack://WebComponents/./node_modules/vega-transforms/src/JoinAggregate.js","webpack://WebComponents/./node_modules/vega-transforms/src/Key.js","webpack://WebComponents/./node_modules/vega-transforms/src/Load.js","webpack://WebComponents/./node_modules/vega-transforms/src/Lookup.js","webpack://WebComponents/./node_modules/vega-transforms/src/MultiExtent.js","webpack://WebComponents/./node_modules/vega-transforms/src/MultiValues.js","webpack://WebComponents/./node_modules/vega-transforms/src/Params.js","webpack://WebComponents/./node_modules/vega-transforms/src/Pivot.js","webpack://WebComponents/./node_modules/vega-transforms/src/PreFacet.js","webpack://WebComponents/./node_modules/vega-transforms/src/Project.js","webpack://WebComponents/./node_modules/vega-transforms/src/Proxy.js","webpack://WebComponents/./node_modules/vega-transforms/src/Relay.js","webpack://WebComponents/./node_modules/vega-transforms/src/Sample.js","webpack://WebComponents/./node_modules/vega-transforms/src/Sequence.js","webpack://WebComponents/./node_modules/vega-transforms/src/Sieve.js","webpack://WebComponents/./node_modules/vega-transforms/src/TupleIndex.js","webpack://WebComponents/./node_modules/vega-transforms/src/Values.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/WindowOps.js","webpack://WebComponents/./node_modules/vega-transforms/src/util/WindowState.js","webpack://WebComponents/./node_modules/d3-array/src/bisector.js","webpack://WebComponents/./node_modules/vega-transforms/src/Window.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/constants.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/Bounds.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/Gradient.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/Item.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/GroupItem.js","webpack://WebComponents/./node_modules/vega-canvas/src/domCanvas.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/ResourceLoader.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/basis.js","webpack://WebComponents/./node_modules/d3-shape/src/noop.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/bundle.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/cardinal.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://WebComponents/./node_modules/d3-shape/src/math.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/linear.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/monotone.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/natural.js","webpack://WebComponents/./node_modules/d3-shape/src/curve/step.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/curves.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/parse.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/arc.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/render.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/symbols.js","webpack://WebComponents/./node_modules/d3-path/src/path.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/rectangle.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/trail.js","webpack://WebComponents/./node_modules/d3-shape/src/constant.js","webpack://WebComponents/./node_modules/d3-shape/src/arc.js","webpack://WebComponents/./node_modules/d3-shape/src/point.js","webpack://WebComponents/./node_modules/d3-shape/src/line.js","webpack://WebComponents/./node_modules/d3-shape/src/area.js","webpack://WebComponents/./node_modules/d3-shape/src/symbol/circle.js","webpack://WebComponents/./node_modules/d3-shape/src/symbol/diamond.js","webpack://WebComponents/./node_modules/d3-shape/src/symbol/star.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/path/shapes.js","webpack://WebComponents/./node_modules/d3-shape/src/symbol/triangle.js","webpack://WebComponents/./node_modules/d3-shape/src/symbol/wye.js","webpack://WebComponents/./node_modules/d3-shape/src/symbol.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/bound/boundStroke.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/bound/boundContext.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/color.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/gradient.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/fill.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/stroke.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/visit.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/draw.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/pick.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/svg/translate.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/svg/translateItem.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/markItemPath.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/arc.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/markMultiItemPath.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/area.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/pickPath.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/svg/clip.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/group.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/image.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/line.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/path.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/rect.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/rule.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/shape.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/symbol.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/text.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/text.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/trail.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/marks/index.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/bound/boundItem.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/bound/boundMark.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/serialize.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/Scenegraph.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/dom.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/point.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/Handler.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/Renderer.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/resolveItem.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/events.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/CanvasHandler.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/resize.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/CanvasRenderer.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/SVGHandler.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/canvas/clip.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/tags.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/svg/metadata.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/svg/styles.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/SVGRenderer.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/SVGStringRenderer.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/modules.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/bound/boundClip.js","webpack://WebComponents/./node_modules/vega-scenegraph/src/util/equal.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/Bound.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/Identifier.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/Mark.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/Overlap.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/Render.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/gridLayout.js","webpack://WebComponents/./node_modules/vega-view-transforms/src/ViewLayout.js","webpack://WebComponents/./node_modules/vega-encode/src/scale-types.js","webpack://WebComponents/./node_modules/vega-scale/src/bandSpace.js","webpack://WebComponents/./node_modules/d3-array/src/bisect.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/ascending.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/bisector.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/bisect.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/array.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/ticks.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/number.js","webpack://WebComponents/./node_modules/d3-scale/node_modules/d3-array/src/quantile.js","webpack://WebComponents/./node_modules/d3-collection/src/map.js","webpack://WebComponents/./node_modules/d3-collection/src/nest.js","webpack://WebComponents/./node_modules/d3-collection/src/set.js","webpack://WebComponents/./node_modules/d3-scale/src/array.js","webpack://WebComponents/./node_modules/d3-scale/src/init.js","webpack://WebComponents/./node_modules/d3-scale/src/ordinal.js","webpack://WebComponents/./node_modules/d3-color/src/define.js","webpack://WebComponents/./node_modules/d3-color/src/color.js","webpack://WebComponents/./node_modules/d3-interpolate/src/basis.js","webpack://WebComponents/./node_modules/d3-interpolate/src/basisClosed.js","webpack://WebComponents/./node_modules/d3-interpolate/src/constant.js","webpack://WebComponents/./node_modules/d3-interpolate/src/color.js","webpack://WebComponents/./node_modules/d3-interpolate/src/rgb.js","webpack://WebComponents/./node_modules/d3-interpolate/src/numberArray.js","webpack://WebComponents/./node_modules/d3-interpolate/src/array.js","webpack://WebComponents/./node_modules/d3-interpolate/src/date.js","webpack://WebComponents/./node_modules/d3-interpolate/src/number.js","webpack://WebComponents/./node_modules/d3-interpolate/src/object.js","webpack://WebComponents/./node_modules/d3-interpolate/src/string.js","webpack://WebComponents/./node_modules/d3-interpolate/src/value.js","webpack://WebComponents/./node_modules/d3-interpolate/src/round.js","webpack://WebComponents/./node_modules/d3-scale/src/number.js","webpack://WebComponents/./node_modules/d3-scale/src/continuous.js","webpack://WebComponents/./node_modules/d3-scale/src/constant.js","webpack://WebComponents/./node_modules/d3-format/src/formatSpecifier.js","webpack://WebComponents/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://WebComponents/./node_modules/d3-format/src/formatDecimal.js","webpack://WebComponents/./node_modules/d3-format/src/exponent.js","webpack://WebComponents/./node_modules/d3-format/src/formatRounded.js","webpack://WebComponents/./node_modules/d3-format/src/formatTypes.js","webpack://WebComponents/./node_modules/d3-format/src/identity.js","webpack://WebComponents/./node_modules/d3-format/src/locale.js","webpack://WebComponents/./node_modules/d3-format/src/defaultLocale.js","webpack://WebComponents/./node_modules/d3-format/src/formatGroup.js","webpack://WebComponents/./node_modules/d3-format/src/formatNumerals.js","webpack://WebComponents/./node_modules/d3-format/src/formatTrim.js","webpack://WebComponents/./node_modules/d3-scale/src/linear.js","webpack://WebComponents/./node_modules/d3-scale/src/tickFormat.js","webpack://WebComponents/./node_modules/d3-format/src/precisionPrefix.js","webpack://WebComponents/./node_modules/d3-format/src/precisionRound.js","webpack://WebComponents/./node_modules/d3-format/src/precisionFixed.js","webpack://WebComponents/./node_modules/d3-scale/src/nice.js","webpack://WebComponents/./node_modules/d3-scale/src/log.js","webpack://WebComponents/./node_modules/d3-scale/src/pow.js","webpack://WebComponents/./node_modules/d3-time/src/month.js","webpack://WebComponents/./node_modules/d3-time/src/hour.js","webpack://WebComponents/./node_modules/d3-time/src/minute.js","webpack://WebComponents/./node_modules/d3-time/src/second.js","webpack://WebComponents/./node_modules/d3-time/src/millisecond.js","webpack://WebComponents/./node_modules/d3-scale/src/time.js","webpack://WebComponents/./node_modules/d3-time/src/utcMonth.js","webpack://WebComponents/./node_modules/d3-time/src/utcHour.js","webpack://WebComponents/./node_modules/d3-time/src/utcMinute.js","webpack://WebComponents/./node_modules/vega-scale/src/scaleBand.js","webpack://WebComponents/./node_modules/vega-scale/src/scaleBin.js","webpack://WebComponents/./node_modules/vega-scale/src/scales.js","webpack://WebComponents/./node_modules/vega-scale/src/invertRange.js","webpack://WebComponents/./node_modules/vega-scale/src/invertRangeExtent.js","webpack://WebComponents/./node_modules/d3-scale/src/identity.js","webpack://WebComponents/./node_modules/d3-scale/src/quantile.js","webpack://WebComponents/./node_modules/d3-scale/src/quantize.js","webpack://WebComponents/./node_modules/d3-scale/src/threshold.js","webpack://WebComponents/./node_modules/d3-scale/src/utcTime.js","webpack://WebComponents/./node_modules/vega-scale/src/scaleSequential.js","webpack://WebComponents/./node_modules/d3-interpolate/src/discrete.js","webpack://WebComponents/./node_modules/d3-interpolate/src/hue.js","webpack://WebComponents/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://WebComponents/./node_modules/d3-interpolate/src/transform/parse.js","webpack://WebComponents/./node_modules/d3-interpolate/src/transform/index.js","webpack://WebComponents/./node_modules/d3-interpolate/src/zoom.js","webpack://WebComponents/./node_modules/d3-interpolate/src/hsl.js","webpack://WebComponents/./node_modules/d3-color/src/math.js","webpack://WebComponents/./node_modules/d3-color/src/lab.js","webpack://WebComponents/./node_modules/d3-interpolate/src/lab.js","webpack://WebComponents/./node_modules/d3-interpolate/src/hcl.js","webpack://WebComponents/./node_modules/d3-color/src/cubehelix.js","webpack://WebComponents/./node_modules/d3-interpolate/src/cubehelix.js","webpack://WebComponents/./node_modules/d3-interpolate/src/piecewise.js","webpack://WebComponents/./node_modules/d3-interpolate/src/quantize.js","webpack://WebComponents/./node_modules/vega-scale/src/interpolate.js","webpack://WebComponents/./node_modules/vega-scale/src/palettes.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/colors.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/ramp.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://WebComponents/./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://WebComponents/./node_modules/vega-scale/src/schemes.js","webpack://WebComponents/./node_modules/vega-scale/src/timeInterval.js","webpack://WebComponents/./node_modules/vega-encode/src/ticks.js","webpack://WebComponents/./node_modules/vega-encode/src/AxisTicks.js","webpack://WebComponents/./node_modules/vega-encode/src/DataJoin.js","webpack://WebComponents/./node_modules/vega-encode/src/Encode.js","webpack://WebComponents/./node_modules/vega-encode/src/legend-types.js","webpack://WebComponents/./node_modules/vega-encode/src/labels.js","webpack://WebComponents/./node_modules/vega-encode/src/LegendEntries.js","webpack://WebComponents/./node_modules/vega-encode/src/LinkPath.js","webpack://WebComponents/./node_modules/vega-encode/src/Pie.js","webpack://WebComponents/./node_modules/d3-array/src/sum.js","webpack://WebComponents/./node_modules/vega-encode/src/Scale.js","webpack://WebComponents/./node_modules/vega-encode/src/SortItems.js","webpack://WebComponents/./node_modules/vega-encode/src/Stack.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/ascending.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/bisect.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/bisector.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/array.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/ticks.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/threshold/sturges.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/range.js","webpack://WebComponents/./node_modules/d3-contour/src/array.js","webpack://WebComponents/./node_modules/d3-contour/src/ascending.js","webpack://WebComponents/./node_modules/d3-contour/src/constant.js","webpack://WebComponents/./node_modules/d3-contour/src/contains.js","webpack://WebComponents/./node_modules/d3-contour/src/noop.js","webpack://WebComponents/./node_modules/d3-contour/src/contours.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/extent.js","webpack://WebComponents/./node_modules/d3-contour/src/area.js","webpack://WebComponents/./node_modules/d3-contour/src/blur.js","webpack://WebComponents/./node_modules/d3-contour/src/density.js","webpack://WebComponents/./node_modules/vega-geo/src/Contour.js","webpack://WebComponents/./node_modules/d3-contour/node_modules/d3-array/src/max.js","webpack://WebComponents/./node_modules/vega-geo/src/constants.js","webpack://WebComponents/./node_modules/vega-geo/src/GeoJSON.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/identity.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/stream.js","webpack://WebComponents/./node_modules/d3-array/src/fsum.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/math.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/noop.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/area.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/bounds.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/centroid.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/context.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/measure.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/string.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/path/index.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/buffer.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/pointEqual.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/rejoin.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/cartesian.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/polygonContains.js","webpack://WebComponents/./node_modules/d3-array/src/merge.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/index.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/antimeridian.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/circle.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/rectangle.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/line.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/compose.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/rotation.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/transform.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/fit.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/resample.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/index.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/clip/circle.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/conic.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/albers.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/azimuthal.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/mercator.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/conicConformal.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/equirectangular.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/equalEarth.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/gnomonic.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/orthographic.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/stereographic.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/transverseMercator.js","webpack://WebComponents/./node_modules/d3-geo/src/noop.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/buffer.js","webpack://WebComponents/./node_modules/d3-geo/src/math.js","webpack://WebComponents/./node_modules/d3-geo/src/pointEqual.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/rejoin.js","webpack://WebComponents/./node_modules/d3-geo/src/adder.js","webpack://WebComponents/./node_modules/d3-geo/src/cartesian.js","webpack://WebComponents/./node_modules/d3-geo/src/polygonContains.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/ascending.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/bisect.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/bisector.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/array.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/merge.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/range.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/index.js","webpack://WebComponents/./node_modules/d3-geo/node_modules/d3-array/src/ticks.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://WebComponents/./node_modules/d3-geo/src/circle.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/rectangle.js","webpack://WebComponents/./node_modules/d3-geo/src/compose.js","webpack://WebComponents/./node_modules/d3-geo/src/identity.js","webpack://WebComponents/./node_modules/d3-geo/src/rotation.js","webpack://WebComponents/./node_modules/d3-geo/src/transform.js","webpack://WebComponents/./node_modules/d3-geo/src/stream.js","webpack://WebComponents/./node_modules/d3-geo/src/path/bounds.js","webpack://WebComponents/./node_modules/d3-geo/src/projection/fit.js","webpack://WebComponents/./node_modules/d3-geo/src/projection/resample.js","webpack://WebComponents/./node_modules/d3-geo/src/projection/index.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/circle.js","webpack://WebComponents/./node_modules/d3-geo/src/clip/line.js","webpack://WebComponents/./node_modules/d3-geo-projection/src/math.js","webpack://WebComponents/./node_modules/d3-geo-projection/src/mollweide.js","webpack://WebComponents/./node_modules/vega-projection/build/vega-projection.module.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/albersUsa.js","webpack://WebComponents/./node_modules/vega-projection/node_modules/d3-geo/src/projection/identity.js","webpack://WebComponents/./node_modules/vega-geo/src/GeoPath.js","webpack://WebComponents/./node_modules/vega-geo/src/GeoPoint.js","webpack://WebComponents/./node_modules/vega-geo/src/GeoShape.js","webpack://WebComponents/./node_modules/d3-geo/src/graticule.js","webpack://WebComponents/./node_modules/vega-geo/src/Graticule.js","webpack://WebComponents/./node_modules/vega-geo/src/Projection.js","webpack://WebComponents/./node_modules/d3-force/src/constant.js","webpack://WebComponents/./node_modules/d3-force/src/jiggle.js","webpack://WebComponents/./node_modules/d3-quadtree/src/add.js","webpack://WebComponents/./node_modules/d3-quadtree/src/quad.js","webpack://WebComponents/./node_modules/d3-quadtree/src/x.js","webpack://WebComponents/./node_modules/d3-quadtree/src/y.js","webpack://WebComponents/./node_modules/d3-quadtree/src/quadtree.js","webpack://WebComponents/./node_modules/d3-force/src/collide.js","webpack://WebComponents/./node_modules/d3-force/src/link.js","webpack://WebComponents/./node_modules/d3-quadtree/src/cover.js","webpack://WebComponents/./node_modules/d3-quadtree/src/data.js","webpack://WebComponents/./node_modules/d3-quadtree/src/extent.js","webpack://WebComponents/./node_modules/d3-quadtree/src/find.js","webpack://WebComponents/./node_modules/d3-quadtree/src/remove.js","webpack://WebComponents/./node_modules/d3-quadtree/src/root.js","webpack://WebComponents/./node_modules/d3-quadtree/src/size.js","webpack://WebComponents/./node_modules/d3-quadtree/src/visit.js","webpack://WebComponents/./node_modules/d3-quadtree/src/visitAfter.js","webpack://WebComponents/./node_modules/d3-dispatch/src/dispatch.js","webpack://WebComponents/./node_modules/d3-timer/src/timer.js","webpack://WebComponents/./node_modules/d3-force/src/simulation.js","webpack://WebComponents/./node_modules/vega-force/src/Force.js","webpack://WebComponents/./node_modules/d3-force/src/center.js","webpack://WebComponents/./node_modules/d3-force/src/manyBody.js","webpack://WebComponents/./node_modules/d3-force/src/x.js","webpack://WebComponents/./node_modules/d3-force/src/y.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/lookup.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/Nest.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/HierarchyLayout.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/array.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/accessors.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/constant.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/pack/index.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/Pack.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/Partition.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/partition.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/stratify.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/Stratify.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/tree.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/cluster.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/Tree.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/TreeLinks.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://WebComponents/./node_modules/vega-hierarchy/src/Treemap.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://WebComponents/./node_modules/d3-voronoi/src/constant.js","webpack://WebComponents/./node_modules/d3-voronoi/src/point.js","webpack://WebComponents/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://WebComponents/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://WebComponents/./node_modules/d3-voronoi/src/Edge.js","webpack://WebComponents/./node_modules/d3-voronoi/src/Cell.js","webpack://WebComponents/./node_modules/d3-voronoi/src/Circle.js","webpack://WebComponents/./node_modules/d3-voronoi/src/Beach.js","webpack://WebComponents/./node_modules/d3-voronoi/src/Diagram.js","webpack://WebComponents/./node_modules/vega-voronoi/src/Voronoi.js","webpack://WebComponents/./node_modules/d3-voronoi/src/voronoi.js","webpack://WebComponents/./node_modules/vega-wordcloud/src/CloudLayout.js","webpack://WebComponents/./node_modules/vega-wordcloud/src/Wordcloud.js","webpack://WebComponents/./node_modules/vega-crossfilter/src/arrays.js","webpack://WebComponents/./node_modules/vega-crossfilter/src/Bitmaps.js","webpack://WebComponents/./node_modules/vega-crossfilter/src/Dimension.js","webpack://WebComponents/./node_modules/vega-crossfilter/src/SortedIndex.js","webpack://WebComponents/./node_modules/d3-array/src/permute.js","webpack://WebComponents/./node_modules/vega-crossfilter/src/CrossFilter.js","webpack://WebComponents/./node_modules/vega-crossfilter/src/ResolveFilter.js","webpack://WebComponents/./node_modules/vega-view/src/cursor.js","webpack://WebComponents/./node_modules/vega-view/src/data.js","webpack://WebComponents/./node_modules/vega-view/src/render-size.js","webpack://WebComponents/./node_modules/vega-view/src/events.js","webpack://WebComponents/./node_modules/vega-view/src/hover.js","webpack://WebComponents/./node_modules/vega-view/src/element.js","webpack://WebComponents/./node_modules/d3-array/src/ticks.js","webpack://WebComponents/./node_modules/vega-view/src/bind.js","webpack://WebComponents/./node_modules/vega-view/src/initialize-renderer.js","webpack://WebComponents/./node_modules/vega-view/src/trap.js","webpack://WebComponents/./node_modules/vega-view/src/initialize.js","webpack://WebComponents/./node_modules/vega-view/src/render-headless.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/padding.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/signal.js","webpack://WebComponents/./node_modules/vega-expression/src/ast.js","webpack://WebComponents/./node_modules/vega-expression/src/parser.js","webpack://WebComponents/./node_modules/vega-expression/src/constants.js","webpack://WebComponents/./node_modules/vega-expression/src/functions.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/format.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/arrays.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/log.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/window.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/ast.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/prefixes.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/scale.js","webpack://WebComponents/./node_modules/d3-geo/src/area.js","webpack://WebComponents/./node_modules/d3-geo/src/bounds.js","webpack://WebComponents/./node_modules/d3-geo/src/centroid.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/geo.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/data.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/tree.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/modify.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/selection.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/selection.deprecated.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/codegen.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/quarter.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/inscope.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/pinch.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/merge.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/flush.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/shape.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/encode.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression/scale-gradient.js","webpack://WebComponents/./node_modules/vega-expression/src/codegen.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/expression.js","webpack://WebComponents/./node_modules/vega-parser/src/util.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/stream.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/update.js","webpack://WebComponents/./node_modules/vega-parser/src/transforms.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/scale.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/projection.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/constants.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/adjust-spatial.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/expression.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/field.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/scale.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/property.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/entry.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/gradient.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/color.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/set.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/rule.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/roles.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/encode/encode-util.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/guide-mark.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/guide-util.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/marktypes.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/legend-gradient.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/legend-gradient-discrete.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/legend-gradient-labels.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/guide-group.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/legend-symbol-groups.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/clip.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/role.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/definition.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/interactive.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/transform.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/data.js","webpack://WebComponents/./node_modules/vega-parser/src/DataScope.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/trigger.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/mark.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/facet.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/marks/subflow.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/title.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/data.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/axis-domain.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/axis-labels.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/spec.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/signal-updates.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/axis.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/axis-config.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/axis-grid.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/axis-ticks.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/axis-title.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/legend.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/guides/legend-title.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/view.js","webpack://WebComponents/./node_modules/vega-parser/src/Scope.js","webpack://WebComponents/./node_modules/vega-parser/src/config.js","webpack://WebComponents/./node_modules/vega-parser/src/parse.js","webpack://WebComponents/./node_modules/vega-parser/src/parsers/autosize.js","webpack://WebComponents/./node_modules/vega-runtime/src/expression.js","webpack://WebComponents/./node_modules/vega-runtime/src/parameters.js","webpack://WebComponents/./node_modules/vega-runtime/src/util.js","webpack://WebComponents/./node_modules/vega-runtime/src/dataflow.js","webpack://WebComponents/./node_modules/vega-runtime/src/operator.js","webpack://WebComponents/./node_modules/vega-runtime/src/stream.js","webpack://WebComponents/./node_modules/vega-runtime/src/update.js","webpack://WebComponents/./node_modules/vega-runtime/src/state.js","webpack://WebComponents/./node_modules/vega-runtime/src/context.js","webpack://WebComponents/./node_modules/vega-view/src/size.js","webpack://WebComponents/./node_modules/vega-view/src/state.js","webpack://WebComponents/./node_modules/vega-view/src/tooltip.js","webpack://WebComponents/./node_modules/vega-view/src/View.js","webpack://WebComponents/./node_modules/vega-view/src/runtime.js","webpack://WebComponents/./node_modules/vega-view/src/timer.js","webpack://WebComponents/./node_modules/d3-timer/src/interval.js","webpack://WebComponents/./node_modules/vega-view/src/events-extend.js","webpack://WebComponents/./node_modules/vega-view/src/finalize.js","webpack://WebComponents/./node_modules/vega-view/src/scale.js","webpack://WebComponents/./node_modules/vega-view/src/initialize-handler.js","webpack://WebComponents/./node_modules/vega-view/src/render-to-image-url.js","webpack://WebComponents/./node_modules/vega-view/src/render-to-canvas.js","webpack://WebComponents/./node_modules/vega-view/src/render-to-svg.js","webpack://WebComponents/./node_modules/vega-lib/index.js","webpack://WebComponents/./node_modules/vega-themes/build/vega-themes.module.js","webpack://WebComponents/./node_modules/vega-tooltip/build/defaults.js","webpack://WebComponents/./node_modules/vega-tooltip/build/formatValue.js","webpack://WebComponents/./node_modules/vega-tooltip/build/Handler.js","webpack://WebComponents/./node_modules/vega-tooltip/build/style.js","webpack://WebComponents/./node_modules/vega-tooltip/build/position.js","webpack://WebComponents/./node_modules/vega-embed/build/style.js","webpack://WebComponents/./node_modules/vega-embed/build/util.js","webpack://WebComponents/./node_modules/vega-embed/build/embed.js","webpack://WebComponents/./node_modules/d3-selection/src/select.js","webpack://WebComponents/./node_modules/vega-embed/build/post.js","webpack://WebComponents/./node_modules/vega-embed/node_modules/semver/semver.js","webpack://WebComponents/./node_modules/vega-event-selector/build/vega-event-selector.module.js","webpack://WebComponents/./node_modules/vega-lite/build/src/aggregate.js","webpack://WebComponents/./node_modules/vega-lite/build/src/axis.js","webpack://WebComponents/./node_modules/vega-lite/build/src/bin.js","webpack://WebComponents/./node_modules/vega-lite/build/src/channel.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/axis/assemble.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/axis/component.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/axis/config.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/axis/encode.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/axis/parse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/axis/properties.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/baseconcat.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/buildmodel.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/common.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/compile.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/concat.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/aggregate.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/assemble.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/bin.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/calculate.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/dataflow.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/facet.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/filter.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/filterinvalid.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/formatparse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/geojson.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/geopoint.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/identifier.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/index.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/lookup.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/optimize.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/optimizers.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/parse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/source.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/stack.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/timeunit.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/data/window.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/facet.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/header/index.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/layer.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/layoutsize/parse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/legend/assemble.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/legend/component.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/legend/encode.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/legend/parse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/legend/properties.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/area.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/bar.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/geoshape.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/init.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/line.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/mark.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/mixins.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/point.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/rect.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/rule.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/text.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/tick.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/mark/valueref.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/model.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/projection/assemble.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/projection/component.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/projection/parse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/repeat.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/repeater.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/resolve.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/assemble.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/component.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/domain.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/parse.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/properties.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/range.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/scale/type.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/interval.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/multi.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/selection.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/single.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/project.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/split.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compile/unit.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compositemark/boxplot.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compositemark/common.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compositemark/errorbar.js","webpack://WebComponents/./node_modules/vega-lite/build/src/compositemark/index.js","webpack://WebComponents/./node_modules/vega-lite/build/src/config.js","webpack://WebComponents/./node_modules/vega-lite/build/src/data.js","webpack://WebComponents/./node_modules/vega-lite/build/src/datetime.js","webpack://WebComponents/./node_modules/vega-lite/build/src/encoding.js","webpack://WebComponents/./node_modules/vega-lite/build/src/facet.js","webpack://WebComponents/./node_modules/vega-lite/build/src/fielddef.js","webpack://WebComponents/./node_modules/vega-lite/build/src/guide.js","webpack://WebComponents/./node_modules/vega-lite/build/src/header.js","webpack://WebComponents/./node_modules/vega-lite/build/src/index.js","webpack://WebComponents/./node_modules/vega-lite/build/src/legend.js","webpack://WebComponents/./node_modules/vega-lite/build/src/log.js","webpack://WebComponents/./node_modules/vega-lite/build/src/logical.js","webpack://WebComponents/./node_modules/vega-lite/build/src/mark.js","webpack://WebComponents/./node_modules/vega-lite/build/src/predicate.js","webpack://WebComponents/./node_modules/vega-lite/build/src/projection.js","webpack://WebComponents/./node_modules/vega-lite/build/src/scale.js","webpack://WebComponents/./node_modules/vega-lite/build/src/selection.js","webpack://WebComponents/./node_modules/vega-lite/build/src/sort.js","webpack://WebComponents/./node_modules/vega-lite/build/src/spec.js","webpack://WebComponents/./node_modules/vega-lite/build/src/stack.js","webpack://WebComponents/./node_modules/vega-lite/build/src/timeunit.js","webpack://WebComponents/./node_modules/vega-lite/build/src/title.js","webpack://WebComponents/./node_modules/vega-lite/build/src/toplevelprops.js","webpack://WebComponents/./node_modules/vega-lite/build/src/transform.js","webpack://WebComponents/./node_modules/vega-lite/build/src/type.js","webpack://WebComponents/./node_modules/vega-lite/build/src/util.js","webpack://WebComponents/./node_modules/vega-lite/build/src/validate.js","webpack://WebComponents/./node_modules/vega-lite/build/src/vega.schema.js","webpack://WebComponents/./node_modules/vega-lite/node_modules/tslib/tslib.es6.js","webpack://WebComponents/./node_modules/vega-schema-url-parser/index.js","webpack://WebComponents/./node_modules/vega-util/build/vega-util.module.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bytesToBase64 = bytesToBase64;\nexports.base64ToBytes = base64ToBytes;\nexports.base64encode = base64encode;\nexports.base64decode = base64decode;\n\n/*\r\nMIT License\r\n\r\nCopyright (c) 2020 Egor Nepomnyaschih\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n*/\n\n/*\r\n// This constant can also be computed with the following algorithm:\r\nconst base64abc = [],\r\n A = \"A\".charCodeAt(0),\r\n a = \"a\".charCodeAt(0),\r\n n = \"0\".charCodeAt(0);\r\nfor (let i = 0; i < 26; ++i) {\r\n base64abc.push(String.fromCharCode(A + i));\r\n}\r\nfor (let i = 0; i < 26; ++i) {\r\n base64abc.push(String.fromCharCode(a + i));\r\n}\r\nfor (let i = 0; i < 10; ++i) {\r\n base64abc.push(String.fromCharCode(n + i));\r\n}\r\nbase64abc.push(\"+\");\r\nbase64abc.push(\"/\");\r\n*/\nvar base64abc = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"+\", \"/\"];\n/*\r\n// This constant can also be computed with the following algorithm:\r\nconst l = 256, base64codes = new Uint8Array(l);\r\nfor (let i = 0; i < l; ++i) {\r\n base64codes[i] = 255; // invalid character\r\n}\r\nbase64abc.forEach((char, index) => {\r\n base64codes[char.charCodeAt(0)] = index;\r\n});\r\nbase64codes[\"=\".charCodeAt(0)] = 0; // ignored anyway, so we just need to prevent an error\r\n*/\n\nvar base64codes = [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255, 255, 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, 255, 255, 255, 255, 255, 255, 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];\n\nfunction getBase64Code(charCode) {\n if (charCode >= base64codes.length) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n var code = base64codes[charCode];\n\n if (code === 255) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n return code;\n}\n\nfunction bytesToBase64(bytes) {\n var result = '',\n i,\n l = bytes.length;\n\n for (i = 2; i < l; i += 3) {\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4 | bytes[i - 1] >> 4];\n result += base64abc[(bytes[i - 1] & 0x0F) << 2 | bytes[i] >> 6];\n result += base64abc[bytes[i] & 0x3F];\n }\n\n if (i === l + 1) {\n // 1 octet yet to write\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4];\n result += \"==\";\n }\n\n if (i === l) {\n // 2 octets yet to write\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4 | bytes[i - 1] >> 4];\n result += base64abc[(bytes[i - 1] & 0x0F) << 2];\n result += \"=\";\n }\n\n return result;\n}\n\nfunction base64ToBytes(str) {\n if (str.length % 4 !== 0) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n var index = str.indexOf(\"=\");\n\n if (index !== -1 && index < str.length - 2) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n var missingOctets = str.endsWith(\"==\") ? 2 : str.endsWith(\"=\") ? 1 : 0,\n n = str.length,\n result = new Uint8Array(3 * (n / 4)),\n buffer;\n\n for (var i = 0, j = 0; i < n; i += 4, j += 3) {\n buffer = getBase64Code(str.charCodeAt(i)) << 18 | getBase64Code(str.charCodeAt(i + 1)) << 12 | getBase64Code(str.charCodeAt(i + 2)) << 6 | getBase64Code(str.charCodeAt(i + 3));\n result[j] = buffer >> 16;\n result[j + 1] = buffer >> 8 & 0xFF;\n result[j + 2] = buffer & 0xFF;\n }\n\n return result.subarray(0, result.length - missingOctets);\n}\n\nfunction base64encode(str) {\n var encoder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new TextEncoder();\n return bytesToBase64(encoder.encode(str));\n}\n\nfunction base64decode(str) {\n var decoder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new TextDecoder();\n return decoder.decode(base64ToBytes(str));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQXBDLEdBQ0EsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFKLENBQWUsQ0FBQyxHQUFHLENBQW5CLENBQUQsQ0FBYixJQUF3QyxFQUR4QyxHQUVBLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBSixDQUFlLENBQUMsR0FBRyxDQUFuQixDQUFELENBQWIsSUFBd0MsQ0FGeEMsR0FHQSxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQUosQ0FBZSxDQUFDLEdBQUcsQ0FBbkIsQ0FBRCxDQUpkO0FBS0EsSUFBQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksTUFBTSxJQUFJLEVBQXRCO0FBQ0EsSUFBQSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUwsQ0FBTixHQUFpQixNQUFNLElBQUksQ0FBWCxHQUFnQixJQUFoQztBQUNBLElBQUEsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFMLENBQU4sR0FBZ0IsTUFBTSxHQUFHLElBQXpCO0FBQ0E7O0FBQ0QsU0FBTyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsTUFBUCxHQUFnQixhQUFuQyxDQUFQO0FBQ0E7O0FBRUssU0FBVSxZQUFWLENBQXVCLEdBQXZCLEVBQW1IO0FBQUEsTUFBL0UsT0FBK0UsdUVBQWpCLElBQUksV0FBSixFQUFpQjtBQUN4SCxTQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBUixDQUFlLEdBQWYsQ0FBRCxDQUFwQjtBQUNBOztBQUVLLFNBQVUsWUFBVixDQUF1QixHQUF2QixFQUEwRztBQUFBLE1BQXRFLE9BQXNFLHVFQUFqQixJQUFJLFdBQUosRUFBaUI7QUFDL0csU0FBTyxPQUFPLENBQUMsTUFBUixDQUFlLGFBQWEsQ0FBQyxHQUFELENBQTVCLENBQVA7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIDIwMjAgRWdvciBOZXBvbW55YXNjaGloXG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG5jb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG5TT0ZUV0FSRS5cbiovXG5cbi8qXG4vLyBUaGlzIGNvbnN0YW50IGNhbiBhbHNvIGJlIGNvbXB1dGVkIHdpdGggdGhlIGZvbGxvd2luZyBhbGdvcml0aG06XG5jb25zdCBiYXNlNjRhYmMgPSBbXSxcblx0QSA9IFwiQVwiLmNoYXJDb2RlQXQoMCksXG5cdGEgPSBcImFcIi5jaGFyQ29kZUF0KDApLFxuXHRuID0gXCIwXCIuY2hhckNvZGVBdCgwKTtcbmZvciAobGV0IGkgPSAwOyBpIDwgMjY7ICsraSkge1xuXHRiYXNlNjRhYmMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKEEgKyBpKSk7XG59XG5mb3IgKGxldCBpID0gMDsgaSA8IDI2OyArK2kpIHtcblx0YmFzZTY0YWJjLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhICsgaSkpO1xufVxuZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7XG5cdGJhc2U2NGFiYy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobiArIGkpKTtcbn1cbmJhc2U2NGFiYy5wdXNoKFwiK1wiKTtcbmJhc2U2NGFiYy5wdXNoKFwiL1wiKTtcbiovXG5jb25zdCBiYXNlNjRhYmMgPSBbXG5cdFwiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLFxuXHRcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIixcblx0XCJhXCIsIFwiYlwiLCBcImNcIiwgXCJkXCIsIFwiZVwiLCBcImZcIiwgXCJnXCIsIFwiaFwiLCBcImlcIiwgXCJqXCIsIFwia1wiLCBcImxcIiwgXCJtXCIsXG5cdFwiblwiLCBcIm9cIiwgXCJwXCIsIFwicVwiLCBcInJcIiwgXCJzXCIsIFwidFwiLCBcInVcIiwgXCJ2XCIsIFwid1wiLCBcInhcIiwgXCJ5XCIsIFwielwiLFxuXHRcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCIrXCIsIFwiL1wiXG5dO1xuXG4vKlxuLy8gVGhpcyBjb25zdGFudCBjYW4gYWxzbyBiZSBjb21wdXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOlxuY29uc3QgbCA9IDI1NiwgYmFzZTY0Y29kZXMgPSBuZXcgVWludDhBcnJheShsKTtcbmZvciAobGV0IGkgPSAwOyBpIDwgbDsgKytpKSB7XG5cdGJhc2U2NGNvZGVzW2ldID0gMjU1OyAvLyBpbnZhbGlkIGNoYXJhY3RlclxufVxuYmFzZTY0YWJjLmZvckVhY2goKGNoYXIsIGluZGV4KSA9PiB7XG5cdGJhc2U2NGNvZGVzW2NoYXIuY2hhckNvZGVBdCgwKV0gPSBpbmRleDtcbn0pO1xuYmFzZTY0Y29kZXNbXCI9XCIuY2hhckNvZGVBdCgwKV0gPSAwOyAvLyBpZ25vcmVkIGFueXdheSwgc28gd2UganVzdCBuZWVkIHRvIHByZXZlbnQgYW4gZXJyb3JcbiovXG5jb25zdCBiYXNlNjRjb2RlcyA9IFtcblx0MjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LFxuXHQyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsXG5cdDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCA2MiwgMjU1LCAyNTUsIDI1NSwgNjMsXG5cdDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsIDI1NSxcblx0MjU1LCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsXG5cdDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsXG5cdDI1NSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCxcblx0NDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxXG5dO1xuXG5mdW5jdGlvbiBnZXRCYXNlNjRDb2RlKGNoYXJDb2RlOiBudW1iZXIpIHtcblx0aWYgKGNoYXJDb2RlID49IGJhc2U2NGNvZGVzLmxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBwYXJzZSBiYXNlNjQgc3RyaW5nLlwiKTtcblx0fVxuXHRjb25zdCBjb2RlID0gYmFzZTY0Y29kZXNbY2hhckNvZGVdO1xuXHRpZiAoY29kZSA9PT0gMjU1KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHBhcnNlIGJhc2U2NCBzdHJpbmcuXCIpO1xuXHR9XG5cdHJldHVybiBjb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnl0ZXNUb0Jhc2U2NChieXRlczogbnVtYmVyW10gfCBVaW50OEFycmF5KSB7XG5cdGxldCByZXN1bHQgPSAnJywgaSwgbCA9IGJ5dGVzLmxlbmd0aDtcblx0Zm9yIChpID0gMjsgaSA8IGw7IGkgKz0gMykge1xuXHRcdHJlc3VsdCArPSBiYXNlNjRhYmNbYnl0ZXNbaSAtIDJdID4+IDJdO1xuXHRcdHJlc3VsdCArPSBiYXNlNjRhYmNbKChieXRlc1tpIC0gMl0gJiAweDAzKSA8PCA0KSB8IChieXRlc1tpIC0gMV0gPj4gNCldO1xuXHRcdHJlc3VsdCArPSBiYXNlNjRhYmNbKChieXRlc1tpIC0gMV0gJiAweDBGKSA8PCAyKSB8IChieXRlc1tpXSA+PiA2KV07XG5cdFx0cmVzdWx0ICs9IGJhc2U2NGFiY1tieXRlc1tpXSAmIDB4M0ZdO1xuXHR9XG5cdGlmIChpID09PSBsICsgMSkgeyAvLyAxIG9jdGV0IHlldCB0byB3cml0ZVxuXHRcdHJlc3VsdCArPSBiYXNlNjRhYmNbYnl0ZXNbaSAtIDJdID4+IDJdO1xuXHRcdHJlc3VsdCArPSBiYXNlNjRhYmNbKGJ5dGVzW2kgLSAyXSAmIDB4MDMpIDw8IDRdO1xuXHRcdHJlc3VsdCArPSBcIj09XCI7XG5cdH1cblx0aWYgKGkgPT09IGwpIHsgLy8gMiBvY3RldHMgeWV0IHRvIHdyaXRlXG5cdFx0cmVzdWx0ICs9IGJhc2U2NGFiY1tieXRlc1tpIC0gMl0gPj4gMl07XG5cdFx0cmVzdWx0ICs9IGJhc2U2NGFiY1soKGJ5dGVzW2kgLSAyXSAmIDB4MDMpIDw8IDQpIHwgKGJ5dGVzW2kgLSAxXSA+PiA0KV07XG5cdFx0cmVzdWx0ICs9IGJhc2U2NGFiY1soYnl0ZXNbaSAtIDFdICYgMHgwRikgPDwgMl07XG5cdFx0cmVzdWx0ICs9IFwiPVwiO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjRUb0J5dGVzKHN0cjogc3RyaW5nKSB7XG5cdGlmIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBwYXJzZSBiYXNlNjQgc3RyaW5nLlwiKTtcblx0fVxuXHRjb25zdCBpbmRleCA9IHN0ci5pbmRleE9mKFwiPVwiKTtcblx0aWYgKGluZGV4ICE9PSAtMSAmJiBpbmRleCA8IHN0ci5sZW5ndGggLSAyKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHBhcnNlIGJhc2U2NCBzdHJpbmcuXCIpO1xuXHR9XG5cdGxldCBtaXNzaW5nT2N0ZXRzID0gc3RyLmVuZHNXaXRoKFwiPT1cIikgPyAyIDogc3RyLmVuZHNXaXRoKFwiPVwiKSA/IDEgOiAwLFxuXHRcdG4gPSBzdHIubGVuZ3RoLFxuXHRcdHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KDMgKiAobiAvIDQpKSxcblx0XHRidWZmZXI6IG51bWJlcjtcblx0Zm9yIChsZXQgaSA9IDAsIGogPSAwOyBpIDwgbjsgaSArPSA0LCBqICs9IDMpIHtcblx0XHRidWZmZXIgPVxuXHRcdFx0Z2V0QmFzZTY0Q29kZShzdHIuY2hhckNvZGVBdChpKSkgPDwgMTggfFxuXHRcdFx0Z2V0QmFzZTY0Q29kZShzdHIuY2hhckNvZGVBdChpICsgMSkpIDw8IDEyIHxcblx0XHRcdGdldEJhc2U2NENvZGUoc3RyLmNoYXJDb2RlQXQoaSArIDIpKSA8PCA2IHxcblx0XHRcdGdldEJhc2U2NENvZGUoc3RyLmNoYXJDb2RlQXQoaSArIDMpKTtcblx0XHRyZXN1bHRbal0gPSBidWZmZXIgPj4gMTY7XG5cdFx0cmVzdWx0W2ogKyAxXSA9IChidWZmZXIgPj4gOCkgJiAweEZGO1xuXHRcdHJlc3VsdFtqICsgMl0gPSBidWZmZXIgJiAweEZGO1xuXHR9XG5cdHJldHVybiByZXN1bHQuc3ViYXJyYXkoMCwgcmVzdWx0Lmxlbmd0aCAtIG1pc3NpbmdPY3RldHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0ZW5jb2RlKHN0cjogc3RyaW5nLCBlbmNvZGVyOiB7IGVuY29kZTogKHN0cjogc3RyaW5nKSA9PiBVaW50OEFycmF5IHwgbnVtYmVyW10gfSA9IG5ldyBUZXh0RW5jb2RlcigpKSB7XG5cdHJldHVybiBieXRlc1RvQmFzZTY0KGVuY29kZXIuZW5jb2RlKHN0cikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0ZGVjb2RlKHN0cjogc3RyaW5nLCBkZWNvZGVyOiB7IGRlY29kZTogKGJ5dGVzOiBVaW50OEFycmF5KSA9PiBzdHJpbmcgfSA9IG5ldyBUZXh0RGVjb2RlcigpKSB7XG5cdHJldHVybiBkZWNvZGVyLmRlY29kZShiYXNlNjRUb0J5dGVzKHN0cikpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var WORD = /[\\w$]+/, RANGE = 500;\n\n CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n var word = options && options.word || WORD;\n var range = options && options.range || RANGE;\n var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n var end = cur.ch, start = end;\n while (start && word.test(curLine.charAt(start - 1))) --start;\n var curWord = start != end && curLine.slice(start, end);\n\n var list = options && options.list || [], seen = {};\n var re = new RegExp(word.source, \"g\");\n for (var dir = -1; dir <= 1; dir += 2) {\n var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n for (; line != endLine; line += dir) {\n var text = editor.getLine(line), m;\n while (m = re.exec(text)) {\n if (line == cur.line && m[0] === curWord) continue;\n if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n seen[m[0]] = true;\n list.push(m[0]);\n }\n }\n }\n }\n return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = Math.max(pos.left - overlapX - offsetLeft, 0)) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../mode/sql/sql\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../mode/sql/sql\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var tables;\n var defaultTable;\n var keywords;\n var identifierQuote;\n var CONS = {\n QUERY_DIV: \";\",\n ALIAS_KEYWORD: \"AS\"\n };\n var Pos = CodeMirror.Pos, cmpPos = CodeMirror.cmpPos;\n\n function isArray(val) { return Object.prototype.toString.call(val) == \"[object Array]\" }\n\n function getKeywords(editor) {\n var mode = editor.doc.modeOption;\n if (mode === \"sql\") mode = \"text/x-sql\";\n return CodeMirror.resolveMode(mode).keywords;\n }\n\n function getIdentifierQuote(editor) {\n var mode = editor.doc.modeOption;\n if (mode === \"sql\") mode = \"text/x-sql\";\n return CodeMirror.resolveMode(mode).identifierQuote || \"`\";\n }\n\n function getText(item) {\n return typeof item == \"string\" ? item : item.text;\n }\n\n function wrapTable(name, value) {\n if (isArray(value)) value = {columns: value}\n if (!value.text) value.text = name\n return value\n }\n\n function parseTables(input) {\n var result = {}\n if (isArray(input)) {\n for (var i = input.length - 1; i >= 0; i--) {\n var item = input[i]\n result[getText(item).toUpperCase()] = wrapTable(getText(item), item)\n }\n } else if (input) {\n for (var name in input)\n result[name.toUpperCase()] = wrapTable(name, input[name])\n }\n return result\n }\n\n function getTable(name) {\n return tables[name.toUpperCase()]\n }\n\n function shallowClone(object) {\n var result = {};\n for (var key in object) if (object.hasOwnProperty(key))\n result[key] = object[key];\n return result;\n }\n\n function match(string, word) {\n var len = string.length;\n var sub = getText(word).substr(0, len);\n return string.toUpperCase() === sub.toUpperCase();\n }\n\n function addMatches(result, search, wordlist, formatter) {\n if (isArray(wordlist)) {\n for (var i = 0; i < wordlist.length; i++)\n if (match(search, wordlist[i])) result.push(formatter(wordlist[i]))\n } else {\n for (var word in wordlist) if (wordlist.hasOwnProperty(word)) {\n var val = wordlist[word]\n if (!val || val === true)\n val = word\n else\n val = val.displayText ? {text: val.text, displayText: val.displayText} : val.text\n if (match(search, val)) result.push(formatter(val))\n }\n }\n }\n\n function cleanName(name) {\n // Get rid name from identifierQuote and preceding dot(.)\n if (name.charAt(0) == \".\") {\n name = name.substr(1);\n }\n // replace duplicated identifierQuotes with single identifierQuotes\n // and remove single identifierQuotes\n var nameParts = name.split(identifierQuote+identifierQuote);\n for (var i = 0; i < nameParts.length; i++)\n nameParts[i] = nameParts[i].replace(new RegExp(identifierQuote,\"g\"), \"\");\n return nameParts.join(identifierQuote);\n }\n\n function insertIdentifierQuotes(name) {\n var nameParts = getText(name).split(\".\");\n for (var i = 0; i < nameParts.length; i++)\n nameParts[i] = identifierQuote +\n // duplicate identifierQuotes\n nameParts[i].replace(new RegExp(identifierQuote,\"g\"), identifierQuote+identifierQuote) +\n identifierQuote;\n var escaped = nameParts.join(\".\");\n if (typeof name == \"string\") return escaped;\n name = shallowClone(name);\n name.text = escaped;\n return name;\n }\n\n function nameCompletion(cur, token, result, editor) {\n // Try to complete table, column names and return start position of completion\n var useIdentifierQuotes = false;\n var nameParts = [];\n var start = token.start;\n var cont = true;\n while (cont) {\n cont = (token.string.charAt(0) == \".\");\n useIdentifierQuotes = useIdentifierQuotes || (token.string.charAt(0) == identifierQuote);\n\n start = token.start;\n nameParts.unshift(cleanName(token.string));\n\n token = editor.getTokenAt(Pos(cur.line, token.start));\n if (token.string == \".\") {\n cont = true;\n token = editor.getTokenAt(Pos(cur.line, token.start));\n }\n }\n\n // Try to complete table names\n var string = nameParts.join(\".\");\n addMatches(result, string, tables, function(w) {\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n\n // Try to complete columns from defaultTable\n addMatches(result, string, defaultTable, function(w) {\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n\n // Try to complete columns\n string = nameParts.pop();\n var table = nameParts.join(\".\");\n\n var alias = false;\n var aliasTable = table;\n // Check if table is available. If not, find table by Alias\n if (!getTable(table)) {\n var oldTable = table;\n table = findTableByAlias(table, editor);\n if (table !== oldTable) alias = true;\n }\n\n var columns = getTable(table);\n if (columns && columns.columns)\n columns = columns.columns;\n\n if (columns) {\n addMatches(result, string, columns, function(w) {\n var tableInsert = table;\n if (alias == true) tableInsert = aliasTable;\n if (typeof w == \"string\") {\n w = tableInsert + \".\" + w;\n } else {\n w = shallowClone(w);\n w.text = tableInsert + \".\" + w.text;\n }\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n }\n\n return start;\n }\n\n function eachWord(lineText, f) {\n var words = lineText.split(/\\s+/)\n for (var i = 0; i < words.length; i++)\n if (words[i]) f(words[i].replace(/[`,;]/g, ''))\n }\n\n function findTableByAlias(alias, editor) {\n var doc = editor.doc;\n var fullQuery = doc.getValue();\n var aliasUpperCase = alias.toUpperCase();\n var previousWord = \"\";\n var table = \"\";\n var separator = [];\n var validRange = {\n start: Pos(0, 0),\n end: Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).length)\n };\n\n //add separator\n var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);\n while(indexOfSeparator != -1) {\n separator.push(doc.posFromIndex(indexOfSeparator));\n indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV, indexOfSeparator+1);\n }\n separator.unshift(Pos(0, 0));\n separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length));\n\n //find valid range\n var prevItem = null;\n var current = editor.getCursor()\n for (var i = 0; i < separator.length; i++) {\n if ((prevItem == null || cmpPos(current, prevItem) > 0) && cmpPos(current, separator[i]) <= 0) {\n validRange = {start: prevItem, end: separator[i]};\n break;\n }\n prevItem = separator[i];\n }\n\n if (validRange.start) {\n var query = doc.getRange(validRange.start, validRange.end, false);\n\n for (var i = 0; i < query.length; i++) {\n var lineText = query[i];\n eachWord(lineText, function(word) {\n var wordUpperCase = word.toUpperCase();\n if (wordUpperCase === aliasUpperCase && getTable(previousWord))\n table = previousWord;\n if (wordUpperCase !== CONS.ALIAS_KEYWORD)\n previousWord = word;\n });\n if (table) break;\n }\n }\n return table;\n }\n\n CodeMirror.registerHelper(\"hint\", \"sql\", function(editor, options) {\n tables = parseTables(options && options.tables)\n var defaultTableName = options && options.defaultTable;\n var disableKeywords = options && options.disableKeywords;\n defaultTable = defaultTableName && getTable(defaultTableName);\n keywords = getKeywords(editor);\n identifierQuote = getIdentifierQuote(editor);\n\n if (defaultTableName && !defaultTable)\n defaultTable = findTableByAlias(defaultTableName, editor);\n\n defaultTable = defaultTable || [];\n\n if (defaultTable.columns)\n defaultTable = defaultTable.columns;\n\n var cur = editor.getCursor();\n var result = [];\n var token = editor.getTokenAt(cur), start, end, search;\n if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n\n if (token.string.match(/^[.`\"'\\w@][\\w$#]*$/g)) {\n search = token.string;\n start = token.start;\n end = token.end;\n } else {\n start = end = cur.ch;\n search = \"\";\n }\n if (search.charAt(0) == \".\" || search.charAt(0) == identifierQuote) {\n start = nameCompletion(cur, token, result, editor);\n } else {\n var objectOrClass = function(w, className) {\n if (typeof w === \"object\") {\n w.className = className;\n } else {\n w = { text: w, className: className };\n }\n return w;\n };\n addMatches(result, search, defaultTable, function(w) {\n return objectOrClass(w, \"CodeMirror-hint-table CodeMirror-hint-default-table\");\n });\n addMatches(\n result,\n search,\n tables, function(w) {\n return objectOrClass(w, \"CodeMirror-hint-table\");\n }\n );\n if (!disableKeywords)\n addMatches(result, search, keywords, function(w) {\n return objectOrClass(w.toUpperCase(), \"CodeMirror-hint-keyword\");\n });\n }\n\n return {list: result, from: Pos(cur.line, start), to: Pos(cur.line, end)};\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\\\s*\" + tagName + \"\\\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","var json = typeof JSON !== 'undefined' ? JSON : require('jsonify');\n\nmodule.exports = function (obj, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var space = opts.space || '';\n if (typeof space === 'number') space = Array(space+1).join(' ');\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n var replacer = opts.replacer || function(key, value) { return value; };\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (parent, key, node, level) {\n var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node);\n }\n if (isArray(node)) {\n var out = [];\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level+1) || json.stringify(null);\n out.push(indent + space + item);\n }\n return '[' + out.join(',') + indent + ']';\n }\n else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n else seen.push(node);\n\n var keys = objectKeys(node).sort(cmp && cmp(node));\n var out = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node, key, node[key], level+1);\n\n if(!value) continue;\n\n var keyValue = json.stringify(key)\n + colonSeparator\n + value;\n ;\n out.push(indent + space + keyValue);\n }\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }\n })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n var has = Object.prototype.hasOwnProperty || function () { return true };\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","function stringify (obj, options) {\n options = options || {}\n var indent = JSON.stringify([1], null, get(options, 'indent', 2)).slice(2, -3)\n var addMargin = get(options, 'margins', false)\n var maxLength = (indent === '' ? Infinity : get(options, 'maxLength', 80))\n\n return (function _stringify (obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === 'function') {\n obj = obj.toJSON()\n }\n\n var string = JSON.stringify(obj)\n\n if (string === undefined) {\n return string\n }\n\n var length = maxLength - currentIndent.length - reserved\n\n if (string.length <= length) {\n var prettified = prettify(string, addMargin)\n if (prettified.length <= length) {\n return prettified\n }\n }\n\n if (typeof obj === 'object' && obj !== null) {\n var nextIndent = currentIndent + indent\n var items = []\n var delimiters\n var comma = function (array, index) {\n return (index === array.length - 1 ? 0 : 1)\n }\n\n if (Array.isArray(obj)) {\n for (var index = 0; index < obj.length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, comma(obj, index)) || 'null'\n )\n }\n delimiters = '[]'\n } else {\n Object.keys(obj).forEach(function (key, index, array) {\n var keyPart = JSON.stringify(key) + ': '\n var value = _stringify(obj[key], nextIndent,\n keyPart.length + comma(array, index))\n if (value !== undefined) {\n items.push(keyPart + value)\n }\n })\n delimiters = '{}'\n }\n\n if (items.length > 0) {\n return [\n delimiters[0],\n indent + items.join(',\\n' + nextIndent),\n delimiters[1]\n ].join('\\n' + currentIndent)\n }\n }\n\n return string\n }(obj, '', 0))\n}\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,\\][}{]/g\n\nfunction prettify (string, addMargin) {\n var m = addMargin ? ' ' : ''\n var tokens = {\n '{': '{' + m,\n '[': '[' + m,\n '}': m + '}',\n ']': m + ']',\n ',': ', ',\n ':': ': '\n }\n return string.replace(stringOrChar, function (match, string) {\n return string ? match : tokens[match]\n })\n}\n\nfunction get (options, name, defaultValue) {\n return (name in options ? options[name] : defaultValue)\n}\n\nmodule.exports = stringify\n","exports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n","var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n // Call error when something is wrong.\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n \n next = function (c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n \n // Get the next character. When there are no more characters,\n // return the empty string.\n \n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n \n number = function () {\n // Parse a number value.\n var number,\n string = '';\n \n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n \n string = function () {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n \n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n// Skip whitespace.\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n// true, false, or null.\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n// Parse an array value.\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n// Parse an object value.\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\nvalue = function () {\n\n// Parse a JSON value. It could be an object, an array, a string, a number,\n// or a word.\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n};\n\n// Return the json_parse function. It will have access to all of the above\n// functions and variables.\n\nmodule.exports = function (source, reviver) {\n var result;\n \n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n // If there is a reviver function, we recursively walk the new structure,\n // passing each name/value pair to the reviver function for possible\n // transformation, starting with a temporary root object that holds the result\n // in an empty key. If there is not a reviver function, we simply return the\n // result.\n\n return typeof reviver === 'function' ? (function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '')) : result;\n};\n","var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\nfunction quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n \n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n // Produce a string from holder[key].\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n \n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n \n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n \n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n \n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n \n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n \n case 'object':\n if (!value) return 'null';\n gap += indent;\n partial = [];\n \n // Array.isArray\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n \n // Join all of the elements together, separated with commas, and\n // wrap them in brackets.\n v = partial.length === 0 ? '[]' : gap ?\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n \n // If the replacer is an array, use it to select the members to be\n // stringified.\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n k = rep[i];\n if (typeof k === 'string') {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n \n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n v = partial.length === 0 ? '{}' : gap ?\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\nmodule.exports = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n \n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n }\n // If the space parameter is a string, it will be used as the indent string.\n else if (typeof space === 'string') {\n indent = space;\n }\n\n // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n rep = replacer;\n if (replacer && typeof replacer !== 'function'\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n \n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {'': value});\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {identity} from 'vega-util';\n\nexport default function UniqueList(idFunc) {\n var $ = idFunc || identity,\n list = [],\n ids = {};\n\n list.add = function(_) {\n var id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n\n list.remove = function(_) {\n var id = $(_), idx;\n if (ids[id]) {\n ids[id] = 0;\n if ((idx = list.indexOf(_)) >= 0) {\n list.splice(idx, 1);\n }\n }\n return list;\n };\n\n return list;\n}\n","var TUPLE_ID_KEY = Symbol('vega_id'),\n TUPLE_ID = 1;\n\n/**\n * Resets the internal tuple id counter to one.\n */\nexport function reset() {\n TUPLE_ID = 1;\n}\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nexport function isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nexport function tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nexport function ingest(datum) {\n var t = (datum === Object(datum)) ? datum : {data: datum};\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nexport function derive(t) {\n return rederive(t, ingest({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nexport function rederive(t, d) {\n for (var k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nexport function replace(t, d) {\n return setid(d, tupleid(t));\n}\n","import {ingest, tupleid} from './Tuple';\nimport {array, constant, isFunction} from 'vega-util';\n\nexport function isChangeSet(v) {\n return v && v.constructor === changeset;\n}\n\nexport default function changeset() {\n var add = [], // insert tuples\n rem = [], // remove tuples\n mod = [], // modify tuples\n remp = [], // remove by predicate\n modp = [], // modify by predicate\n reflow = false;\n\n return {\n constructor: changeset,\n insert: function(t) {\n var d = array(t), i = 0, n = d.length;\n for (; i 0) {\n modify(t, f, m.value);\n pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i=0, n=modp.length; i 0) {\n modify(t, m.field, m.value);\n }\n });\n pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (reflow) {\n pulse.mod = rem.length || remp.length\n ? tuples.filter(function(t) { return cur[tupleid(t)] > 0; })\n : tuples.slice();\n } else {\n for (id in out) pulse.mod.push(out[id]);\n }\n\n return pulse;\n }\n };\n}\n","import {isArray} from 'vega-util';\n\nvar CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nexport default function Parameters() {\n Object.defineProperty(this, CACHE, {writable: true, value: {}});\n}\n\nvar prototype = Parameters.prototype;\n\n/**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\nprototype.set = function(name, index, value, force) {\n var o = this,\n v = o[name],\n mod = o[CACHE];\n\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n\n return o;\n};\n\n/**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\nprototype.modified = function(name, index) {\n var mod = this[CACHE], k;\n if (!arguments.length) {\n for (k in mod) { if (mod[k]) return true; }\n return false;\n } else if (isArray(name)) {\n for (k=0; k= 0)\n ? (index + 1 < mod[name] || !!mod[index + ':' + name])\n : !!mod[name];\n};\n\n/**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\nprototype.clear = function() {\n this[CACHE] = {};\n return this;\n};\n","import Parameters from './Parameters';\nimport UniqueList from './util/UniqueList';\nimport {array, error, id, isArray} from 'vega-util';\n\nvar OP_ID = 0;\nvar PULSE = 'pulse';\nvar NO_PARAMS = new Parameters();\n\n// Boolean Flags\nvar SKIP = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nexport default function Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\n\nvar prototype = Operator.prototype;\n\n/**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\nprototype.targets = function() {\n return this._targets || (this._targets = UniqueList(id));\n};\n\n/**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\nprototype.set = function(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n};\n\nfunction flag(bit) {\n return function(state) {\n var f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? (f | bit) : (f & ~bit);\n return this;\n };\n}\n\n/**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\nprototype.skip = flag(SKIP);\n\n/**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\nprototype.modified = flag(MODIFIED);\n\n/**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initiatal evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\nprototype.parameters = function(params, react, initonly) {\n react = react !== false;\n var self = this,\n argval = (self._argval = self._argval || new Parameters()),\n argops = (self._argops = self._argops || []),\n deps = [],\n name, value, n, i;\n\n function add(name, index, value) {\n if (value instanceof Operator) {\n if (value !== self) {\n if (react) value.targets().add(self);\n deps.push(value);\n }\n argops.push({op:value, name:name, index:index});\n } else {\n argval.set(name, index, value);\n }\n }\n\n for (name in params) {\n value = params[name];\n\n if (name === PULSE) {\n array(value).forEach(function(op) {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== self) {\n op.targets().add(self);\n deps.push(op);\n }\n });\n self.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i=0; i pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n};\n\nprototype.debounce = function(delay) {\n var s = stream();\n\n this.targets().add(stream(null, null,\n debounce(delay, function(e) {\n var df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })\n ));\n\n return s;\n};\n\nprototype.between = function(a, b) {\n var active = false;\n a.targets().add(stream(null, null, function() { active = true; }));\n b.targets().add(stream(null, null, function() { active = false; }));\n return this.filter(function() { return active; });\n};\n","import {extend, isFunction, stringValue} from 'vega-util';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nvar protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Special treatment in node.js for the file: protocol\nvar fileProtocol = 'file://';\n\n/**\n * Creates a new loader instance that provides methods for requesting files\n * from either the network or disk, and for sanitizing request URIs.\n * @param {object} [options] - Optional default loading options to use.\n * @return {object} - A new loader instance.\n */\nexport default function(options) {\n return {\n options: options || {},\n sanitize: sanitize,\n load: load,\n file: file,\n http: http\n };\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nfunction load(uri, options) {\n var loader = this;\n return loader.sanitize(uri, options)\n .then(function(opt) {\n var url = opt.href;\n return opt.localFile\n ? loader.file(url)\n : loader.http(url, options);\n });\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nfunction sanitize(uri, options) {\n options = extend({}, this.options, options);\n\n return new Promise(function(accept, reject) {\n var result = {href: null},\n isFile, hasProtocol, loadFile, base;\n\n if (uri == null || typeof uri !== 'string') {\n reject('Sanitize failure, invalid URI: ' + stringValue(uri));\n return;\n }\n\n hasProtocol = protocol_re.test(uri);\n\n // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!startsWith(uri, '/') && base[base.length-1] !== '/') {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = startsWith(uri, fileProtocol))\n || options.mode === 'file'\n || options.mode !== 'http' && !hasProtocol && fs();\n\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (startsWith(uri, '//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // return\n accept(result);\n });\n}\n\n/**\n * HTTP request loader.\n * @param {string} url - The url to request.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to the file contents.\n */\nfunction http(url, options) {\n return request(url, extend({}, this.options.http, options))\n .then(function(response) {\n if (!response.ok) throw response.status + '' + response.statusText;\n return response.text();\n });\n}\n\n/**\n * File system loader.\n * @param {string} filename - The file system path to load.\n * @return {Promise} - A promise that resolves to the file contents.\n */\nfunction file(filename) {\n return new Promise(function(accept, reject) {\n var f = fs();\n f ? f.readFile(filename, function(error, data) {\n if (error) reject(error);\n else accept(data);\n })\n : reject('No file system access for ' + filename);\n });\n}\n\nfunction request(url, init) {\n var f = typeof fetch === 'function' ? fetch : require('node-fetch');\n return f ? f(url, init) : Promise.reject('No fetch method available.');\n}\n\nfunction fs() {\n var fs = typeof require === 'function' && require('fs');\n return fs && isFunction(fs.readFile) ? fs : null;\n}\n\nfunction startsWith(string, query) {\n return string == null ? false : string.lastIndexOf(query, 0) === 0;\n}\n","import {identity, toBoolean, toDate, toNumber, toString} from 'vega-util';\n\nexport var typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\n\nvar typeTests = [\n isBoolean,\n isInteger,\n isNumber,\n isDate\n];\n\nvar typeList = [\n 'boolean',\n 'integer',\n 'number',\n 'date'\n];\n\nexport function inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n\n var value, i, j, t = 0,\n n = values.length,\n m = typeTests.length,\n a = typeTests.map(function(_, i) { return i + 1; });\n\n for (i=0, n=values.length; i 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import {dsvFormat} from 'd3-dsv';\nimport {extend, stringValue} from 'vega-util';\n\nexport function delimitedFormat(delimiter) {\n return function(data, format) {\n var delim = {delimiter: delimiter};\n return dsv(data, format ? extend(format, delim) : delim);\n };\n}\n\nexport default function dsv(data, format) {\n if (format.header) {\n data = format.header\n .map(stringValue)\n .join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data+'');\n}\n","import {field, identity, isFunction, isObject} from 'vega-util';\n\nfunction isBuffer(_) {\n return (typeof Buffer === 'function' && isFunction(Buffer.isBuffer))\n ? Buffer.isBuffer(_) : false;\n}\n\nexport default function(data, format) {\n var prop = (format && format.property) ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data)\n ? parseJSON(prop(data))\n : prop(JSON.parse(data));\n}\n\nfunction parseJSON(data, format) {\n return (format && format.copy)\n ? JSON.parse(JSON.stringify(data))\n : data;\n}\n","export default function(x) {\n return x;\n}\n","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n if (typeof o === \"string\") o = topology.objects[o];\n return o.type === \"GeometryCollection\"\n ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n return transformPoint(p);\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var type = o.type, coordinates;\n switch (type) {\n case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n case \"Point\": coordinates = point(o.coordinates); break;\n case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n case \"LineString\": coordinates = line(o.arcs); break;\n case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n case \"Polygon\": coordinates = polygon(o.arcs); break;\n case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n default: return null;\n }\n return {type: type, coordinates: coordinates};\n }\n\n return geometry(o);\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2, n = input.length, output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}\n","export default function(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","export default function(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nexport default function(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n case \"LineString\": extract1(o.arcs); break;\n case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n case \"MultiPolygon\": extract3(o.arcs); break;\n }\n }\n\n geometry(object);\n\n geomsByArc.forEach(filter == null\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n return arcs;\n}\n","import {default as dsv, delimitedFormat} from './dsv';\nimport json from './json';\nimport topojson from './topojson';\n\nexport var format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\n\nexport function formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return format.hasOwnProperty(name) ? format[name] : null;\n }\n}\n","import json from './json';\nimport {feature, mesh} from 'topojson-client';\nimport {error} from 'vega-util';\n\nexport default function(data, format) {\n var method, object, property;\n data = json(data, format);\n\n method = (format && (property = format.feature)) ? feature\n : (format && (property = format.mesh)) ? mesh\n : error('Missing TopoJSON feature or mesh parameter.');\n\n object = (object = data.objects[property])\n ? method(data, object)\n : error('Invalid TopoJSON object: ' + property);\n\n return object && object.features || [object];\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {inferTypes, typeParsers} from './type';\nimport {formats} from './formats/index';\nimport {error} from 'vega-util';\nimport {timeParse, utcParse} from 'd3-time-format';\n\nexport default function(data, schema, dateParse) {\n schema = schema || {};\n\n var reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, dateParse);\n\n if (data.hasOwnProperty('columns')) delete data.columns;\n return data;\n}\n\nfunction parse(data, types, dateParse) {\n if (!data.length) return; // early exit for empty data\n\n dateParse = dateParse || timeParse;\n\n var fields = data.columns || Object.keys(data[0]),\n parsers, datum, field, i, j, n, m;\n\n if (types === 'auto') types = inferTypes(data, fields);\n\n fields = Object.keys(types);\n parsers = fields.map(function(field) {\n var type = types[field],\n parts, pattern;\n\n if (type && (type.indexOf('date:') === 0 || type.indexOf('utc:') === 0)) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n\n if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n (pattern[0] === '\"' && pattern[pattern.length-1] === '\"')) {\n pattern = pattern.slice(1, -1);\n }\n\n return parts[0] === 'utc' ? utcParse(pattern) : dateParse(pattern);\n }\n\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n\n return typeParsers[type];\n });\n\n for (i=0, n=data.length, m=fields.length; i} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\nprototype.modifies = function(_) {\n var fields = array(_),\n hash = this.fields || (this.fields = {});\n fields.forEach(function(f) { hash[f] = true; });\n return this;\n};\n\n/**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array} _ - The field(s) to check for modified.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\nprototype.modified = function(_) {\n var fields = this.fields;\n return !(this.mod.length && fields) ? false\n : !arguments.length ? !!fields\n : isArray(_) ? _.some(function(f) { return fields[f]; })\n : fields[_];\n};\n\n/**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.filter = function(flags, filter) {\n var p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, filter);\n if (flags & REM) p.remF = addFilter(p.remF, filter);\n if (flags & MOD) p.modF = addFilter(p.modF, filter);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n return p;\n};\n\nfunction addFilter(a, b) {\n return a ? function(t,i) { return a(t,i) && b(t,i); } : b;\n}\n\n/**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.materialize = function(flags) {\n flags = flags || ALL;\n var p = this;\n if ((flags & ADD) && p.addF) {\n p.add = materialize(p.add, p.addF);\n p.addF = null;\n }\n if ((flags & REM) && p.remF) {\n p.rem = materialize(p.rem, p.remF);\n p.remF = null;\n }\n if ((flags & MOD) && p.modF) {\n p.mod = materialize(p.mod, p.modF);\n p.modF = null;\n }\n if ((flags & SOURCE) && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n};\n\nfunction materialize(data, filter) {\n var out = [];\n visitArray(data, filter, function(_) { out.push(_); });\n return out;\n}\n\nfunction filter(pulse, flags) {\n var map = {};\n pulse.visit(flags, function(t) { map[tupleid(t)] = 1; });\n return function(t) { return map[tupleid(t)] ? null : t; };\n}\n\n/**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\nprototype.visit = function(flags, visitor) {\n var p = this, v = visitor, src, sum;\n\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD) visitArray(p.mod, p.modF, v);\n\n if ((flags & REFLOW) && (src = p.source)) {\n sum = p.add.length + p.mod.length;\n if (sum === src.length) {\n // do nothing\n } else if (sum) {\n visitArray(src, filter(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n\n return p;\n};\n","import Pulse from './Pulse';\nimport {error, inherits, isArray} from 'vega-util';\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array} pulses - The sub-pulses for this multi-pulse.\n */\nexport default function MultiPulse(dataflow, stamp, pulses, encode) {\n var p = this,\n c = 0,\n pulse, hash, i, n, f;\n\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n\n for (i=0, n=pulses.length; i= Info) {\n dt = Date.now();\n df.debug('-- START PROPAGATION (' + df._clock + ') -----');\n }\n\n // initialize queue, reset touched operators\n df._touched.forEach(function(op) { df._enqueue(op, true); });\n df._touched = UniqueList(id);\n\n try {\n while (df._heap.size() > 0) {\n op = df._heap.pop();\n\n // re-queue if rank changes\n if (op.rank !== op.qrank) { df._enqueue(op, true); continue; }\n\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n\n if (level >= Debug) {\n df.debug(op.id, next === StopPropagation ? 'STOP' : next, op);\n }\n\n // propagate the pulse\n if (next !== StopPropagation) {\n df._pulse = next;\n if (op._targets) op._targets.forEach(function(op) { df._enqueue(op); });\n }\n\n // increment visit counter\n ++count;\n }\n } catch (err) {\n error = err;\n }\n\n // reset pulse map\n df._pulses = {};\n df._pulse = null;\n\n if (level >= Info) {\n dt = Date.now() - dt;\n df.info('> Pulse ' + df._clock + ': ' + count + ' operators; ' + dt + 'ms');\n }\n\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n if (df._onrun) {\n try { df._onrun(df, count, error); } catch (err) { df.error(err); }\n }\n\n // invoke callbacks queued via runAfter\n if (df._postrun.length) {\n var postrun = df._postrun;\n df._postrun = [];\n postrun\n .sort(function(a, b) { return b.priority - a.priority; })\n .forEach(function(_) { invokeCallback(df, _.callback); });\n }\n\n return this;\n}\n\nfunction invokeCallback(df, callback) {\n try { callback(df); } catch (err) { df.error(err); }\n}\n\n/**\n * Runs the dataflow and returns a Promise that resolves when the\n * propagation cycle completes. The standard run method may exit early\n * if there are pending data loading operations. In contrast, this\n * method returns a Promise to allow callers to receive notification\n * when dataflow evaluation completes.\n * @return {Promise} - A promise that resolves to this dataflow.\n */\nexport function runAsync() {\n // return this._pending || Promise.resolve(this.run());\n return this._pending\n || (this.run() && this._pending)\n || Promise.resolve(this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n */\nexport function runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n invokeCallback(this, callback);\n }\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nexport function enqueue(op, force) {\n var p = !this._pulses[op.id];\n if (p) this._pulses[op.id] = this._pulse;\n if (p || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nexport function getPulse(op, encode) {\n var s = op.source,\n stamp = this._clock,\n p;\n\n if (s && isArray(s)) {\n p = s.map(function(_) { return _.pulse; });\n return new MultiPulse(this, stamp, p, encode);\n }\n\n p = this._pulses[op.id];\n if (s) {\n s = s.pulse;\n if (!s || s === StopPropagation) {\n p.source = [];\n } else if (s.stamp === stamp && p.target !== op) {\n p = s;\n } else {\n p.source = s.source;\n }\n }\n\n return p;\n}\n","import Pulse from '../Pulse';\n\nvar NO_OPT = {skip: false, force: false};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function touch(op, options) {\n var opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function update(op, value, options) {\n var opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nexport function pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n\n var p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._pulses[op.id] = changeset.pulse(p, t);\n\n return this;\n}\n","export default function Heap(comparator) {\n this.cmp = comparator;\n this.nodes = [];\n}\n\nvar prototype = Heap.prototype;\n\nprototype.size = function() {\n return this.nodes.length;\n};\n\nprototype.clear = function() {\n this.nodes = [];\n return this;\n};\n\nprototype.peek = function() {\n return this.nodes[0];\n};\n\nprototype.push = function(x) {\n var array = this.nodes;\n array.push(x);\n return siftdown(array, 0, array.length-1, this.cmp);\n};\n\nprototype.pop = function() {\n var array = this.nodes,\n last = array.pop(),\n item;\n\n if (array.length) {\n item = array[0];\n array[0] = last;\n siftup(array, 0, this.cmp);\n } else {\n item = last;\n }\n return item;\n};\n\nprototype.replace = function(item) {\n var array = this.nodes,\n retval = array[0];\n array[0] = item;\n siftup(array, 0, this.cmp);\n return retval;\n};\n\nprototype.pushpop = function(item) {\n var array = this.nodes, ref = array[0];\n if (array.length && this.cmp(ref, item) < 0) {\n array[0] = item;\n item = ref;\n siftup(array, 0, this.cmp);\n }\n return item;\n};\n\nfunction siftdown(array, start, idx, cmp) {\n var item, parent, pidx;\n\n item = array[idx];\n while (idx > start) {\n pidx = (idx - 1) >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return (array[idx] = item);\n}\n\nfunction siftup(array, idx, cmp) {\n var start = idx,\n end = array.length,\n item = array[idx],\n cidx = 2 * idx + 1, ridx;\n\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = 2 * idx + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n","import add from './add';\nimport connect from './connect';\nimport events from './events';\nimport {ingest, request} from './load';\nimport on from './on';\nimport {rank, rerank} from './rank';\nimport {run, runAsync, runAfter, enqueue, getPulse} from './run';\nimport {pulse, touch, update} from './update';\nimport changeset from '../ChangeSet';\nimport Heap from '../util/Heap';\nimport UniqueList from '../util/UniqueList';\nimport {loader} from 'vega-loader';\nimport {id, logger, Error} from 'vega-util';\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nexport default function Dataflow() {\n this._log = logger();\n this.logLevel(Error);\n\n this._clock = 0;\n this._rank = 0;\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n\n this._touched = UniqueList(id);\n this._pulses = {};\n this._pulse = null;\n\n this._heap = new Heap(function(a, b) { return a.qrank - b.qrank; });\n this._postrun = [];\n}\n\nvar prototype = Dataflow.prototype;\n\n/**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\nprototype.stamp = function() {\n return this._clock;\n};\n\n/**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\nprototype.loader = function(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n};\n\n/**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\nprototype.cleanThreshold = 1e4;\n\n// OPERATOR REGISTRATION\nprototype.add = add;\nprototype.connect = connect;\nprototype.rank = rank;\nprototype.rerank = rerank;\n\n// OPERATOR UPDATES\nprototype.pulse = pulse;\nprototype.touch = touch;\nprototype.update = update;\nprototype.changeset = changeset;\n\n// DATA LOADING\nprototype.ingest = ingest;\nprototype.request = request;\n\n// EVENT HANDLING\nprototype.events = events;\nprototype.on = on;\n\n// PULSE PROPAGATION\nprototype.run = run;\nprototype.runAsync = runAsync;\nprototype.runAfter = runAfter;\nprototype._enqueue = enqueue;\nprototype._getPulse = getPulse;\n\n// LOGGING AND ERROR HANDLING\n\nfunction logMethod(method) {\n return function() {\n return this._log[method].apply(this, arguments);\n };\n}\n\n/**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\nprototype.error = logMethod('error');\n\n/**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\nprototype.warn = logMethod('warn');\n\n/**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\nprototype.info = logMethod('info');\n\n/**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\nprototype.debug = logMethod('debug');\n\n/**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\nprototype.logLevel = logMethod('level');\n","import Operator from './Operator';\nimport {inherits} from 'vega-util';\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nexport default function Transform(init, params) {\n Operator.call(this, init, null, params);\n}\n\nvar prototype = inherits(Transform, Operator);\n\n/**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\nprototype.run = function(pulse) {\n if (pulse.stamp <= this.stamp) return pulse.StopPropagation;\n\n var rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n\n if (rv !== pulse.StopPropagation) this.pulse = rv;\n this.stamp = pulse.stamp;\n\n return rv;\n};\n\n/**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\nprototype.evaluate = function(pulse) {\n var params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n};\n\n/**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\nprototype.transform = function() {};\n","import Operator from '../Operator';\nimport {isFunction} from 'vega-util';\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nexport default function(init, update, params, react) {\n var shift = 1,\n op;\n\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n\n return op;\n}\n","/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array} - The source operators that should propagate\n * to the target operator.\n */\nexport default function(target, sources) {\n var targetRank = target.rank, i, n;\n\n for (i=0, n=sources.length; i= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n","import {read} from 'vega-loader';\nimport {truthy} from 'vega-util';\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nexport function ingest(target, data, format) {\n return this.pulse(target, this.changeset().insert(read(data, format)));\n}\n\nfunction loadPending(df) {\n var accept, reject,\n pending = new Promise(function(a, r) {\n accept = function() { a(df); };\n reject = r;\n });\n\n pending.requests = 0;\n\n pending.done = function() {\n if (--pending.requests === 0) {\n df.runAfter(function() {\n df._pending = null;\n try {\n df.run();\n if (df._pending) {\n df._pending.then(accept);\n } else {\n accept();\n }\n } catch (err) {\n reject(err);\n }\n });\n }\n };\n\n return (df._pending = pending);\n}\n\n/**\n * Request data from an external source, parse it, and pulse a changeset\n * to the specified target operator.\n * @param {Operator} target - The Operator to target with the loaded data,\n * typically a Collect transform instance.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * Resolves to a status code: 0 success, -1 load fail, -2 parse fail.\n */\nexport function request(target, url, format) {\n var df = this,\n status = 0,\n pending = df._pending || loadPending(df);\n\n pending.requests += 1;\n\n return df.loader()\n .load(url, {context:'dataflow'})\n .then(\n function(data) {\n return read(data, format);\n },\n function(error) {\n status = -1;\n df.error('Loading failed', url, error);\n })\n .catch(\n function(error) {\n status = -2;\n df.error('Data ingestion failed', url, error);\n })\n .then(function(data) {\n df.pulse(target, df.changeset().remove(truthy).insert(data || []));\n pending.done();\n return status;\n });\n}\n","import {stream} from '../EventStream';\nimport {array} from 'vega-util';\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nexport default function(source, type, filter, apply) {\n var df = this,\n s = stream(filter, apply),\n send = function(e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n },\n sources;\n\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array(source);\n }\n\n for (var i=0, n=sources.length; i 1 ? this.dev / (this.valid-1) : undefined',\n req: ['mean'], idx: 1\n }),\n 'variancep': measure({\n name: 'variancep',\n set: 'this.valid > 1 ? this.dev / this.valid : undefined',\n req: ['variance'], idx: 2\n }),\n 'stdev': measure({\n name: 'stdev',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined',\n req: ['variance'], idx: 2\n }),\n 'stdevp': measure({\n name: 'stdevp',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined',\n req: ['variance'], idx: 2\n }),\n 'stderr': measure({\n name: 'stderr',\n set: 'this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined',\n req: ['variance'], idx: 2\n }),\n 'distinct': measure({\n name: 'distinct',\n set: 'cell.data.distinct(this.get)',\n req: ['values'], idx: 3\n }),\n 'ci0': measure({\n name: 'ci0',\n set: 'cell.data.ci0(this.get)',\n req: ['values'], idx: 3\n }),\n 'ci1': measure({\n name: 'ci1',\n set: 'cell.data.ci1(this.get)',\n req: ['values'], idx: 3\n }),\n 'median': measure({\n name: 'median',\n set: 'cell.data.q2(this.get)',\n req: ['values'], idx: 3\n }),\n 'q1': measure({\n name: 'q1',\n set: 'cell.data.q1(this.get)',\n req: ['values'], idx: 3\n }),\n 'q3': measure({\n name: 'q3',\n set: 'cell.data.q3(this.get)',\n req: ['values'], idx: 3\n }),\n 'argmin': measure({\n name: 'argmin',\n init: 'this.argmin = undefined;',\n add: 'if (v < this.min) this.argmin = t;',\n rem: 'if (v <= this.min) this.argmin = undefined;',\n set: 'this.argmin || cell.data.argmin(this.get)',\n req: ['min'], str: ['values'], idx: 3\n }),\n 'argmax': measure({\n name: 'argmax',\n init: 'this.argmax = undefined;',\n add: 'if (v > this.max) this.argmax = t;',\n rem: 'if (v >= this.max) this.argmax = undefined;',\n set: 'this.argmax || cell.data.argmax(this.get)',\n req: ['max'], str: ['values'], idx: 3\n }),\n 'min': measure({\n name: 'min',\n init: 'this.min = undefined;',\n add: 'if (v < this.min || this.min === undefined) this.min = v;',\n rem: 'if (v <= this.min) this.min = NaN;',\n set: 'this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)',\n str: ['values'], idx: 4\n }),\n 'max': measure({\n name: 'max',\n init: 'this.max = undefined;',\n add: 'if (v > this.max || this.max === undefined) this.max = v;',\n rem: 'if (v >= this.max) this.max = NaN;',\n set: 'this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)',\n str: ['values'], idx: 4\n })\n};\n\nexport var ValidAggregateOps = Object.keys(AggregateOps);\n\nexport function createMeasure(op, name) {\n return AggregateOps[op](name);\n}\n\nfunction measure(base) {\n return function(out) {\n var m = extend({init:'', add:'', rem:'', idx:0}, base);\n m.out = out || base.name;\n return m;\n };\n}\n\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\n\nfunction resolve(agg, stream) {\n function collect(m, a) {\n function helper(r) { if (!m[r]) collect(m, m[r] = AggregateOps[r]()); }\n if (a.req) a.req.forEach(helper);\n if (stream && a.str) a.str.forEach(helper);\n return m;\n }\n var map = agg.reduce(\n collect,\n agg.reduce(function(m, a) {\n m[a.name] = a;\n return m;\n }, {})\n );\n var values = [], key;\n for (key in map) values.push(map[key]);\n return values.sort(compareIndex);\n}\n\nexport function compileMeasures(agg, field) {\n var get = field || identity,\n all = resolve(agg, true), // assume streaming removes may occur\n init = 'var cell = this.cell; this.valid = 0; this.missing = 0;',\n ctr = 'this.cell = cell; this.init();',\n add = 'if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;',\n rem = 'if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;',\n set = 'var cell = this.cell;';\n\n all.forEach(function(a) {\n init += a.init;\n add += a.add;\n rem += a.rem;\n });\n agg.slice().sort(compareIndex).forEach(function(a) {\n set += 't[\\'' + a.out + '\\']=' + a.set + ';';\n });\n set += 'return t;';\n\n ctr = Function('cell', ctr);\n ctr.prototype.init = Function(init);\n ctr.prototype.add = Function('v', 't', add);\n ctr.prototype.rem = Function('v', 't', rem);\n ctr.prototype.set = Function('t', set);\n ctr.prototype.get = get;\n ctr.fields = agg.map(function(_) { return _.out; });\n return ctr;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare) {\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","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 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)) return;\n if ((p = +p) <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return minIndex(values);\n if (p >= 1) return maxIndex(values);\n var n,\n i = Math.floor((n - 1) * p),\n order = (i, j) => ascendingDefined(values[i], values[j]),\n index = quickselect(Uint32Array.from(values, (_, i) => i), i, 0, n - 1, order);\n return greatest(index.subarray(0, i + 1), i => values[i]);\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n","import { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';\n\nfunction* numbers (values, valueof) {\n if (valueof == null) {\n for (let value of values) {\n if (value != null && value !== '' && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n value = valueof(value, ++index, values);\n\n if (value != null && value !== '' && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n\nfunction quantiles (array, p, f) {\n const values = Float64Array.from(numbers(array, f)); // don't depend on return value from typed array sort call\n // protects against undefined sort results in Safari (vega/vega-lite#4964)\n\n values.sort(ascending);\n return p.map(_ => quantileSorted(values, _));\n}\n\nfunction quartiles (array, f) {\n return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Theory, Practice, and Visualization. Wiley.\n\nfunction estimateBandwidth (array, f) {\n const n = array.length,\n d = deviation(array, f),\n q = quartiles(array, f),\n h = (q[2] - q[0]) / 1.34,\n v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n return 1.06 * v * Math.pow(n, -0.2);\n}\n\nfunction bin (_) {\n // determine range\n const maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2];\n let min = _.extent[0],\n max = _.extent[1],\n step,\n level,\n minstep,\n v,\n i,\n n;\n const span = _.span || max - min || Math.abs(min) || 1;\n\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n\n for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n\n step = _.steps[Math.max(0, i - 1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level)); // increase step size if too many bins\n\n while (Math.ceil(span / step) > maxb) {\n step *= base;\n } // decrease step size if allowed\n\n\n for (i = 0, n = div.length; i < n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n } // update precision, min and max\n\n\n v = Math.log(step);\n const precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n eps = Math.pow(base, -precision - 1);\n\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\n\nvar random = Math.random;\nfunction setRandom(r) {\n random = r;\n}\n\nfunction bootstrapCI (array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n const values = Float64Array.from(numbers(array, f)),\n n = values.length,\n m = samples;\n let a, i, j, mu;\n\n for (j = 0, mu = Array(m); j < m; ++j) {\n for (a = 0, i = 0; i < n; ++i) {\n a += values[~~(random() * n)];\n }\n\n mu[j] = a / n;\n }\n\n mu.sort(ascending);\n return [quantile(mu, alpha / 2), quantile(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin (array, step, smooth, f) {\n f = f || (_ => _);\n\n const n = array.length,\n v = new Float64Array(n);\n let i = 0,\n j = 1,\n a = f(array[0]),\n b = a,\n w = a + step,\n x;\n\n for (; j < n; ++j) {\n x = f(array[j]);\n\n if (x >= w) {\n b = (a + b) / 2;\n\n for (; i < j; ++i) v[i] = b;\n\n w = x + step;\n a = x;\n }\n\n b = x;\n }\n\n b = (a + b) / 2;\n\n for (; i < j; ++i) v[i] = b;\n\n return smooth ? smoothing(v, step + step / 4) : v;\n} // perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\n\nfunction smoothing(v, thresh) {\n const n = v.length;\n let a = 0,\n b = 1,\n c,\n d; // get left stack\n\n while (v[a] === v[b]) ++b;\n\n while (b < n) {\n // get right stack\n c = b + 1;\n\n while (v[b] === v[c]) ++c; // are stacks adjacent?\n // if so, compare sizes and swap as needed\n\n\n if (v[b] - v[b - 1] < thresh) {\n d = b + (a + c - b - b >> 1);\n\n while (d < b) v[d++] = v[b];\n\n while (d > b) v[d--] = v[a];\n } // update left stack indices\n\n\n a = b;\n b = c;\n }\n\n return v;\n}\n\nfunction lcg (seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function () {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\n\nfunction integer (min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n\n let a, b, d;\n const dist = {\n min(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n },\n\n max(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n },\n\n sample() {\n return a + Math.floor(d * random());\n },\n\n pdf(x) {\n return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n },\n\n cdf(x) {\n const v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n },\n\n icdf(p) {\n return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n }\n\n };\n return dist.min(min).max(max);\n}\n\nconst SQRT2PI = Math.sqrt(2 * Math.PI);\nconst SQRT2 = Math.SQRT2;\n\nlet nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n let x = 0,\n y = 0,\n rds,\n c;\n\n if (nextSample === nextSample) {\n x = nextSample;\n nextSample = NaN;\n } else {\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n\n x *= c;\n nextSample = y * c;\n }\n\n return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n stdev = stdev == null ? 1 : stdev;\n const z = (value - (mean || 0)) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n} // Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\n\nfunction cumulativeNormal(value, mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n const z = (value - mean) / stdev,\n Z = Math.abs(z);\n let cd;\n\n if (Z > 37) {\n cd = 0;\n } else {\n const exp = Math.exp(-Z * Z / 2);\n let sum;\n\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n\n return z > 0 ? 1 - cd : cd;\n} // Approximation of Probit function using inverse error function.\n\nfunction quantileNormal(p, mean, stdev) {\n if (p < 0 || p > 1) return NaN;\n return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n} // Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\n\nfunction erfinv(x) {\n // beware that the logarithm argument must be\n // commputed as (1.0 - x) * (1.0 + x),\n // it must NOT be simplified as 1.0 - x * x as this\n // would induce rounding errors near the boundaries +/-1\n let w = -Math.log((1 - x) * (1 + x)),\n p;\n\n if (w < 6.25) {\n w -= 3.125;\n p = -3.6444120640178196996e-21;\n p = -1.685059138182016589e-19 + p * w;\n p = 1.2858480715256400167e-18 + p * w;\n p = 1.115787767802518096e-17 + p * w;\n p = -1.333171662854620906e-16 + p * w;\n p = 2.0972767875968561637e-17 + p * w;\n p = 6.6376381343583238325e-15 + p * w;\n p = -4.0545662729752068639e-14 + p * w;\n p = -8.1519341976054721522e-14 + p * w;\n p = 2.6335093153082322977e-12 + p * w;\n p = -1.2975133253453532498e-11 + p * w;\n p = -5.4154120542946279317e-11 + p * w;\n p = 1.051212273321532285e-09 + p * w;\n p = -4.1126339803469836976e-09 + p * w;\n p = -2.9070369957882005086e-08 + p * w;\n p = 4.2347877827932403518e-07 + p * w;\n p = -1.3654692000834678645e-06 + p * w;\n p = -1.3882523362786468719e-05 + p * w;\n p = 0.0001867342080340571352 + p * w;\n p = -0.00074070253416626697512 + p * w;\n p = -0.0060336708714301490533 + p * w;\n p = 0.24015818242558961693 + p * w;\n p = 1.6536545626831027356 + p * w;\n } else if (w < 16.0) {\n w = Math.sqrt(w) - 3.25;\n p = 2.2137376921775787049e-09;\n p = 9.0756561938885390979e-08 + p * w;\n p = -2.7517406297064545428e-07 + p * w;\n p = 1.8239629214389227755e-08 + p * w;\n p = 1.5027403968909827627e-06 + p * w;\n p = -4.013867526981545969e-06 + p * w;\n p = 2.9234449089955446044e-06 + p * w;\n p = 1.2475304481671778723e-05 + p * w;\n p = -4.7318229009055733981e-05 + p * w;\n p = 6.8284851459573175448e-05 + p * w;\n p = 2.4031110387097893999e-05 + p * w;\n p = -0.0003550375203628474796 + p * w;\n p = 0.00095328937973738049703 + p * w;\n p = -0.0016882755560235047313 + p * w;\n p = 0.0024914420961078508066 + p * w;\n p = -0.0037512085075692412107 + p * w;\n p = 0.005370914553590063617 + p * w;\n p = 1.0052589676941592334 + p * w;\n p = 3.0838856104922207635 + p * w;\n } else if (Number.isFinite(w)) {\n w = Math.sqrt(w) - 5.0;\n p = -2.7109920616438573243e-11;\n p = -2.5556418169965252055e-10 + p * w;\n p = 1.5076572693500548083e-09 + p * w;\n p = -3.7894654401267369937e-09 + p * w;\n p = 7.6157012080783393804e-09 + p * w;\n p = -1.4960026627149240478e-08 + p * w;\n p = 2.9147953450901080826e-08 + p * w;\n p = -6.7711997758452339498e-08 + p * w;\n p = 2.2900482228026654717e-07 + p * w;\n p = -9.9298272942317002539e-07 + p * w;\n p = 4.5260625972231537039e-06 + p * w;\n p = -1.9681778105531670567e-05 + p * w;\n p = 7.5995277030017761139e-05 + p * w;\n p = -0.00021503011930044477347 + p * w;\n p = -0.00013871931833623122026 + p * w;\n p = 1.0103004648645343977 + p * w;\n p = 4.8499064014085844221 + p * w;\n } else {\n p = Infinity;\n }\n\n return p * x;\n}\n\nfunction gaussian (mean, stdev) {\n let mu, sigma;\n const dist = {\n mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n\n stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n\n sample: () => sampleNormal(mu, sigma),\n pdf: value => densityNormal(value, mu, sigma),\n cdf: value => cumulativeNormal(value, mu, sigma),\n icdf: p => quantileNormal(p, mu, sigma)\n };\n return dist.mean(mean).stdev(stdev);\n}\n\nfunction kde (support, bandwidth) {\n const kernel = gaussian();\n let n = 0;\n const dist = {\n data(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(bandwidth);\n } else {\n return support;\n }\n },\n\n bandwidth(_) {\n if (!arguments.length) return bandwidth;\n bandwidth = _;\n if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n return dist;\n },\n\n sample() {\n return support[~~(random() * n)] + bandwidth * kernel.sample();\n },\n\n pdf(x) {\n let y = 0,\n i = 0;\n\n for (; i < n; ++i) {\n y += kernel.pdf((x - support[i]) / bandwidth);\n }\n\n return y / bandwidth / n;\n },\n\n cdf(x) {\n let y = 0,\n i = 0;\n\n for (; i < n; ++i) {\n y += kernel.cdf((x - support[i]) / bandwidth);\n }\n\n return y / n;\n },\n\n icdf() {\n throw Error('KDE icdf not supported.');\n }\n\n };\n return dist.data(support);\n}\n\nfunction sampleLogNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n if (value <= 0) return 0;\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n const z = (Math.log(value) - mean) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal (mean, stdev) {\n let mu, sigma;\n const dist = {\n mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n\n stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n\n sample: () => sampleLogNormal(mu, sigma),\n pdf: value => densityLogNormal(value, mu, sigma),\n cdf: value => cumulativeLogNormal(value, mu, sigma),\n icdf: p => quantileLogNormal(p, mu, sigma)\n };\n return dist.mean(mean).stdev(stdev);\n}\n\nfunction mixture (dists, weights) {\n let m = 0,\n w;\n\n function normalize(x) {\n const w = [];\n let sum = 0,\n i;\n\n for (i = 0; i < m; ++i) {\n sum += w[i] = x[i] == null ? 1 : +x[i];\n }\n\n for (i = 0; i < m; ++i) {\n w[i] /= sum;\n }\n\n return w;\n }\n\n const dist = {\n weights(_) {\n if (arguments.length) {\n w = normalize(weights = _ || []);\n return dist;\n }\n\n return weights;\n },\n\n distributions(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n\n return dist.weights(weights);\n }\n\n return dists;\n },\n\n sample() {\n const r = random();\n let d = dists[m - 1],\n v = w[0],\n i = 0; // first select distribution\n\n for (; i < m - 1; v += w[++i]) {\n if (r < v) {\n d = dists[i];\n break;\n }\n } // then sample from it\n\n\n return d.sample();\n },\n\n pdf(x) {\n let p = 0,\n i = 0;\n\n for (; i < m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n\n return p;\n },\n\n cdf(x) {\n let p = 0,\n i = 0;\n\n for (; i < m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n\n return p;\n },\n\n icdf() {\n throw Error('Mixture icdf not supported.');\n }\n\n };\n return dist.distributions(dists).weights(weights);\n}\n\nfunction sampleUniform(min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n\n return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n\n return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n\n return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n\n return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform (min, max) {\n let a, b;\n const dist = {\n min(_) {\n if (arguments.length) {\n a = _ || 0;\n return dist;\n } else {\n return a;\n }\n },\n\n max(_) {\n if (arguments.length) {\n b = _ == null ? 1 : _;\n return dist;\n } else {\n return b;\n }\n },\n\n sample: () => sampleUniform(a, b),\n pdf: value => densityUniform(value, a, b),\n cdf: value => cumulativeUniform(value, a, b),\n icdf: p => quantileUniform(p, a, b)\n };\n\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n\n return dist.min(min).max(max);\n}\n\n// Ordinary Least Squares\nfunction ols (uX, uY, uXY, uX2) {\n const delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n}\n\nfunction points(data, x, y, sort) {\n data = data.filter(d => {\n let u = x(d),\n v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n\n if (sort) {\n data.sort((a, b) => x(a) - x(b));\n }\n\n const n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n); // extract values, calculate means\n\n let i = 0,\n ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n\n for (d of data) {\n X[i] = xv = +x(d);\n Y[i] = yv = +y(d);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n } // mean center the data\n\n\n for (i = 0; i < n; ++i) {\n X[i] -= ux;\n Y[i] -= uy;\n }\n\n return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n let i = -1,\n u,\n v;\n\n for (const d of data) {\n u = x(d);\n v = y(d);\n\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction rSquared (data, x, y, uY, predict) {\n let SSE = 0,\n SST = 0;\n visitPoints(data, x, y, (dx, dy) => {\n const sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction linear (data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] + coef[1] * x;\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction log (data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n dx = Math.log(dx);\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] + coef[1] * Math.log(x);\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\nfunction exp (data, x, y) {\n // eslint-disable-next-line no-unused-vars\n const [xv, yv, ux, uy] = points(data, x, y);\n let YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n n = 0,\n dx,\n ly,\n xy;\n visitPoints(data, x, y, (_, dy) => {\n dx = xv[n++];\n ly = Math.log(dy);\n xy = dx * dy;\n YL += (dy * ly - YL) / n;\n XY += (xy - XY) / n;\n XYL += (xy * ly - XYL) / n;\n X2Y += (dx * xy - X2Y) / n;\n });\n\n const [c0, c1] = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n predict = x => Math.exp(c0 + c1 * (x - ux));\n\n return {\n coef: [Math.exp(c0 - c1 * ux), c1],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n\nfunction pow (data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n const lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n });\n\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] * Math.pow(x, coef[1]);\n\n coef[0] = Math.exp(coef[0]);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS, predict)\n };\n}\n\nfunction quad (data, x, y) {\n const [xv, yv, ux, uy] = points(data, x, y),\n n = xv.length;\n let X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n\n const X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n predict = x => {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n }; // transform coefficients back from mean-centered space\n\n\n return {\n coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n\nfunction poly (data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 1) return linear(data, x, y);\n if (order === 2) return quad(data, x, y);\n const [xv, yv, ux, uy] = points(data, x, y),\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n let i, j, l, v, c;\n\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n\n lhs.push(v);\n c = new Float64Array(k);\n\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n\n c[j] = v;\n }\n\n rhs.push(c);\n }\n\n rhs.push(lhs);\n\n const coef = gaussianElimination(rhs),\n predict = x => {\n x -= ux;\n let y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n\n for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n\n return y;\n };\n\n return {\n coef: uncenter(k, coef, -ux, uy),\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\nfunction uncenter(k, a, x, y) {\n const z = Array(k);\n let i, j, v, c; // initialize to zero\n\n for (i = 0; i < k; ++i) z[i] = 0; // polynomial expansion\n\n\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n\n z[i - j] += v * Math.pow(x, j) * c;\n }\n } // bias term\n\n\n z[0] += y;\n return z;\n} // Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\n\n\nfunction gaussianElimination(matrix) {\n const n = matrix.length - 1,\n coef = [];\n let i, j, k, r, t;\n\n for (i = 0; i < n; ++i) {\n r = i; // max row\n\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n\n return coef;\n}\n\nconst maxiters = 2,\n epsilon = 1e-12; // Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\n\nfunction loess (data, x, y, bandwidth) {\n const [xv, yv, ux, uy] = points(data, x, y, true),\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n // # nearest neighbors\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n\n for (let iter = -1; ++iter <= maxiters;) {\n const interval = [0, bw - 1];\n\n for (let i = 0; i < n; ++i) {\n const dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n let W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0;\n const denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (let k = i0; k <= i1; ++k) {\n const xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n } // linear regression fit\n\n\n const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n\n if (iter === maxiters) {\n break;\n }\n\n const medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n\n for (let i = 0, arg, w; i < n; ++i) {\n arg = residuals[i] / (6 * medianResidual); // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n\n robustWeights[i] = arg >= 1 ? epsilon : (w = 1 - arg * arg) * w;\n }\n }\n\n return output(xv, yhat, ux, uy);\n} // weighting kernel for local regression\n\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n} // advance sliding window interval of nearest neighbors\n\n\nfunction updateInterval(xv, i, interval) {\n const val = xv[i];\n let left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return; // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n} // generate smoothed output points\n// average points with repeated x values\n\n\nfunction output(xv, yhat, ux, uy) {\n const n = xv.length,\n out = [];\n let i = 0,\n cnt = 0,\n prev = [],\n v;\n\n for (; i < n; ++i) {\n v = xv[i] + ux;\n\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n\n prev[1] += uy;\n return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nconst MIN_RADIANS = 0.5 * Math.PI / 180; // Adaptively sample an interpolated function over a domain extent\n\nfunction sampleCurve (f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n\n const point = x => [x, f(x)],\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (let i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + i / minSteps * span));\n }\n\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n\n for (let i = minSteps; --i > 0;) {\n next.push(point(minX + i / minSteps * span));\n }\n }\n\n let p0 = prev[0];\n let p1 = next[next.length - 1];\n const sx = 1 / span;\n const sy = scaleY(p0[1], next);\n\n while (p1) {\n // midpoint for potential curve subdivision\n const pm = point((p0[0] + p1[0]) / 2);\n const dx = pm[0] - p0[0] >= stop;\n\n if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n // maximum resolution has not yet been met, and\n // subdivision midpoint is sufficiently different from endpoint\n // save subdivision, push midpoint onto the visitation stack\n next.push(pm);\n } else {\n // subdivision midpoint sufficiently similar to endpoint\n // skip subdivision, store endpoint, move to next point on the stack\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n\n p1 = next[next.length - 1];\n }\n\n return prev;\n}\n\nfunction scaleY(init, points) {\n let ymin = init;\n let ymax = init;\n const n = points.length;\n\n for (let i = 0; i < n; ++i) {\n const y = points[i][1];\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n\n return 1 / (ymax - ymin);\n}\n\nfunction angleDelta(p, q, r, sx, sy) {\n const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n return Math.abs(a0 - a1);\n}\n\nexport { estimateBandwidth as bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, integer as randomInteger, kde as randomKDE, lcg as randomLCG, lognormal as randomLogNormal, mixture as randomMixture, gaussian as randomNormal, uniform as randomUniform, exp as regressionExp, linear as regressionLinear, loess as regressionLoess, log as regressionLog, poly as regressionPoly, pow as regressionPow, quad as regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom };\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\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 delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import {tupleid} from 'vega-dataflow';\nimport {bootstrapCI, quartiles} from 'vega-statistics';\nimport {extentIndex, field} from 'vega-util';\n\nexport default function TupleStore(key) {\n this._key = key ? field(key) : tupleid;\n this.reset();\n}\n\nvar prototype = TupleStore.prototype;\n\nprototype.reset = function() {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\n\nprototype.add = function(v) {\n this._add.push(v);\n};\n\nprototype.rem = function(v) {\n this._rem.push(v);\n};\n\nprototype.values = function() {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n\n var a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {}, i, j, v;\n\n // use unique key field to clear removed values\n for (i=0; i= 0) {\n s = get(v[n]) + '';\n if (!map.hasOwnProperty(s)) {\n map[s] = 1;\n ++count;\n }\n }\n\n return count;\n};\n\nprototype.extent = function(get) {\n if (this._get !== get || !this._ext) {\n var v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\n\nprototype.argmin = function(get) {\n return this.extent(get)[0] || {};\n};\n\nprototype.argmax = function(get) {\n return this.extent(get)[1] || {};\n};\n\nprototype.min = function(get) {\n var m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\n\nprototype.max = function(get) {\n var m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\n\nprototype.quartile = function(get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\n\nprototype.q1 = function(get) {\n return this.quartile(get)[0];\n};\n\nprototype.q2 = function(get) {\n return this.quartile(get)[1];\n};\n\nprototype.q3 = function(get) {\n return this.quartile(get)[2];\n};\n\nprototype.ci = function(get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\n\nprototype.ci0 = function(get) {\n return this.ci(get)[0];\n};\n\nprototype.ci1 = function(get) {\n return this.ci(get)[1];\n};\n","import {groupkey} from './util/AggregateKeys';\nimport {createMeasure, compileMeasures, measureName, ValidAggregateOps} from './util/AggregateOps';\nimport TupleStore from './util/TupleStore';\nimport {ingest, replace, Transform} from 'vega-dataflow';\nimport {accessorFields, accessorName, array, error, inherits} from 'vega-util';\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.fields] - An array of accessors to aggregate.\n * @param {Array} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nexport default function Aggregate(params) {\n Transform.call(this, null, params);\n\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n \"type\": \"Aggregate\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidAggregateOps },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"drop\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"cross\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(Aggregate, Transform);\n\nprototype.transform = function(_, pulse) {\n var aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod;\n\n this.stamp = out.stamp;\n\n if (this.value && ((mod = _.modified()) || pulse.modified(this._inputs))) {\n this._prev = this.value;\n this.value = mod ? this.init(_) : {};\n pulse.visit(pulse.SOURCE, function(t) { aggr.add(t); });\n } else {\n this.value = this.value || this.init(_);\n pulse.visit(pulse.REM, function(t) { aggr.rem(t); });\n pulse.visit(pulse.ADD, function(t) { aggr.add(t); });\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(this._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n this.cross();\n }\n\n return aggr.changes(out);\n};\n\nprototype.cross = function() {\n var aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(function() { return {}; }),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n var key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i=0; i} params.fields - The fields to compare.\n * @param {Array} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nexport default function Compare(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Compare, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified())\n ? this.value\n : compare(_.fields, _.orders);\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nexport default function CountPattern(params) {\n Transform.call(this, null, params);\n}\n\nCountPattern.Definition = {\n \"type\": \"CountPattern\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"case\", \"type\": \"enum\", \"values\": [\"upper\", \"lower\", \"mixed\"], \"default\": \"mixed\" },\n { \"name\": \"pattern\", \"type\": \"string\", \"default\": \"[\\\\w\\\"]+\" },\n { \"name\": \"stopwords\", \"type\": \"string\", \"default\": \"\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"text\", \"count\"] }\n ]\n};\n\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper': text = text.toUpperCase(); break;\n case 'lower': text = text.toLowerCase(); break;\n }\n return text.match(match);\n}\n\nvar prototype = inherits(CountPattern, Transform);\n\nprototype.transform = function(_, pulse) {\n function process(update) {\n return function(tuple) {\n var tokens = tokenize(get(tuple), _.case, match) || [], t;\n for (var i=0, n=tokens.length; i} [params.as] - The names of the output fields.\n */\nexport default function Cross(params) {\n Transform.call(this, null, params);\n}\n\nCross.Definition = {\n \"type\": \"Cross\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"filter\", \"type\": \"expr\" },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"a\", \"b\"] }\n ]\n};\n\nvar prototype = inherits(Cross, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n data = this.value,\n as = _.as || ['a', 'b'],\n a = as[0], b = as[1],\n reset = !data\n || pulse.changed(pulse.ADD_REM)\n || _.modified('as')\n || _.modified('filter');\n\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n\n out.source = this.value;\n return out.modifies(as);\n};\n\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j, left;\n\n for (; i} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nexport default function parse(def, data) {\n var func = def[FUNCTION];\n if (!Distributions.hasOwnProperty(func)) {\n error('Unknown distribution function: ' + func);\n }\n\n var d = Distributions[func]();\n\n for (var name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(function(_) { return parse(_, data); }));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n\n return d;\n}\n","export default function(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 default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import parseDist from './util/Distributions';\nimport {ingest, Transform} from 'vega-dataflow';\nimport {error, inherits} from 'vega-util';\nimport {extent, range} from 'd3-array';\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.steps=100] - The number of sampling steps.\n */\nexport default function Density(params) {\n Transform.call(this, null, params);\n}\n\nvar distributions = [\n {\n \"key\": {\"function\": \"normal\"},\n \"params\": [\n { \"name\": \"mean\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"stdev\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"function\": \"uniform\"},\n \"params\": [\n { \"name\": \"min\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"max\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"function\": \"kde\"},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"from\", \"type\": \"data\" },\n { \"name\": \"bandwidth\", \"type\": \"number\", \"default\": 0 }\n ]\n }\n];\n\nvar mixture = {\n \"key\": {\"function\": \"mixture\"},\n \"params\": [\n { \"name\": \"distributions\", \"type\": \"param\", \"array\": true,\n \"params\": distributions },\n { \"name\": \"weights\", \"type\": \"number\", \"array\": true }\n ]\n};\n\nDensity.Definition = {\n \"type\": \"Density\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"extent\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"steps\", \"type\": \"number\", \"default\": 100 },\n { \"name\": \"method\", \"type\": \"string\", \"default\": \"pdf\",\n \"values\": [\"pdf\", \"cdf\"] },\n { \"name\": \"distribution\", \"type\": \"param\",\n \"params\": distributions.concat(mixture) },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true,\n \"default\": [\"value\", \"density\"] }\n ]\n};\n\nvar prototype = inherits(Density, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n if (!this.value || pulse.changed() || _.modified()) {\n var dist = parseDist(_.distribution, source(pulse)),\n method = _.method || 'pdf';\n\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n\n var as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n step = (domain[1] - domain[0]) / (_.steps || 100),\n values = range(domain[0], domain[1] + step/2, step)\n .map(function(v) {\n var tuple = {};\n tuple[as[0]] = v;\n tuple[as[1]] = method(v);\n return ingest(tuple);\n });\n\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n\n return out;\n};\n\nfunction source(pulse) {\n return function() { return pulse.materialize(pulse.SOURCE).source; };\n}\n","import {Operator} from 'vega-dataflow';\nimport {accessor, accessorFields, accessorName, inherits} from 'vega-util';\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nexport default function Expression(params) {\n Operator.call(this, null, update, params);\n this.modified(true);\n}\n\ninherits(Expression, Operator);\n\nfunction update(_) {\n var expr = _.expr;\n return this.value && !_.modified('expr')\n ? this.value\n : accessor(\n function(datum) { return expr(datum, _); },\n accessorFields(expr),\n accessorName(expr)\n );\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nexport default function Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\n\nExtent.Definition = {\n \"type\": \"Extent\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Extent, Transform);\n\nprototype.transform = function(_, pulse) {\n var extent = this.value,\n field = _.field,\n min = extent[0],\n max = extent[1],\n mod;\n\n mod = pulse.changed()\n || pulse.modified(field.fields)\n || _.modified('field');\n\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, function(t) {\n var v = field(t);\n if (v != null) {\n // coerce to number\n v = +v;\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n\n if (!isFinite(min) || !isFinite(max)) {\n min = max = undefined;\n }\n this.value = [min, max];\n};\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\nexport default function Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n}\n\nvar prototype = inherits(Subflow, Operator);\n\nprototype.connect = function(target) {\n this.targets().add(target);\n return (target.source = this);\n};\n\n/**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\nprototype.add = function(t) {\n this.value.add.push(t);\n};\n\n/**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\nprototype.rem = function(t) {\n this.value.rem.push(t);\n};\n\n/**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\nprototype.mod = function(t) {\n this.value.mod.push(t);\n};\n\n/**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\nprototype.init = function(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n};\n\n/**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\nprototype.evaluate = function() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n};\n","import Subflow from './Subflow';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nexport default function Facet(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n var a = this._targets = [];\n a.active = 0;\n a.forEach = function(f) {\n for (var i=0, n=a.active; i df.cleanThreshold) df.runAfter(cache.clean);\n return pulse;\n};\n","import {Operator} from 'vega-dataflow';\nimport {array, field, inherits, isArray} from 'vega-util';\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nexport default function Field(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Field, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified()) ? this.value\n : isArray(_.name) ? array(_.name).map(function(f) { return field(f); })\n : field(_.name, _.as);\n}\n","import {Transform, tupleid} from 'vega-dataflow';\nimport {fastmap, inherits} from 'vega-util';\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nexport default function Filter(params) {\n Transform.call(this, fastmap(), params);\n}\n\nFilter.Definition = {\n \"type\": \"Filter\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"expr\", \"type\": \"expr\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Filter, Transform);\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n cache = this.value, // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr,\n isMod = true;\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n if (!cache.has(id)) rem.push(t);\n else cache.delete(id);\n });\n\n pulse.visit(pulse.ADD, function(t) {\n if (test(t, _)) add.push(t);\n else cache.set(tupleid(t), 1);\n });\n\n function revisit(t) {\n var id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n\n pulse.visit(pulse.MOD, revisit);\n\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n};\n","import {accessorName} from 'vega-util';\n\n// use either provided alias or accessor field name\nexport function fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map(function(f, i) {\n return as[i] || accessorName(f);\n });\n}\n","import {fieldNames} from './util/util';\nimport {derive, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {Array} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nexport default function Flatten(params) {\n Transform.call(this, [], params);\n}\n\nFlatten.Definition = {\n \"type\": \"Flatten\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Flatten, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, function(t) {\n var arrays = fields.map(function(f) { return f(t); }),\n maxlen = arrays.reduce(function(l, a) { return Math.max(l, a.length); }, 0),\n i = 0, j, d, v;\n\n for (; i} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nexport default function Fold(params) {\n Transform.call(this, [], params);\n}\n\nFold.Definition = {\n \"type\": \"Fold\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"key\", \"value\"] }\n ]\n};\n\nvar prototype = inherits(Fold, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n\n out.rem = this.value;\n\n pulse.visit(pulse.SOURCE, function(t) {\n for (var i=0, d; i 0) {\n // need more tuples, generate and add\n for (add=[]; --num >= 0;) {\n add.push(t = ingest(gen(_)));\n data.push(t);\n }\n out.add = out.add.length\n ? out.materialize(out.ADD).add.concat(add)\n : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length\n ? out.materialize(out.REM).rem.concat(rem)\n : rem;\n data = data.slice(-num);\n }\n\n out.source = this.value = data;\n return out;\n};\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {accessorName, error, inherits} from 'vega-util';\nimport {mean, min, max, median} from 'd3-array';\n\nvar Methods = {\n value: 'value',\n median: median,\n mean: mean,\n min: min,\n max: max\n};\n\nvar Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nexport default function Impute(params) {\n Transform.call(this, [], params);\n}\n\nImpute.Definition = {\n \"type\": \"Impute\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"key\", \"type\": \"field\", \"required\": true },\n { \"name\": \"keyvals\", \"array\": true },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"value\",\n \"values\": [\"value\", \"mean\", \"median\", \"max\", \"min\"] },\n { \"name\": \"value\", \"default\": 0 }\n ]\n};\n\nvar prototype = inherits(Impute, Transform);\n\nfunction getValue(_) {\n var m = _.method || Methods.value, v;\n\n if (Methods[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods.value) {\n v = _.value !== undefined ? _.value : 0;\n return function() { return v; };\n } else {\n return Methods[m];\n }\n}\n\nfunction getField(_) {\n var f = _.field;\n return function(t) { return t ? f(t) : NaN; };\n}\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group, value, gVals, kVal, g, i, j, l, n, t;\n\n for (g=0, l=groups.length; g= 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","import Aggregate from './Aggregate';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport {extend, inherits} from 'vega-util';\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nexport default function JoinAggregate(params) {\n Aggregate.call(this, params);\n}\n\nJoinAggregate.Definition = {\n \"type\": \"JoinAggregate\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidAggregateOps },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(JoinAggregate, Aggregate);\n\nprototype.transform = function(_, pulse) {\n var aggr = this,\n mod = _.modified(),\n cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, function(t) { aggr.add(t); });\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, function(t) { aggr.rem(t); });\n pulse.visit(pulse.ADD, function(t) { aggr.add(t); });\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, function(t) {\n extend(t, cells[aggr.cellkey(t)].tuple);\n });\n\n return pulse.reflow(mod).modifies(this._outputs);\n};\n\nprototype.changes = function() {\n var adds = this._adds,\n mods = this._mods,\n i, n;\n\n for (i=0, n=this._alen; i} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nexport default function Key(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(Key, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified()) ? this.value : key(_.fields, _.flat);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nexport default function Load(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Load, Transform);\n\nprototype.transform = function(_, pulse) {\n pulse.dataflow.request(this.target, _.url, _.format);\n};\n","import {Transform} from 'vega-dataflow';\nimport {accessorName, error, inherits} from 'vega-util';\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nexport default function Lookup(params) {\n Transform.call(this, {}, params);\n}\n\nLookup.Definition = {\n \"type\": \"Lookup\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"index\", \"type\": \"index\", \"params\": [\n {\"name\": \"from\", \"type\": \"data\", \"required\": true },\n {\"name\": \"key\", \"type\": \"field\", \"required\": true }\n ] },\n { \"name\": \"values\", \"type\": \"field\", \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true },\n { \"name\": \"default\", \"default\": null }\n ]\n};\n\nvar prototype = inherits(Lookup, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse,\n as = _.as,\n keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default==null ? null : _.default,\n reset = _.modified(),\n flag = reset ? pulse.SOURCE : pulse.ADD,\n n = keys.length,\n set, m, mods;\n\n if (values) {\n m = values.length;\n\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n\n set = function(t) {\n for (var i=0, k=0, j, v; i>} params.extents - The input extents.\n */\nexport default function MultiExtent(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(MultiExtent, Operator);\n\nfunction update(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n\n var min = +Infinity,\n max = -Infinity,\n ext = _.extents,\n i, n, e;\n\n for (i=0, n=ext.length; i max) max = e[1];\n }\n return [min, max];\n}\n","import {Operator} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.values - The input value arrrays.\n */\nexport default function MultiValues(params) {\n Operator.call(this, null, update, params);\n}\n\ninherits(MultiValues, Operator);\n\nfunction update(_) {\n return (this.value && !_.modified())\n ? this.value\n : _.values.reduce(function(data, _) { return data.concat(_); }, []);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Params(params) {\n Transform.call(this, null, params);\n}\n\ninherits(Params, Transform);\n\nParams.prototype.transform = function(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n};\n","import Aggregate from './Aggregate';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport {accessor, accessorFields, inherits} from 'vega-util';\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nexport default function Pivot(params) {\n Aggregate.call(this, params);\n}\n\nPivot.Definition = {\n \"type\": \"Pivot\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"field\", \"type\": \"field\", \"required\": true },\n { \"name\": \"value\", \"type\": \"field\", \"required\": true },\n { \"name\": \"op\", \"type\": \"enum\", \"values\": ValidAggregateOps, \"default\": \"sum\" },\n { \"name\": \"limit\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"key\", \"type\": \"field\" }\n ]\n};\n\nvar prototype = inherits(Pivot, Aggregate);\n\nprototype._transform = prototype.transform;\n\nprototype.transform = function(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n};\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n var key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(function() { return op; }),\n fields: keys.map(function(k) { return get(k, key, value, fields); }),\n as: keys.map(function(k) { return k + ''; }),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n return accessor(\n function(d) { return key(d) === k ? value(d) : NaN; },\n fields,\n k + ''\n );\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n var map = {},\n list = [];\n\n pulse.visit(pulse.SOURCE, function(t) {\n var k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n\n // TODO? Move this comparator to vega-util?\n list.sort(function(u, v) {\n return (uv||v==null) && u!=null ? 1\n : ((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))!==u && v===v ? -1\n : v!==v && u===u ? 1 : 0;\n });\n\n return limit ? list.slice(0, limit) : list;\n}\n","import Facet from './Facet';\nimport {ingest, tupleid} from 'vega-dataflow';\nimport {accessorFields, error, inherits} from 'vega-util';\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nexport default function PreFacet(params) {\n Facet.call(this, params);\n}\n\nvar prototype = inherits(PreFacet, Facet);\n\nprototype.transform = function(_, pulse) {\n var self = this,\n flow = _.subflow,\n field = _.field;\n\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n\n this._targets.active = 0; // reset list of active subflows\n\n pulse.visit(pulse.MOD, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.mod(_); }) : sf.mod(t);\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.add(ingest(_)); }) : sf.add(t);\n });\n\n pulse.visit(pulse.REM, function(t) {\n var sf = self.subflow(tupleid(t), flow, pulse, t);\n field ? field(t).forEach(function(_) { sf.rem(_); }) : sf.rem(t);\n });\n\n return pulse;\n};\n","import {fieldNames} from './util/util';\nimport {ingest, rederive, Transform, tupleid} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nexport default function Project(params) {\n Transform.call(this, null, params);\n}\n\nProject.Definition = {\n \"type\": \"Project\",\n \"metadata\": {\"generates\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n ]\n};\n\nvar prototype = inherits(Project, Transform);\n\nprototype.transform = function(_, pulse) {\n var fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields\n ? function(s, t) { return project(s, t, fields, as); }\n : rederive,\n out, lut;\n\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n\n out = pulse.fork(pulse.NO_SOURCE);\n\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n\n pulse.visit(pulse.ADD, function(t) {\n var dt = derive(t, ingest({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n\n pulse.visit(pulse.MOD, function(t) {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n\n return out;\n};\n\nfunction project(s, t, fields, as) {\n for (var i=0, n=fields.length; i= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, function(t) {\n var id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(function(t) { return map[tupleid(t)] !== -1; });\n }\n\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, function(t) {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n\n if (mod && res.length > num) {\n for (var i=0, n=res.length-num; i df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nexport default function Values(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Values, Transform);\n\nprototype.transform = function(_, pulse) {\n var run = !this.value\n || _.modified('field')\n || _.modified('sort')\n || pulse.changed()\n || (_.sort && pulse.modified(_.sort.fields));\n\n if (run) {\n this.value = (_.sort\n ? pulse.source.slice().sort(_.sort)\n : pulse.source).map(_.field);\n }\n};\n","import {error, zero} from 'vega-util';\n\nexport function WindowOp(op, field, param, as) {\n var fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero,\n update: function(w, t) { t[as] = fn.next(w); }\n };\n}\n\nexport var WindowOps = {\n row_number: function() {\n return {\n next: function(w) { return w.index + 1; }\n };\n },\n rank: function() {\n var rank;\n return {\n init: function() { rank = 1; },\n next: function(w) {\n var i = w.index,\n data = w.data;\n return (i && w.compare(data[i - 1], data[i])) ? (rank = i + 1) : rank;\n }\n };\n },\n dense_rank: function() {\n var drank;\n return {\n init: function() { drank = 1; },\n next: function(w) {\n var i = w.index,\n d = w.data;\n return (i && w.compare(d[i - 1], d[i])) ? ++drank : drank;\n }\n };\n },\n percent_rank: function() {\n var rank = WindowOps.rank(),\n next = rank.next;\n return {\n init: rank.init,\n next: function(w) {\n return (next(w) - 1) / (w.data.length - 1);\n }\n };\n },\n cume_dist: function() {\n var cume;\n return {\n init: function() { cume = 0; },\n next: function(w) {\n var i = w.index,\n d = w.data,\n c = w.compare;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function(field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n var cume = WindowOps.cume_dist(),\n next = cume.next;\n return {\n init: cume.init,\n next: function(w) { return Math.ceil(num * next(w)); }\n };\n },\n\n lag: function(field, offset) {\n offset = +offset || 1;\n return {\n next: function(w) {\n var i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function(field, offset) {\n offset = +offset || 1;\n return {\n next: function(w) {\n var i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n\n first_value: function(field) {\n return {\n next: function(w) { return field(w.data[w.i0]); }\n };\n },\n last_value: function(field) {\n return {\n next: function(w) { return field(w.data[w.i1 - 1]); }\n }\n },\n nth_value: function(field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: function(w) {\n var i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n }\n }\n};\n\nexport var ValidWindowOps = Object.keys(WindowOps);\n","import {createMeasure, compileMeasures, measureName} from './AggregateOps';\nimport TupleStore from './TupleStore';\nimport {WindowOp, WindowOps} from './WindowOps';\nimport {accessorFields, accessorName, array, error} from 'vega-util';\n\nexport default function WindowState(_) {\n var self = this,\n ops = array(_.ops),\n fields = array(_.fields),\n params = array(_.params),\n as = array(_.as),\n outputs = self.outputs = [],\n windows = self.windows = [],\n inputs = {},\n map = {},\n countOnly = true,\n counts = [],\n measures = [];\n\n function visitInputs(f) {\n array(accessorFields(f)).forEach(function(_) { inputs[_] = 1; });\n }\n visitInputs(_.sort);\n\n ops.forEach(function(op, i) {\n var field = fields[i],\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (WindowOps.hasOwnProperty(op)) {\n windows.push(WindowOp(op, fields[i], params[i], name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n\n countOnly = false;\n var m = map[mname];\n if (!m) {\n m = (map[mname] = []);\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, name));\n }\n });\n\n if (counts.length || measures.length) {\n self.cell = cell(measures, counts, countOnly);\n }\n\n self.inputs = Object.keys(inputs);\n}\n\nvar prototype = WindowState.prototype;\n\nprototype.init = function() {\n this.windows.forEach(function(_) { _.init(); });\n if (this.cell) this.cell.init();\n};\n\nprototype.update = function(w, t) {\n var self = this,\n cell = self.cell,\n wind = self.windows,\n data = w.data,\n m = wind && wind.length,\n j;\n\n if (cell) {\n for (j=w.p0; j f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) 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 ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","import {groupkey} from './util/AggregateKeys';\nimport {ValidAggregateOps} from './util/AggregateOps';\nimport SortedList from './util/SortedList';\nimport {ValidWindowOps} from './util/WindowOps';\nimport WindowState from './util/WindowState';\nimport {Transform, tupleid} from 'vega-dataflow';\nimport {constant, inherits} from 'vega-util';\nimport {bisector} from 'd3-array';\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array} params.ops - An array of strings indicating window operations to perform.\n * @param {Array} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array} [params.as] - An array of output field names for window operations.\n * @param {Array} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nexport default function Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\n\nWindow.Definition = {\n \"type\": \"Window\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"ops\", \"type\": \"enum\", \"array\": true, \"values\": ValidWindowOps.concat(ValidAggregateOps) },\n { \"name\": \"params\", \"type\": \"number\", \"null\": true, \"array\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"null\": true, \"array\": true },\n { \"name\": \"as\", \"type\": \"string\", \"null\": true, \"array\": true },\n { \"name\": \"frame\", \"type\": \"number\", \"null\": true, \"array\": true, \"length\": 2, \"default\": [null, 0] },\n { \"name\": \"ignorePeers\", \"type\": \"boolean\", \"default\": false }\n ]\n};\n\nvar prototype = inherits(Window, Transform);\n\nprototype.transform = function(_, pulse) {\n var self = this,\n state = self.state,\n mod = _.modified(),\n i, n;\n\n this.stamp = pulse.stamp;\n\n // initialize window state\n if (!state || mod) {\n state = self.state = new WindowState(_);\n }\n\n // retrieve group for a tuple\n var key = groupkey(_.groupby);\n function group(t) { return self.group(key(t)); }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n self.value = {};\n pulse.visit(pulse.SOURCE, function(t) { group(t).add(t); });\n } else {\n pulse.visit(pulse.REM, function(t) { group(t).remove(t); });\n pulse.visit(pulse.ADD, function(t) { group(t).add(t); });\n }\n\n // perform window calculations for each modified partition\n for (i=0, n=self._mlen; i 0 && !c(d[r0], d[r0-1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1+1])) w.i1 = bisect.right(d, d[r1]);\n}\n","export var Top = 'top';\nexport var Left = 'left';\nexport var Right = 'right';\nexport var Bottom = 'bottom';\n\nexport var TopLeft = 'top-left';\nexport var TopRight = 'top-right';\nexport var BottomLeft = 'bottom-left';\nexport var BottomRight = 'bottom-right';\n\nexport var Start = 'start';\nexport var Middle = 'middle';\nexport var End = 'end';\n\nexport var Group = 'group';\n\nexport var AxisRole = 'axis';\nexport var TitleRole = 'title';\nexport var FrameRole = 'frame';\nexport var ScopeRole = 'scope';\nexport var LegendRole = 'legend';\n\nexport var RowHeader = 'row-header';\nexport var RowFooter = 'row-footer';\nexport var RowTitle = 'row-title';\nexport var ColHeader = 'column-header';\nexport var ColFooter = 'column-footer';\nexport var ColTitle = 'column-title';\n\nexport var Padding = 'padding';\n\nexport var Symbols = 'symbol';\n\nexport var Fit = 'fit';\nexport var FitX = 'fit-x';\nexport var FitY = 'fit-y';\nexport var Pad = 'pad';\nexport var None = 'none';\n\nexport var All = 'all';\nexport var Each = 'each';\nexport var Flush = 'flush';\n\nexport var Column = 'column';\nexport var Row = 'row';\n\n\n","export default function Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\n\nvar prototype = Bounds.prototype;\n\nprototype.clone = function() {\n return new Bounds(this);\n};\n\nprototype.clear = function() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n};\n\nprototype.empty = function() {\n return (\n this.x1 === +Number.MAX_VALUE &&\n this.y1 === +Number.MAX_VALUE &&\n this.x2 === -Number.MAX_VALUE &&\n this.y2 === -Number.MAX_VALUE\n );\n};\n\nprototype.set = function(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n};\n\nprototype.add = function(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n};\n\nprototype.expand = function(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n};\n\nprototype.round = function() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n};\n\nprototype.translate = function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n};\n\nprototype.rotate = function(angle, x, y) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x*cos + y*sin,\n cy = y - x*sin - y*cos,\n x1 = this.x1, x2 = this.x2,\n y1 = this.y1, y2 = this.y2;\n\n return this.clear()\n .add(cos*x1 - sin*y1 + cx, sin*x1 + cos*y1 + cy)\n .add(cos*x1 - sin*y2 + cx, sin*x1 + cos*y2 + cy)\n .add(cos*x2 - sin*y1 + cx, sin*x2 + cos*y1 + cy)\n .add(cos*x2 - sin*y2 + cx, sin*x2 + cos*y2 + cy);\n};\n\nprototype.union = function(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.intersect = function(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n};\n\nprototype.encloses = function(b) {\n return b && (\n this.x1 <= b.x1 &&\n this.x2 >= b.x2 &&\n this.y1 <= b.y1 &&\n this.y2 >= b.y2\n );\n};\n\nprototype.alignsWith = function(b) {\n return b && (\n this.x1 == b.x1 ||\n this.x2 == b.x2 ||\n this.y1 == b.y1 ||\n this.y2 == b.y2\n );\n};\n\nprototype.intersects = function(b) {\n return b && !(\n this.x2 < b.x1 ||\n this.x1 > b.x2 ||\n this.y2 < b.y1 ||\n this.y1 > b.y2\n );\n};\n\nprototype.contains = function(x, y) {\n return !(\n x < this.x1 ||\n x > this.x2 ||\n y < this.y1 ||\n y > this.y2\n );\n};\n\nprototype.width = function() {\n return this.x2 - this.x1;\n};\n\nprototype.height = function() {\n return this.y2 - this.y1;\n};\n","var gradient_id = 0;\n\nexport default function(p0, p1) {\n var stops = [], gradient;\n return gradient = {\n id: 'gradient_' + (gradient_id++),\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function(offset, color) {\n stops.push({offset: offset, color: color});\n return gradient;\n }\n };\n}\n","import Bounds from './Bounds';\n\nexport default function Item(mark) {\n this.mark = mark;\n this.bounds = (this.bounds || new Bounds());\n}\n","import Item from './Item';\nimport {inherits} from 'vega-util';\n\nexport default function GroupItem(mark) {\n Item.call(this, mark);\n this.items = (this.items || []);\n}\n\ninherits(GroupItem, Item);\n","export function domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n const c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\n\nexport const domImage = () =>\n typeof Image !== 'undefined' ? Image : null;\n","import {image} from 'vega-canvas';\nimport {loader} from 'vega-loader';\n\nexport default function ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\n\nvar prototype = ResourceLoader.prototype;\n\nprototype.pending = function() {\n return this._pending;\n};\n\nfunction increment(loader) {\n loader._pending += 1;\n}\n\nfunction decrement(loader) {\n loader._pending -= 1;\n}\n\nprototype.sanitizeURL = function(uri) {\n var loader = this;\n increment(loader);\n\n return loader._loader.sanitize(uri, {context:'href'})\n .then(function(opt) {\n decrement(loader);\n return opt;\n })\n .catch(function() {\n decrement(loader);\n return null;\n });\n};\n\nprototype.loadImage = function(uri) {\n var loader = this,\n Image = image();\n increment(loader);\n\n return loader._loader\n .sanitize(uri, {context: 'image'})\n .then(function(opt) {\n var url = opt.href;\n if (!url || !Image) throw {url: url};\n\n var img = new Image();\n\n img.onload = function() {\n decrement(loader);\n img.loaded = true;\n };\n\n img.onerror = function() {\n decrement(loader);\n img.loaded = false;\n }\n\n img.src = url;\n return img;\n })\n .catch(function(e) {\n decrement(loader);\n return {loaded: false, width: 0, height: 0, src: e && e.url || ''};\n });\n};\n\nprototype.ready = function() {\n var loader = this;\n return new Promise(function(accept) {\n function poll(value) {\n if (!loader.pending()) accept(value);\n else setTimeout(function() { poll(true); }, 10);\n }\n poll(false);\n });\n};\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","export default function() {}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBundle,\n curveCardinal,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCatmullRom,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n} from 'd3-shape';\n\nvar lookup = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: curveMonotoneY,\n vertical: curveMonotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: curveStepAfter\n },\n 'step-before': {\n curve: curveStepBefore\n }\n};\n\nexport default function curves(type, orientation, tension) {\n var entry = lookup.hasOwnProperty(type) && lookup[type],\n curve = null;\n\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n\n return curve;\n}\n","// Path parsing and rendering code adapted from fabric.js -- Thanks!\nvar cmdlen = { m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7 },\n regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\d)([-+])/g, /\\s|,|###/];\n\nexport default function(pathstr) {\n var result = [],\n path,\n curr,\n chunks,\n parsed, param,\n cmd, len, i, j, n, m;\n\n // First, break path into command sequence\n path = pathstr\n .slice()\n .replace(regexp[0], '###$1')\n .split(regexp[1])\n .slice(1);\n\n // Next, parse each command in turn\n for (i=0, n=path.length; i len) {\n for (j=1, m=parsed.length; j 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = (-sin_th) / ry;\n var a11 = (cos_th) / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n\n var d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n var xc = 0.5 * (x0 + x1) - sfactor * (y1-y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1-x0);\n\n var th0 = Math.atan2(y0-yc, x0-xc);\n var th1 = Math.atan2(y1-yc, x1-xc);\n\n var th_arc = th1-th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += 2 * Math.PI;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= 2 * Math.PI;\n }\n\n var segs = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n var result = [];\n for (var i=0; i epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {path} from 'd3-path';\n\nfunction rectangleX(d) {\n return d.x;\n}\n\nfunction rectangleY(d) {\n return d.y;\n}\n\nfunction rectangleWidth(d) {\n return d.width;\n}\n\nfunction rectangleHeight(d) {\n return d.height;\n}\n\nfunction constant(_) {\n return function() { return _; };\n}\n\nexport default function() {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n cornerRadius = constant(0),\n context = null;\n\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n cr = +cornerRadius.call(this, _);\n\n if (!context) context = buffer = path();\n\n if (cr <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + cr, y1);\n context.lineTo(x2 - cr, y1);\n context.quadraticCurveTo(x2, y1, x2, y1 + cr);\n context.lineTo(x2, y2 - cr);\n context.quadraticCurveTo(x2, y2, x2 - cr, y2);\n context.lineTo(x1 + cr, y2);\n context.quadraticCurveTo(x1, y2, x1, y2 - cr);\n context.lineTo(x1, y1 + cr);\n context.quadraticCurveTo(x1, y1, x1 + cr, y1);\n context.closePath();\n }\n\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n\n rectangle.x = function(_) {\n if (arguments.length) {\n x = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return x;\n }\n };\n\n rectangle.y = function(_) {\n if (arguments.length) {\n y = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return y;\n }\n };\n\n rectangle.width = function(_) {\n if (arguments.length) {\n width = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return width;\n }\n };\n\n rectangle.height = function(_) {\n if (arguments.length) {\n height = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return height;\n }\n };\n\n rectangle.cornerRadius = function(_) {\n if (arguments.length) {\n cornerRadius = typeof _ === 'function' ? _ : constant(+_);\n return rectangle;\n } else {\n return cornerRadius;\n }\n };\n\n rectangle.context = function(_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n\n return rectangle;\n}\n","import {path} from 'd3-path';\n\nvar pi = Math.PI;\n\nexport default function() {\n var x,\n y,\n size,\n defined,\n context = null,\n ready, x1, y1, r1;\n\n function point(x2, y2, w2) {\n var r2 = w2 / 2;\n\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n\n if (ux || uy) {\n // get normal vector\n var ud = Math.sqrt(ux * ux + uy * uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - pi, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + pi);\n } else {\n context.arc(x2, y2, r2, 0, 2*pi);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) context = 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) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n\n trail.x = function(_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n\n trail.y = function(_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n\n trail.size = function(_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n\n trail.defined = function(_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n\n trail.context = function(_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n\n return trail;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import curves from './curves';\nimport symbols from './symbols';\n\nimport {default as vg_rect} from './rectangle';\nimport {default as vg_trail} from './trail';\n\nimport {\n arc as d3_arc,\n symbol as d3_symbol,\n area as d3_area,\n line as d3_line\n} from 'd3-shape';\n\nfunction x(item) { return item.x || 0; }\nfunction y(item) { return item.y || 0; }\nfunction w(item) { return item.width || 0; }\nfunction ts(item) { return item.size || 1; }\nfunction h(item) { return item.height || 0; }\nfunction xw(item) { return (item.x || 0) + (item.width || 0); }\nfunction yh(item) { return (item.y || 0) + (item.height || 0); }\nfunction sa(item) { return item.startAngle || 0; }\nfunction ea(item) { return item.endAngle || 0; }\nfunction pa(item) { return item.padAngle || 0; }\nfunction ir(item) { return item.innerRadius || 0; }\nfunction or(item) { return item.outerRadius || 0; }\nfunction cr(item) { return item.cornerRadius || 0; }\nfunction def(item) { return !(item.defined === false); }\nfunction size(item) { return item.size == null ? 64 : item.size; }\nfunction type(item) { return symbols(item.shape || 'circle'); }\n\nvar arcShape = d3_arc().startAngle(sa).endAngle(ea).padAngle(pa)\n .innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = d3_area().x(x).y1(y).y0(yh).defined(def),\n areahShape = d3_area().y(y).x1(x).x0(xw).defined(def),\n lineShape = d3_line().x(x).y(y).defined(def),\n rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(cr),\n symbolShape = d3_symbol().type(type).size(size),\n trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\n\nexport function arc(context, item) {\n return arcShape.context(context)(item);\n}\n\nexport function area(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape)\n .curve(curves(interp, item.orient, item.tension))\n .context(context)(items);\n}\n\nexport function line(context, items) {\n var item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension))\n .context(context)(items);\n}\n\nexport function rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\n\nexport function shape(context, item) {\n return (item.mark.shape || item.shape)\n .context(context)(item);\n}\n\nexport function symbol(context, item) {\n return symbolShape.context(context)(item);\n}\n\nexport function trail(context, items) {\n return trailShape.context(context)(items);\n}\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function(bounds, item) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n bounds.expand(item.strokeWidth != null ? +item.strokeWidth : 1);\n }\n return bounds;\n}\n","var bounds,\n tau = Math.PI * 2,\n halfPi = tau / 4,\n circleThreshold = tau - 1e-8;\n\nexport default function context(_) {\n bounds = _;\n return context;\n}\n\nfunction noop() {}\n\nfunction add(x, y) { bounds.add(x, y); }\n\ncontext.beginPath = noop;\n\ncontext.closePath = noop;\n\ncontext.moveTo = add;\n\ncontext.lineTo = add;\n\ncontext.rect = function(x, y, w, h) {\n add(x, y);\n add(x + w, y + h);\n};\n\ncontext.quadraticCurveTo = function(x1, y1, x2, y2) {\n add(x1, y1);\n add(x2, y2);\n};\n\ncontext.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) {\n add(x1, y1);\n add(x2, y2);\n add(x3, y3);\n};\n\ncontext.arc = function(cx, cy, r, sa, ea, ccw) {\n if (Math.abs(ea - sa) > circleThreshold) {\n add(cx - r, cy - r);\n add(cx + r, cy + r);\n return;\n }\n\n var xmin = Infinity, xmax = -Infinity,\n ymin = Infinity, ymax = -Infinity,\n s, i, x, y;\n\n function update(a) {\n x = r * Math.cos(a);\n y = r * Math.sin(a);\n if (x < xmin) xmin = x;\n if (x > xmax) xmax = x;\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n\n // Sample end points and interior points aligned with 90 degrees\n update(sa);\n update(ea);\n\n if (ea !== sa) {\n sa = sa % tau; if (sa < 0) sa += tau;\n ea = ea % tau; if (ea < 0) ea += tau;\n\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa; sa = ea; ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= tau;\n s = sa - (sa % halfPi);\n for (i=0; i<4 && s>ea; ++i, s-=halfPi) update(s);\n } else {\n s = sa - (sa % halfPi) + halfPi;\n for (i=0; i<4 && s 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\n","import color from './color';\n\nvar Empty = [];\n\nexport default function(context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n\n if (lw <= 0) return false;\n\n opacity *= (item.strokeOpacity==null ? 1 : item.strokeOpacity);\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color(context, item, item.stroke);\n\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\n","function compare(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\n\nexport function zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n\n var items = scene.items,\n output = [], item, i, n;\n\n for (i=0, n=items.length; i= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n\n if (items === zitems) {\n for (items=scene.items, i=items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n\n return null;\n}\n","import fill from './fill';\nimport stroke from './stroke';\nimport {visit} from '../visit';\n\nexport function drawAll(path) {\n return function(context, scene, bounds) {\n visit(scene, function(item) {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\n\nexport function drawOne(path) {\n return function(context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\n\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n\n if (path(context, items)) return;\n\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\n","import {pickVisit} from '../visit';\n\nvar trueFunc = function() { return true; };\n\nexport function pick(test) {\n if (!test) test = trueFunc;\n\n return function(context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n\n return pickVisit(scene, function(item) {\n var b = item.bounds;\n // first hit test against bounding box\n if ((b && !b.contains(gx, gy)) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\n\nexport function hitPath(path, filled) {\n return function(context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = (filled == null) ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke, lw, lc;\n\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n\n return path(context, o) ? false :\n (fill && context.isPointInPath(x, y)) ||\n (stroke && context.isPointInStroke(x, y));\n };\n}\n\nexport function pickPath(path) {\n return pick(hitPath(path));\n}\n","export default function(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}","import translate from './translate';\n\nexport default function(item) {\n return translate(item.x || 0, item.y || 0);\n}","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\nimport translateItem from '../util/svg/translateItem';\n\nexport default function(type, shape) {\n\n function attr(emit, item) {\n emit('transform', translateItem(item));\n emit('d', shape(null, item));\n }\n\n function bound(bounds, item) {\n shape(context(bounds), item);\n return boundStroke(bounds, item)\n .translate(item.x || 0, item.y || 0);\n }\n\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0;\n context.translate(x, y);\n context.beginPath();\n shape(context, item);\n context.translate(-x, -y);\n }\n\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw)\n };\n\n}\n","import {arc} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('arc', arc);\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport {drawOne} from '../util/canvas/draw';\nimport {hitPath} from '../util/canvas/pick';\n\nexport default function(type, shape, tip) {\n\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(context(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n\n var hit = hitPath(draw);\n\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n tip: tip\n };\n\n}\n\n\n","import {area} from '../path/shapes';\nimport {pickArea} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('area', area, pickArea);\n","export function pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity, hit, d;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n\n return hit;\n}\n\nexport function pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length, dx, dy, dd;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n\n return null;\n}\n\nexport function pickTrail(a, p) {\n var i = a.length, dx, dy, dd;\n\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx*dx) return a[i];\n }\n\n return null;\n}\n","import {isFunction} from 'vega-util';\n\nvar clip_id = 1;\n\nexport function resetSVGClipId() {\n clip_id = 1;\n}\n\nexport default function(renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {id: id});\n\n if (isFunction(clip)) {\n c.path = clip(null);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n\n return 'url(#' + id + ')';\n}\n","import {rectangle} from '../path/shapes';\nimport boundStroke from '../bound/boundStroke';\nimport {visit, pickVisit} from '../util/visit';\nimport stroke from '../util/canvas/stroke';\nimport fill from '../util/canvas/fill';\nimport {hitPath} from '../util/canvas/pick';\nimport clip from '../util/svg/clip';\nimport translateItem from '../util/svg/translateItem';\n\nvar StrokeOffset = 0.5;\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n}\n\nfunction background(emit, item) {\n var offset = item.stroke ? StrokeOffset : 0;\n emit('class', 'background');\n emit('d', rectangle(null, item, offset, offset));\n}\n\nfunction foreground(emit, item, renderer) {\n var url = item.clip ? clip(renderer, item, item) : null;\n emit('clip-path', url);\n}\n\nfunction bound(bounds, group) {\n if (!group.clip && group.items) {\n var items = group.items;\n for (var j=0, m=items.length; j 0) {\n backgroundPath(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n }\n\n // set clip and bounds\n if (group.clip) {\n context.beginPath();\n context.rect(0, 0, w, h);\n context.clip();\n }\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, function(item) {\n renderer.draw(context, item, bounds);\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n\n var handler = this,\n cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n\n return pickVisit(scene, function(group) {\n var hit, dx, dy, b;\n\n // first hit test against bounding box\n // if a group is clipped, that should be handled by the bounds check.\n b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, so test sub-groups\n dx = (group.x || 0);\n dy = (group.y || 0);\n\n context.save();\n context.translate(dx, dy);\n\n dx = gx - dx;\n dy = gy - dy;\n\n // hit test against contained marks\n hit = pickVisit(group, function(mark) {\n return pickMark(mark, dx, dy)\n ? handler.pick(mark, x, y, dx, dy)\n : null;\n });\n\n // hit test against group background\n if (!hit && scene.interactive !== false\n && (group.fill || group.stroke)\n && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n context.restore();\n return hit || null;\n });\n}\n\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group')\n && mark.bounds && mark.bounds.contains(x, y);\n}\n\nexport default {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick,\n background: background,\n foreground: foreground\n};\n","import {visit} from '../util/visit';\nimport {pick} from '../util/canvas/pick';\nimport translate from '../util/svg/translate';\n\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || image.url !== item.url) {\n image = {loaded: false, width: 0, height: 0};\n renderer.loadImage(item.url).then(function(image) {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\n\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr(emit, item, renderer) {\n var image = getImage(item, renderer),\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : image.width) || 0,\n h = (item.height != null ? item.height : image.height) || 0,\n a = item.aspect === false ? 'none' : 'xMidYMid';\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n emit('href', image.src || '', 'http://www.w3.org/1999/xlink', 'xlink:href');\n emit('transform', translate(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', a);\n}\n\nfunction bound(bounds, item) {\n var image = item.image,\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : (image && image.width)) || 0,\n h = (item.height != null ? item.height : (image && image.height)) || 0;\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw(context, scene, bounds) {\n var renderer = this;\n\n visit(scene, function(item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n var image = getImage(item, renderer),\n x = item.x || 0,\n y = item.y || 0,\n w = (item.width != null ? item.width : image.width) || 0,\n h = (item.height != null ? item.height : image.height) || 0,\n opacity, ar0, ar1, t;\n\n x -= imageXOffset(item.align, w);\n y -= imageYOffset(item.baseline, h);\n\n if (item.aspect !== false) {\n ar0 = image.width / image.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n\n if (image.loaded) {\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.drawImage(image, x, y, w, h);\n }\n });\n}\n\nexport default {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(),\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\n","import {line} from '../path/shapes';\nimport {pickLine} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('line', line, pickLine);\n","import boundStroke from '../bound/boundStroke';\nimport context from '../bound/boundContext';\nimport pathParse from '../path/parse';\nimport pathRender from '../path/render';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\nimport translateItem from '../util/svg/translateItem';\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n emit('d', item.path);\n}\n\nfunction path(context, item) {\n var path = item.path;\n if (path == null) return true;\n\n var cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = pathParse(path)).path = path;\n }\n pathRender(context, cache, item.x, item.y);\n}\n\nfunction bound(bounds, item) {\n return path(context(bounds), item)\n ? bounds.set(0, 0, 0, 0)\n : boundStroke(bounds, item);\n}\n\nexport default {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(path),\n pick: pickPath(path)\n};\n","import boundStroke from '../bound/boundStroke';\nimport {rectangle} from '../path/shapes';\nimport {drawAll} from '../util/canvas/draw';\nimport {pickPath} from '../util/canvas/pick';\n\nfunction attr(emit, item) {\n emit('d', rectangle(null, item));\n}\n\nfunction bound(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(\n x = item.x || 0,\n y = item.y || 0,\n (x + item.width) || 0,\n (y + item.height) || 0\n ), item);\n}\n\nfunction draw(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\n\nexport default {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw)\n};\n","import boundStroke from '../bound/boundStroke';\nimport {visit} from '../util/visit';\nimport {pick} from '../util/canvas/pick';\nimport stroke from '../util/canvas/stroke';\nimport translateItem from '../util/svg/translateItem';\n\nfunction attr(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x||0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y||0) : 0);\n}\n\nfunction bound(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(\n x1 = item.x || 0,\n y1 = item.y || 0,\n item.x2 != null ? item.x2 : x1,\n item.y2 != null ? item.y2 : y1\n ), item);\n}\n\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\n\nfunction draw(context, scene, bounds) {\n visit(scene, function(item) {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n context.stroke();\n }\n });\n}\n\nfunction hit(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nexport default {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(hit)\n};\n","import {shape} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('shape', shape);\n","import {symbol} from '../path/shapes';\nimport markItemPath from './markItemPath';\n\nexport default markItemPath('symbol', symbol);\n","import {canvas} from 'vega-canvas';\n\nvar context,\n currFontHeight;\n\nexport var textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\n\nuseCanvas(true);\n\n// make dumb, simple estimate if no canvas is available\nfunction estimateWidth(item) {\n currFontHeight = fontSize(item);\n return estimate(textValue(item));\n}\n\nfunction estimate(text) {\n return ~~(0.8 * text.length * currFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item) {\n context.font = font(item);\n return measure(textValue(item));\n}\n\nfunction measure(text) {\n return context.measureText(text).width;\n}\n\nexport function fontSize(item) {\n return item.fontSize != null ? item.fontSize : 11;\n}\n\nfunction useCanvas(use) {\n context = use && (context = canvas(1,1)) ? context.getContext('2d') : null;\n textMetrics.width = context ? measureWidth : estimateWidth;\n}\n\nexport function textValue(item) {\n var s = item.text;\n if (s == null) {\n return '';\n } else {\n return item.limit > 0 ? truncate(item) : s + '';\n }\n}\n\nexport function truncate(item) {\n var limit = +item.limit,\n text = item.text + '',\n width;\n\n if (context) {\n context.font = font(item);\n width = measure;\n } else {\n currFontHeight = fontSize(item);\n width = estimate;\n }\n\n if (width(text) < limit) return text;\n\n var ellipsis = item.ellipsis || '\\u2026',\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length, mid;\n\n limit -= width(ellipsis);\n\n if (rtl) {\n while (lo < hi) {\n mid = (lo + hi >>> 1);\n if (width(text.slice(mid)) > limit) lo = mid + 1;\n else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;\n else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\n\nexport function fontFamily(item, quote) {\n var font = item.font;\n return (quote && font\n ? String(font).replace(/\"/g, '\\'')\n : font) || 'sans-serif';\n}\n\nexport function font(item, quote) {\n return '' +\n (item.fontStyle ? item.fontStyle + ' ' : '') +\n (item.fontVariant ? item.fontVariant + ' ' : '') +\n (item.fontWeight ? item.fontWeight + ' ' : '') +\n fontSize(item) + 'px ' +\n fontFamily(item, quote);\n}\n\nexport function offset(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(\n baseline === 'top' ? 0.79*h :\n baseline === 'middle' ? 0.30*h :\n baseline === 'bottom' ? -0.21*h : 0\n );\n}\n","import Bounds from '../Bounds';\nimport {font, offset, textMetrics, textValue} from '../util/text';\nimport {visit} from '../util/visit';\nimport fill from '../util/canvas/fill';\nimport {pick} from '../util/canvas/pick';\nimport stroke from '../util/canvas/stroke';\nimport translate from '../util/svg/translate';\n\nvar textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\n\nvar tempBounds = new Bounds();\n\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item),\n x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0,\n r = item.radius || 0, t;\n\n if (r) {\n t = (item.theta || 0) - Math.PI/2;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n\n emit('text-anchor', textAlign[item.align] || 'start');\n\n if (a) {\n t = translate(x, y) + ' rotate('+a+')';\n if (dx || dy) t += ' ' + translate(dx, dy);\n } else {\n t = translate(x + dx, y + dy);\n }\n emit('transform', t);\n}\n\nfunction bound(bounds, item, noRotate) {\n var h = textMetrics.height(item),\n a = item.align,\n r = item.radius || 0,\n x = item.x || 0,\n y = item.y || 0,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item) - Math.round(0.8*h), // use 4/5 offset\n w, t;\n\n if (r) {\n t = (item.theta || 0) - Math.PI/2;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n\n // horizontal alignment\n w = textMetrics.width(item);\n if (a === 'center') {\n dx -= (w / 2);\n } else if (a === 'right') {\n dx -= w;\n } else {\n // left by default, do nothing\n }\n\n bounds.set(dx+=x, dy+=y, dx+w, dy+h);\n if (item.angle && !noRotate) {\n bounds.rotate(item.angle*Math.PI/180, x, y);\n }\n return bounds.expand(noRotate || !w ? 0 : 1);\n}\n\nfunction draw(context, scene, bounds) {\n visit(scene, function(item) {\n var opacity, x, y, r, t, str;\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n if (!(str = textValue(item))) return; // get text string\n\n opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n\n context.font = font(item);\n context.textAlign = item.align || 'left';\n\n x = item.x || 0;\n y = item.y || 0;\n if ((r = item.radius)) {\n t = (item.theta || 0) - Math.PI/2;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * Math.PI/180);\n x = y = 0; // reset x, y\n }\n x += (item.dx || 0);\n y += (item.dy || 0) + offset(item);\n\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n if (item.angle) context.restore();\n });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var b = bound(tempBounds, item, true),\n a = -item.angle * Math.PI / 180,\n cos = Math.cos(a),\n sin = Math.sin(a),\n ix = item.x,\n iy = item.y,\n px = cos*gx - sin*gy + (ix - ix*cos + iy*sin),\n py = sin*gx + cos*gy + (iy - ix*sin - iy*cos);\n\n return b.contains(px, py);\n}\n\nexport default {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick(hit)\n};\n","import {trail} from '../path/shapes';\nimport {pickTrail} from '../util/pickPath';\nimport markMultiItemPath from './markMultiItemPath';\n\nexport default markMultiItemPath('trail', trail, pickTrail);\n","import arc from './arc';\nimport area from './area';\nimport group from './group';\nimport image from './image';\nimport line from './line';\nimport path from './path';\nimport rect from './rect';\nimport rule from './rule';\nimport shape from './shape';\nimport symbol from './symbol';\nimport text from './text';\nimport trail from './trail';\n\nexport default {\n arc: arc,\n area: area,\n group: group,\n image: image,\n line: line,\n path: path,\n rect: rect,\n rule: rule,\n shape: shape,\n symbol: symbol,\n text: text,\n trail: trail\n};\n","import Bounds from '../Bounds';\nimport marks from '../marks/index';\n\nexport default function(item, func, opt) {\n var type = marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n","import Bounds from '../Bounds';\nimport boundItem from './boundItem';\nimport marks from '../marks/index';\n\nvar DUMMY = {mark: null};\n\nexport default function(mark, bounds, opt) {\n var type = marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i, n, item, b;\n\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n\n bounds = bounds\n || mark.bounds && mark.bounds.clear()\n || new Bounds();\n\n if (hasItems) {\n for (i=0, n=items.length; i index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nexport function cssClass(mark) {\n return 'mark-' + mark.marktype\n + (mark.role ? ' role-' + mark.role : '')\n + (mark.name ? ' ' + mark.name : '');\n}\n","export default function(event, el) {\n var rect = el.getBoundingClientRect();\n return [\n event.clientX - rect.left - (el.clientLeft || 0),\n event.clientY - rect.top - (el.clientTop || 0)\n ];\n}\n","import {domCreate} from './util/dom';\nimport resolveItem from './util/resolveItem';\nimport {loader} from 'vega-loader';\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nexport default function Handler(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\n\nvar prototype = Handler.prototype;\n\n/**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\nprototype.initialize = function(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n};\n\n/**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\nprototype.element = function() {\n return this._el;\n};\n\n/**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\nprototype.canvas = function() {\n return this._el && this._el.firstChild;\n};\n\n/**\n * Get / set the origin coordinates of the visualization.\n */\nprototype.origin = function(origin) {\n if (arguments.length) {\n this._origin = origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n};\n\n/**\n * Get / set the scenegraph root.\n */\nprototype.scene = function(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n};\n\n/**\n * Add an event handler. Subclasses should override this method.\n */\nprototype.on = function(/*type, handler*/) {};\n\n/**\n * Remove an event handler. Subclasses should override this method.\n */\nprototype.off = function(/*type, handler*/) {};\n\n/**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\nprototype._handlerIndex = function(h, type, handler) {\n for (var i = h ? h.length : 0; --i>=0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\nprototype.handlers = function(type) {\n var h = this._handlers, a = [], k;\n if (type) {\n a.push.apply(a, h[this.eventName(type)]);\n } else {\n for (k in h) { a.push.apply(a, h[k]); }\n }\n return a;\n};\n\n/**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\nprototype.eventName = function(name) {\n var i = name.indexOf('.');\n return i < 0 ? name : name.slice(0,i);\n};\n\n/**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\nprototype.handleHref = function(event, item, href) {\n this._loader\n .sanitize(href, {context:'href'})\n .then(function(opt) {\n var e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (var name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n })\n .catch(function() { /* do nothing */ });\n};\n\n/**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\nprototype.handleTooltip = function(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n var value = (show && item && item.tooltip) || null;\n this._tooltip.call(this._obj, this, event, item, value);\n }\n};\n\n/**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\nprototype.getItemBoundingClientRect = function(item) {\n if (!(el = this.canvas())) return;\n\n var el, rect = el.getBoundingClientRect(),\n origin = this._origin,\n itemBounds = item.bounds,\n x = itemBounds.x1 + origin[0] + rect.left,\n y = itemBounds.y1 + origin[1] + rect.top,\n w = itemBounds.width(),\n h = itemBounds.height();\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x: x,\n y: y,\n width: w,\n height: h,\n left: x,\n top: y,\n right: x + w,\n bottom: y + h\n };\n};\n","import ResourceLoader from './ResourceLoader';\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nexport default function Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\n\nvar prototype = Renderer.prototype;\n\n/**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\nprototype.initialize = function(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n};\n\n/**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\nprototype.element = function() {\n return this._el;\n};\n\n/**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\nprototype.canvas = function() {\n return this._el && this._el.firstChild;\n};\n\n/**\n * Get / set the background color.\n */\nprototype.background = function(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n};\n\n/**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\nprototype.resize = function(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n};\n\n/**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\nprototype.dirty = function(/*item*/) {\n};\n\n/**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Renderer} - This renderer instance.\n */\nprototype.render = function(scene) {\n var r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function() { r._render(scene); };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n\n return r;\n};\n\n/**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\nprototype._render = function(/*scene*/) {\n // subclasses to override\n};\n\n/**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\nprototype.renderAsync = function(scene) {\n var r = this.render(scene);\n return this._ready\n ? this._ready.then(function() { return r; })\n : Promise.resolve(r);\n};\n\n/**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\nprototype._load = function(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n\n if (!r._ready) {\n // re-render the scene when loading completes\n var call = r._call;\n r._ready = r._loader.ready()\n .then(function(redraw) {\n if (redraw) call();\n r._ready = null;\n });\n }\n\n return p;\n};\n\n/**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\nprototype.sanitizeURL = function(uri) {\n return this._load('sanitizeURL', uri);\n};\n\n/**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\nprototype.loadImage = function(uri) {\n return this._load('loadImage', uri);\n};\n","import marks from '../marks/index';\nimport point from './point';\n\nexport default function(item, event, el, origin) {\n var mark = item && item.mark,\n mdef, p;\n\n if (mark && (mdef = marks[mark.marktype]).tip) {\n p = point(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n\n return item;\n}\n","export var Events = [\n 'keydown',\n 'keypress',\n 'keyup',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'click',\n 'dblclick',\n 'wheel',\n 'mousewheel',\n 'touchstart',\n 'touchmove',\n 'touchend'\n];\n\nexport var TooltipShowEvent = 'mousemove';\n\nexport var TooltipHideEvent = 'mouseout';\n\nexport var HrefEvent = 'click';\n","import Handler from './Handler';\nimport Marks from './marks/index';\nimport {Events, HrefEvent, TooltipShowEvent, TooltipHideEvent} from './util/events';\nimport point from './util/point';\nimport {domFind} from './util/dom';\nimport {inherits} from 'vega-util';\n\nexport default function CanvasHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n}\n\nvar prototype = inherits(CanvasHandler, Handler);\n\nprototype.initialize = function(el, origin, obj) {\n // add event listeners\n var canvas = this._canvas = el && domFind(el, 'canvas');\n if (canvas) {\n var that = this;\n this.events.forEach(function(type) {\n canvas.addEventListener(type, function(evt) {\n if (prototype[type]) {\n prototype[type].call(that, evt);\n } else {\n that.fire(type, evt);\n }\n });\n });\n }\n\n return Handler.prototype.initialize.call(this, el, origin, obj);\n};\n\n// return the backing canvas instance\nprototype.canvas = function() {\n return this._canvas;\n};\n\n// retrieve the current canvas context\nprototype.context = function() {\n return this._canvas.getContext('2d');\n};\n\n// supported events\nprototype.events = Events;\n\n// to keep old versions of firefox happy\nprototype.DOMMouseScroll = function(evt) {\n this.fire('mousewheel', evt);\n};\n\nfunction move(moveEvent, overEvent, outEvent) {\n return function(evt) {\n var a = this._active,\n p = this.pickEvent(evt);\n\n if (p === a) {\n // active item and picked item are the same\n this.fire(moveEvent, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n this.fire(outEvent, evt);\n }\n this._active = p; // set new active item\n this.fire(overEvent, evt); // fire over for new active item\n this.fire(moveEvent, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(type) {\n return function(evt) {\n this.fire(type, evt);\n this._active = null;\n };\n}\n\nprototype.mousemove = move('mousemove', 'mouseover', 'mouseout');\nprototype.dragover = move('dragover', 'dragenter', 'dragleave');\n\nprototype.mouseout = inactive('mouseout');\nprototype.dragleave = inactive('dragleave');\n\nprototype.mousedown = function(evt) {\n this._down = this._active;\n this.fire('mousedown', evt);\n};\n\nprototype.click = function(evt) {\n if (this._down === this._active) {\n this.fire('click', evt);\n this._down = null;\n }\n};\n\nprototype.touchstart = function(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n\n this.fire('touchstart', evt, true);\n};\n\nprototype.touchmove = function(evt) {\n this.fire('touchmove', evt, true);\n};\n\nprototype.touchend = function(evt) {\n this.fire('touchend', evt, true);\n this._touch = null;\n};\n\n// fire an event\nprototype.fire = function(type, evt, touch) {\n var a = touch ? this._touch : this._active,\n h = this._handlers[type], i, len;\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (i=0, len=h.length; i= 0) {\n h.splice(i, 1);\n }\n\n return this;\n};\n\nprototype.pickEvent = function(evt) {\n var p = point(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n};\n\n// find the scenegraph item at the current mouse position\n// x, y -- the absolute x, y mouse coordinates on the canvas element\n// gx, gy -- the relative coordinates within the current group\nprototype.pick = function(scene, x, y, gx, gy) {\n var g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n};\n","function devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\n\nexport default function(canvas, width, height, origin, scaleFactor) {\n var inDOM = typeof HTMLElement !== 'undefined'\n && canvas instanceof HTMLElement\n && canvas.parentNode != null;\n\n var context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor;\n\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n context.pixelRatio = ratio;\n context.setTransform(\n ratio, 0, 0, ratio,\n ratio * origin[0],\n ratio * origin[1]\n );\n\n return canvas;\n}\n","import Renderer from './Renderer';\nimport Bounds from './Bounds';\nimport marks from './marks/index';\n\nimport {domClear} from './util/dom';\nimport clip from './util/canvas/clip';\nimport resize from './util/canvas/resize';\nimport {canvas} from 'vega-canvas';\nimport {inherits} from 'vega-util';\n\nexport default function CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._redraw = false;\n this._dirty = new Bounds();\n}\n\nvar prototype = inherits(CanvasRenderer, Renderer),\n base = Renderer.prototype,\n tempBounds = new Bounds();\n\nprototype.initialize = function(el, width, height, origin, scaleFactor) {\n this._canvas = canvas(1, 1); // instantiate a small canvas\n if (el) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n // this method will invoke resize to size the canvas appropriately\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n};\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n resize(this._canvas, this._width, this._height, this._origin, this._scale);\n this._redraw = true;\n return this;\n};\n\nprototype.canvas = function() {\n return this._canvas;\n};\n\nprototype.context = function() {\n return this._canvas ? this._canvas.getContext('2d') : null;\n};\n\nprototype.dirty = function(item) {\n var b = translate(item.bounds, item.mark.group);\n this._dirty.union(b);\n};\n\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clipping path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n\n return b;\n}\n\nfunction translate(bounds, group) {\n if (group == null) return bounds;\n var b = tempBounds.clear().union(bounds);\n for (; group != null; group = group.mark.group) {\n b.translate(group.x || 0, group.y || 0);\n }\n return b;\n}\n\nprototype._render = function(scene) {\n var g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n b = this._dirty;\n\n // setup\n g.save();\n if (this._redraw || b.empty()) {\n this._redraw = false;\n b = null;\n } else {\n b = clipToBounds(g, b, o);\n }\n\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b);\n\n // takedown\n g.restore();\n\n this._dirty.clear();\n return this;\n};\n\nprototype.draw = function(ctx, scene, bounds) {\n var mark = marks[scene.marktype];\n if (scene.clip) clip(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds);\n if (scene.clip) ctx.restore();\n};\n\nprototype.clear = function(x, y, w, h) {\n var g = this.context();\n g.clearRect(x, y, w, h);\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n};\n","import Handler from './Handler';\nimport {domFind} from './util/dom';\nimport {HrefEvent, TooltipShowEvent, TooltipHideEvent} from './util/events';\nimport {inherits} from 'vega-util';\n\nexport default function SVGHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n var h = this;\n h._hrefHandler = listener(h, function(evt, item) {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, function(evt, item) {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\nvar prototype = inherits(SVGHandler, Handler);\n\nprototype.initialize = function(el, origin, obj) {\n var svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler.prototype.initialize.call(this, el, origin, obj);\n};\n\nprototype.canvas = function() {\n return this._svg;\n};\n\n// wrap an event listener for the SVG DOM\nfunction listener(context, handler) {\n return function(evt) {\n var target = evt.target,\n item = target.__data__;\n evt.vegaType = evt.type;\n item = Array.isArray(item) ? item[0] : item;\n handler.call(context._obj, evt, item);\n };\n}\n\n// add an event handler\nprototype.on = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n\n if (i < 0) {\n var x = {\n type: type,\n handler: handler,\n listener: listener(this, handler)\n };\n\n (h[name] || (h[name] = [])).push(x);\n if (this._svg) {\n this._svg.addEventListener(name, x.listener);\n }\n }\n\n return this;\n};\n\n// remove an event handler\nprototype.off = function(type, handler) {\n var name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n\n return this;\n};\n","import {isFunction} from 'vega-util';\n\nexport default function(context, scene) {\n var clip = scene.clip;\n\n context.save();\n context.beginPath();\n\n if (isFunction(clip)) {\n clip(context);\n } else {\n var group = scene.group;\n context.rect(0, 0, group.width || 0, group.height || 0);\n }\n\n context.clip();\n}\n","// generate string for an opening xml tag\n// tag: the name of the xml tag\n// attr: hash of attribute name-value pairs to include\n// raw: additional raw string to include in tag markup\nexport function openTag(tag, attr, raw) {\n var s = '<' + tag, key, val;\n if (attr) {\n for (key in attr) {\n val = attr[key];\n if (val != null) {\n s += ' ' + key + '=\"' + val + '\"';\n }\n }\n }\n if (raw) s += ' ' + raw;\n return s + '>';\n}\n\n// generate string for closing xml tag\n// tag: the name of the xml tag\nexport function closeTag(tag) {\n return '';\n}\n","export default {\n 'version': '1.1',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink'\n};","export var styles = {\n 'fill': 'fill',\n 'fillOpacity': 'fill-opacity',\n 'stroke': 'stroke',\n 'strokeOpacity': 'stroke-opacity',\n 'strokeWidth': 'stroke-width',\n 'strokeCap': 'stroke-linecap',\n 'strokeJoin': 'stroke-linejoin',\n 'strokeDash': 'stroke-dasharray',\n 'strokeDashOffset': 'stroke-dashoffset',\n 'strokeMiterLimit': 'stroke-miterlimit',\n 'opacity': 'opacity'\n};\n\nexport var styleProperties = Object.keys(styles);\n","import Renderer from './Renderer';\nimport marks from './marks/index';\nimport {domChild, domClear, domCreate, cssClass} from './util/dom';\nimport {openTag, closeTag} from './util/tags';\nimport {fontFamily, fontSize, textValue} from './util/text';\nimport {visit} from './util/visit';\nimport clip from './util/svg/clip';\nimport metadata from './util/svg/metadata';\nimport {styles, styleProperties} from './util/svg/styles';\nimport {inherits} from 'vega-util';\n\nvar ns = metadata.xmlns;\n\nexport default function SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 1;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\n\nvar prototype = inherits(SVGRenderer, Renderer);\nvar base = Renderer.prototype;\n\nprototype.initialize = function(el, width, height, padding) {\n if (el) {\n this._svg = domChild(el, 0, 'svg', ns);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n // set the svg root group\n this._root = domChild(this._svg, 0, 'g', ns);\n domClear(this._svg, 1);\n }\n\n // create the svg definitions cache\n this._defs = {\n gradient: {},\n clipping: {}\n };\n\n // set background color if defined\n this.background(this._bgcolor);\n\n return base.initialize.call(this, el, width, height, padding);\n};\n\nprototype.background = function(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n};\n\nprototype.resize = function(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n\n if (this._svg) {\n this._svg.setAttribute('width', this._width * this._scale);\n this._svg.setAttribute('height', this._height * this._scale);\n this._svg.setAttribute('viewBox', '0 0 ' + this._width + ' ' + this._height);\n this._root.setAttribute('transform', 'translate(' + this._origin + ')');\n }\n\n this._dirty = [];\n\n return this;\n};\n\nprototype.canvas = function() {\n return this._svg;\n};\n\nprototype.svg = function() {\n if (!this._svg) return null;\n\n var attr = {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: '0 0 ' + this._width + ' ' + this._height\n };\n for (var key in metadata) {\n attr[key] = metadata[key];\n }\n\n var bg = !this._bgcolor ? ''\n : (openTag('rect', {\n width: this._width,\n height: this._height,\n style: 'fill: ' + this._bgcolor + ';'\n }) + closeTag('rect'));\n\n return openTag('svg', attr) + bg + this._svg.innerHTML + closeTag('svg');\n};\n\n\n// -- Render entry point --\n\nprototype._render = function(scene) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._resetDefs();\n this.draw(this._root, scene);\n domClear(this._root, 1);\n }\n\n this.updateDefs();\n\n this._dirty = [];\n ++this._dirtyID;\n\n return this;\n};\n\n// -- Manage SVG definitions ('defs') block --\n\nprototype.updateDefs = function() {\n var svg = this._svg,\n defs = this._defs,\n el = defs.el,\n index = 0, id;\n\n for (id in defs.gradient) {\n if (!el) defs.el = (el = domChild(svg, 0, 'defs', ns));\n updateGradient(el, defs.gradient[id], index++);\n }\n\n for (id in defs.clipping) {\n if (!el) defs.el = (el = domChild(svg, 0, 'defs', ns));\n updateClipping(el, defs.clipping[id], index++);\n }\n\n // clean-up\n if (el) {\n if (index === 0) {\n svg.removeChild(el);\n defs.el = null;\n } else {\n domClear(el, index);\n }\n }\n};\n\nfunction updateGradient(el, grad, index) {\n var i, n, stop;\n\n el = domChild(el, index, 'linearGradient', ns);\n el.setAttribute('id', grad.id);\n el.setAttribute('x1', grad.x1);\n el.setAttribute('x2', grad.x2);\n el.setAttribute('y1', grad.y1);\n el.setAttribute('y2', grad.y2);\n\n for (i=0, n=grad.stops.length; i 1;\n}\n\n\n// -- Set attributes & styles on SVG elements ---\n\nvar element = null, // temp var for current SVG element\n values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nvar mark_extras = {\n group: function(mdef, el, item) {\n values = el.__values__; // use parent's values hash\n\n element = el.childNodes[1];\n mdef.foreground(emit, item, this);\n\n element = el.childNodes[0];\n mdef.background(emit, item, this);\n\n var value = item.mark.interactive === false ? 'none' : null;\n if (value !== values.events) {\n element.style.setProperty('pointer-events', value);\n values.events = value;\n }\n },\n text: function(mdef, el, item) {\n var value;\n\n value = textValue(item);\n if (value !== values.text) {\n el.textContent = value;\n values.text = value;\n }\n\n setStyle(el, 'font-family', fontFamily(item));\n setStyle(el, 'font-size', fontSize(item) + 'px');\n setStyle(el, 'font-style', item.fontStyle);\n setStyle(el, 'font-variant', item.fontVariant);\n setStyle(el, 'font-weight', item.fontWeight);\n }\n};\n\nfunction setStyle(el, name, value) {\n if (value !== values[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values[name] = value;\n }\n}\n\nprototype._update = function(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element = el;\n values = el.__values__;\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n var extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg css styles\n // note: element may be modified by 'extra' method\n this.style(element, item);\n};\n\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values[name]) return;\n\n if (value != null) {\n // if value is provided, update DOM attribute\n if (ns) {\n element.setAttributeNS(ns, name, value);\n } else {\n element.setAttribute(name, value);\n }\n } else {\n // else remove DOM attribute\n if (ns) {\n element.removeAttributeNS(ns, name);\n } else {\n element.removeAttribute(name);\n }\n }\n\n // note current value for future comparison\n values[name] = value;\n}\n\nprototype.style = function(el, o) {\n if (o == null) return;\n var i, n, prop, name, value;\n\n for (i=0, n=styleProperties.length; i 0) ? openTag('defs') + defs + closeTag('defs') : '';\n};\n\nvar object;\n\nfunction emit(name, value, ns, prefixed) {\n object[prefixed || name] = value;\n}\n\nprototype.attributes = function(attr, item) {\n object = {};\n attr(emit, item, this);\n return object;\n};\n\nprototype.href = function(item) {\n var that = this,\n href = item.href,\n attr;\n\n if (href) {\n if (attr = that._hrefs && that._hrefs[href]) {\n return attr;\n } else {\n that.sanitizeURL(href).then(function(attr) {\n // rewrite to use xlink namespace\n // note that this will be deprecated in SVG 2.0\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (that._hrefs || (that._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n};\n\nprototype.mark = function(scene) {\n var renderer = this,\n mdef = marks[scene.marktype],\n tag = mdef.tag,\n defs = this._defs,\n str = '',\n style;\n\n if (tag !== 'g' && scene.interactive === false) {\n style = 'style=\"pointer-events: none;\"';\n }\n\n // render opening group tag\n str += openTag('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip(renderer, scene, scene.group) : null\n }, style);\n\n // render contained elements\n function process(item) {\n var href = renderer.href(item);\n if (href) str += openTag('a', href);\n\n style = (tag !== 'g') ? applyStyles(item, scene, tag, defs) : null;\n str += openTag(tag, renderer.attributes(mdef.attr, item), style);\n\n if (tag === 'text') {\n str += escape_text(textValue(item));\n } else if (tag === 'g') {\n str += openTag('path', renderer.attributes(mdef.background, item),\n applyStyles(item, scene, 'bgrect', defs)) + closeTag('path');\n\n str += openTag('g', renderer.attributes(mdef.foreground, item))\n + renderer.markGroup(item)\n + closeTag('g');\n }\n\n str += closeTag(tag);\n if (href) str += closeTag('a');\n }\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return str + closeTag('g');\n};\n\nprototype.markGroup = function(scene) {\n var renderer = this,\n str = '';\n\n visit(scene, function(item) {\n str += renderer.mark(item);\n });\n\n return str;\n};\n\nfunction applyStyles(o, mark, tag, defs) {\n if (o == null) return '';\n var i, n, prop, name, value, s = '';\n\n if (tag === 'bgrect' && mark.interactive === false) {\n s += 'pointer-events: none; ';\n }\n\n if (tag === 'text') {\n s += 'font-family: ' + fontFamily(o) + '; ';\n s += 'font-size: ' + fontSize(o) + 'px; ';\n if (o.fontStyle) s += 'font-style: ' + o.fontStyle + '; ';\n if (o.fontVariant) s += 'font-variant: ' + o.fontVariant + '; ';\n if (o.fontWeight) s += 'font-weight: ' + o.fontWeight + '; ';\n }\n\n for (i=0, n=styleProperties.length; i/g, '>');\n}\n","import CanvasHandler from './CanvasHandler';\nimport CanvasRenderer from './CanvasRenderer';\nimport SVGHandler from './SVGHandler';\nimport SVGRenderer from './SVGRenderer';\nimport SVGStringRenderer from './SVGStringRenderer';\n\nvar Canvas = 'canvas';\nvar PNG = 'png';\nvar SVG = 'svg';\nvar None = 'none';\n\nexport var RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n None: None\n};\n\nvar modules = {};\n\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\n\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\n\nmodules[None] = {};\n\nexport function renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\n","import Bounds from '../Bounds';\nimport boundContext from './boundContext';\nimport {isFunction} from 'vega-util';\n\nvar clipBounds = new Bounds();\n\nexport default function(mark) {\n var clip = mark.clip;\n\n if (isFunction(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n\n mark.bounds.intersect(clipBounds);\n}\n","import pathParse from '../path/parse';\nimport {isNumber, isObject} from 'vega-util';\n\nvar TOLERANCE = 1e-9;\n\nexport function sceneEqual(a, b, key) {\n return (a === b) ? true\n : (key === 'path') ? pathEqual(a, b)\n : (a instanceof Date && b instanceof Date) ? +a === +b\n : (isNumber(a) && isNumber(b)) ? Math.abs(a - b) <= TOLERANCE\n : (!a || !b || !isObject(a) && !isObject(b)) ? a == b\n : (a == null || b == null) ? false\n : objectEqual(a, b);\n}\n\nexport function pathEqual(a, b) {\n return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key, i;\n\n if (ka.length !== kb.length) return false;\n\n ka.sort();\n kb.sort();\n\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n\n return typeof a === typeof b;\n}\n","import {Group, LegendRole} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {boundClip, Marks} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nexport default function Bound(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Bound, Transform);\n\nprototype.transform = function(_, pulse) {\n var view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound,\n markBounds = mark.bounds, rebound;\n\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(function(item) {\n item.bounds.clear().union(markBounds);\n });\n }\n\n else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, function(item) { view.dirty(item); });\n markBounds.clear();\n mark.items.forEach(function(item) {\n markBounds.union(boundItem(item, bound));\n });\n\n // force reflow for legends to propagate any layout changes\n // suppress other types to prevent overall layout jumpiness\n if (mark.role === LegendRole) pulse.reflow();\n }\n\n else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n\n pulse.visit(pulse.ADD, function(item) {\n markBounds.union(boundItem(item, bound));\n });\n\n pulse.visit(pulse.MOD, function(item) {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(function(item) { markBounds.union(item.bounds); });\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n\n return pulse.modifies('bounds');\n};\n\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\nvar COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nexport default function Identifier(params) {\n Transform.call(this, 0, params);\n}\n\nIdentifier.Definition = {\n \"type\": \"Identifier\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"as\", \"type\": \"string\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Identifier, Transform);\n\nprototype.transform = function(_, pulse) {\n var counter = getCounter(pulse.dataflow),\n id = counter.value,\n as = _.as;\n\n pulse.visit(pulse.ADD, function(t) {\n if (!t[as]) t[as] = ++id;\n });\n\n counter.set(this.value = id);\n return pulse;\n};\n\nfunction getCounter(view) {\n var counter = view._signals[COUNTER_NAME];\n if (!counter) {\n view._signals[COUNTER_NAME] = (counter = view.add(0));\n }\n return counter;\n}\n","import {Group} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {Item, GroupItem} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nexport default function Mark(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Mark, Transform);\n\nprototype.transform = function(_, pulse) {\n var mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this;\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n var Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, function(item) { Init.call(item, mark); });\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n};\n\nfunction lookup(_) {\n var g = _.groups, p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0])\n : g && p ? g.lookup(p)\n : null;\n}\n","import {Top, Bottom} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {Bounds} from 'vega-scenegraph';\nimport {inherits, peek} from 'vega-util';\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nexport default function Overlap(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Overlap, Transform);\n\nvar methods = {\n parity: function(items) {\n return items.filter(function(item, i) {\n return i % 2 ? (item.opacity = 0) : 1;\n });\n },\n greedy: function(items) {\n var a;\n return items.filter(function(b, i) {\n if (!i || !intersect(a.bounds, b.bounds)) {\n a = b;\n return 1;\n } else {\n return b.opacity = 0;\n }\n });\n }\n};\n\n// compute bounding box intersection\n// allow 1 pixel of overlap tolerance\nfunction intersect(a, b) {\n return !(\n a.x2 - 1 < b.x1 ||\n a.x1 + 1 > b.x2 ||\n a.y2 - 1 < b.y1 ||\n a.y1 + 1 > b.y2\n );\n}\n\nfunction hasOverlap(items) {\n for (var i=1, n=items.length, a=items[0].bounds, b; i 1 && b.height() > 1;\n}\n\nfunction boundTest(scale, orient, tolerance) {\n var range = scale.range(),\n b = new Bounds();\n\n if (orient === Top || orient === Bottom) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n\n return function(item) {\n return b.encloses(item.bounds);\n };\n}\n\n// reset all items to be fully opaque\nfunction reset(source) {\n source.forEach(function(item) { item.opacity = 1; });\n return source;\n}\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nfunction reflow(pulse, _) {\n return pulse.reflow(_.modified()).modifies('opacity');\n}\n\nprototype.transform = function(_, pulse) {\n var reduce = methods[_.method] || methods.parity,\n source = pulse.materialize(pulse.SOURCE).source,\n items, test;\n\n if (!source) return;\n\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n\n if (_.method === 'greedy') {\n source = source.filter(hasBounds);\n }\n\n items = reset(source);\n pulse = reflow(pulse, _);\n\n if (items.length >= 3 && hasOverlap(items)) {\n do {\n items = reduce(items);\n } while (items.length >= 3 && hasOverlap(items));\n\n if (items.length < 3 && !peek(source).opacity) {\n if (items.length > 1) peek(items).opacity = 0;\n peek(source).opacity = 1;\n }\n }\n\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(function(item) {\n if (!test(item)) item.opacity = 0;\n })\n }\n\n return pulse;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nexport default function Render(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Render, Transform);\n\nprototype.transform = function(_, pulse) {\n var view = pulse.dataflow;\n\n pulse.visit(pulse.ALL, function(item) { view.dirty(item); });\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n var item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n};\n","import {\n All, Each, Flush, Column, Row,\n Group, AxisRole, LegendRole,\n RowHeader, RowFooter, RowTitle,\n ColHeader, ColFooter, ColTitle\n} from './constants';\nimport {isObject} from 'vega-util';\nimport {Bounds} from 'vega-scenegraph';\n\nfunction extractGroups(group) {\n var groups = group.items,\n n = groups.length,\n i = 0, mark, items;\n\n var views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i 1 && alignCol) {\n for (i=0; i 0) {\n g.x += (px = x / 2);\n g.bounds.translate(px, 0);\n }\n }\n }\n\n // perform vertical centering\n if (get(opt.center, Row) && ncols !== 1 && alignRow) {\n for (i=0; i 0) {\n g.y += (py = y / 2);\n g.bounds.translate(0, py);\n }\n }\n }\n\n // update mark bounds, mark dirty\n for (i=0; i limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j=0, m=headers.length; j= 0 && (g = groups[k]) == null; k-=back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n\n return edge;\n}\n\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset, y = offset;\n isX\n ? (x = Math.round(bounds.x1 + band * bounds.width()))\n : (y = Math.round(bounds.y1 + band * bounds.height()));\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n","import {\n Group, AxisRole, LegendRole, TitleRole, FrameRole, ScopeRole,\n RowHeader, RowFooter, RowTitle, ColHeader, ColFooter, ColTitle,\n Top, Bottom, Left, Right, Start, End,\n TopLeft, TopRight, BottomLeft, BottomRight,\n Fit, FitX, FitY, Pad, None, Padding, Symbols\n} from './constants';\nimport {gridLayout} from './gridLayout';\nimport {Transform} from 'vega-dataflow';\nimport {Bounds, boundStroke} from 'vega-scenegraph';\nimport {inherits} from 'vega-util';\n\nvar AxisOffset = 0.5,\n tempBounds = new Bounds();\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nexport default function ViewLayout(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(ViewLayout, Transform);\n\nprototype.transform = function(_, pulse) {\n // TODO incremental update, output?\n var view = pulse.dataflow;\n _.mark.items.forEach(function(group) {\n if (_.layout) gridLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n if (_.modified()) pulse.reflow();\n return pulse;\n};\n\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [], title,\n mark, flow, b, i, n;\n\n // layout axes, gather legends, collect bounds\n for (i=0, n=items.length; i -1) bounds.union(item.items[i].bounds);\n if ((i=indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n if (title) s = axisTitleLayout(title, s, titlePadding, 0, -1, bounds);\n bounds.add(0, -s).add(range, 0);\n break;\n case Left:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n if (title) s = axisTitleLayout(title, s, titlePadding, 1, -1, bounds);\n bounds.add(-s, 0).add(0, range);\n break;\n case Right:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n if (title) s = axisTitleLayout(title, s, titlePadding, 1, 1, bounds);\n bounds.add(0, 0).add(s, range);\n break;\n case Bottom:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n if (title) s = axisTitleLayout(title, s, titlePadding, 0, 1, bounds);\n bounds.add(0, 0).add(range, s);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n\n if (set(item, 'x', x + AxisOffset) | set(item, 'y', y + AxisOffset)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n return item.mark.bounds.clear().union(bounds);\n}\n\nfunction axisTitleLayout(title, offset, pad, isYAxis, sign, bounds) {\n var b = title.bounds, dx = 0, dy = 0;\n\n if (title.auto) {\n offset += pad;\n\n isYAxis\n ? dx = (title.x || 0) - (title.x = sign * offset)\n : dy = (title.y || 0) - (title.y = sign * offset);\n\n b.translate(-dx, -dy);\n title.mark.bounds.set(b.x1, b.y1, b.x2, b.y2);\n\n if (isYAxis) {\n bounds.add(0, b.y1).add(0, b.y2);\n offset += b.width();\n } else {\n bounds.add(b.x1, 0).add(b.x2, 0);\n offset += b.height();\n }\n } else {\n bounds.union(b);\n }\n\n return offset;\n}\n\nfunction titleLayout(view, title, width, height, viewBounds) {\n var item = title.items[0],\n orient = item.orient,\n frame = item.frame,\n anchor = item.anchor,\n offset = item.offset,\n bounds = item.bounds,\n vertical = (orient === Left || orient === Right),\n start = 0,\n end = vertical ? height : width,\n x = 0, y = 0, pos;\n\n if (frame !== Group) {\n orient === Left ? (start = viewBounds.y2, end = viewBounds.y1)\n : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2)\n : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left) {\n start = height, end = 0;\n }\n\n pos = (anchor === Start) ? start\n : (anchor === End) ? end\n : (start + end) / 2;\n\n tempBounds.clear().union(bounds);\n\n // position title text\n switch (orient) {\n case Top:\n x = pos;\n y = viewBounds.y1 - offset;\n break;\n case Left:\n x = viewBounds.x1 - offset;\n y = pos;\n break;\n case Right:\n x = viewBounds.x2 + offset;\n y = pos;\n break;\n case Bottom:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n bounds.translate(x - item.x, y - item.y);\n if (set(item, 'x', x) | set(item, 'y', y)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n // update bounds\n return title.bounds.clear().union(bounds);\n}\n\nfunction legendPreprocess(view, legends) {\n return legends.reduce(function(w, legend) {\n var item = legend.items[0];\n\n // adjust entry to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n if (item.datum.orient === Left) {\n var b = tempBounds.clear();\n item.items.forEach(function(_) { b.union(_.bounds); });\n w = Math.max(w, Math.ceil(b.width() + 2 * item.padding - 1));\n }\n\n return w;\n }, 0);\n}\n\nfunction legendGroupLayout(view, item, entry) {\n var x = item.padding - entry.x,\n y = item.padding - entry.y;\n\n if (item.datum.title) {\n var title = item.items[1].items[0];\n y += item.titlePadding + title.fontSize;\n }\n\n if (x || y) {\n entry.x += x;\n entry.y += y;\n entry.bounds.translate(x, y);\n entry.mark.bounds.translate(x, y);\n view.dirty(entry);\n }\n}\n\nfunction legendLayout(view, legend, flow, xBounds, yBounds, width, height) {\n var item = legend.items[0],\n datum = item.datum,\n orient = datum.orient,\n offset = item.offset,\n bounds = item.bounds,\n x = 0,\n y = 0,\n w, h, axisBounds;\n\n if (orient === Top || orient === Bottom) {\n axisBounds = yBounds,\n x = flow[orient];\n } else if (orient === Left || orient === Right) {\n axisBounds = xBounds;\n y = flow[orient];\n }\n\n tempBounds.clear().union(bounds);\n bounds.clear();\n\n // aggregate bounds to determine size\n // shave off 1 pixel because it looks better...\n item.items.forEach(function(_) { bounds.union(_.bounds); });\n w = 2 * item.padding - 1;\n h = 2 * item.padding - 1;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n\n if (datum.type === Symbols) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n\n switch (orient) {\n case Left:\n x -= flow.leftWidth + offset - Math.floor(axisBounds.x1);\n flow.left += h + flow.margin;\n break;\n case Right:\n x += offset + Math.ceil(axisBounds.x2);\n flow.right += h + flow.margin;\n break;\n case Top:\n y -= h + offset - Math.floor(axisBounds.y1);\n flow.top += w + flow.margin;\n break;\n case Bottom:\n y += offset + Math.ceil(axisBounds.y2);\n flow.bottom += w + flow.margin;\n break;\n case TopLeft:\n x += offset;\n y += offset;\n break;\n case TopRight:\n x += width - w - offset;\n y += offset;\n break;\n case BottomLeft:\n x += offset;\n y += height - h - offset;\n break;\n case BottomRight:\n x += width - w - offset;\n y += height - h - offset;\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n\n // update legend layout\n if (set(item, 'x', x) | set(item, 'width', w) |\n set(item, 'y', y) | set(item, 'height', h)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n\n return item.mark.bounds.clear().union(bounds);\n}\n\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n var widths = entries.reduce(function(w, g) {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(function(g) {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\n\nfunction viewSizeLayout(view, group, viewBounds, _) {\n var auto = _.autosize || {},\n type = auto.type,\n viewWidth = view._width,\n viewHeight = view._height,\n padding = view.padding();\n\n if (view._autosize < 1 || !type) return;\n\n var width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n\n if (auto.contains === Padding) {\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n }\n\n else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n }\n\n else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n }\n\n else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n }\n\n else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n\n view._resizeView(\n viewWidth, viewHeight,\n width, height,\n [left, top],\n auto.resize\n );\n}\n","export var Log = 'log';\nexport var Pow = 'pow';\nexport var Utc = 'utc';\nexport var Sqrt = 'sqrt';\nexport var Band = 'band';\nexport var Time = 'time';\nexport var Point = 'point';\nexport var Linear = 'linear';\nexport var Ordinal = 'ordinal';\nexport var Quantile = 'quantile';\nexport var Quantize = 'quantize';\nexport var Threshold = 'threshold';\nexport var BinLinear = 'bin-linear';\nexport var BinOrdinal = 'bin-ordinal';\nexport var Sequential = 'sequential';\n","export default function(count, paddingInner, paddingOuter) {\n var space = count - paddingInner + paddingOuter * 2;\n return count ? (space > 0 ? space : 1) : 0;\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(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import bandSpace from './bandSpace';\nimport {range as sequence, bisectRight} from 'd3-array';\nimport {scaleOrdinal as ordinal} from 'd3-scale';\n\nexport function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\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 if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n\n scale.range = function(_) {\n if (arguments.length) {\n range = [+_[0], +_[1]];\n return rescale();\n } else {\n return range.slice();\n }\n };\n\n scale.rangeRound = function(_) {\n range = [+_[0], +_[1]];\n round = true;\n return 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 if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n\n scale.padding = function(_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n\n scale.paddingInner = function(_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n\n scale.paddingOuter = function(_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n\n scale.align = function(_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n\n scale.invertRange = function(_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n\n var lo = +_[0],\n hi = +_[1],\n reverse = range[1] < range[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1, a, b, t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range[1-reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight(values, lo) - 1);\n b = lo===hi ? a : bisectRight(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return (a > b) ? undefined : domain().slice(a, b+1);\n };\n\n scale.invert = function(_) {\n var value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","import {bisect} from 'd3-array';\nimport {scaleLinear} from 'd3-scale';\nimport {peek} from 'vega-util';\n\nvar map = Array.prototype.map,\n slice = Array.prototype.slice;\n\nfunction numbers(_) {\n return map.call(_, function(x) { return +x; });\n}\n\nexport function binLinear() {\n var linear = scaleLinear(),\n domain = [];\n\n function scale(x) {\n return linear(x);\n }\n\n function setDomain(_) {\n domain = numbers(_);\n linear.domain([domain[0], peek(domain)]);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (setDomain(_), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (linear.range(_), scale) : linear.range();\n };\n\n scale.rangeRound = function(_) {\n return arguments.length ? (linear.rangeRound(_), scale) : linear.rangeRound();\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (linear.interpolate(_), scale) : linear.interpolate();\n };\n\n scale.invert = function(_) {\n return linear.invert(_);\n };\n\n scale.ticks = function(count) {\n var n = domain.length,\n stride = ~~(n / (count || n));\n\n return stride < 2\n ? scale.domain()\n : domain.filter(function(x, i) { return !(i % stride); });\n };\n\n scale.tickFormat = function() {\n return linear.tickFormat.apply(linear, arguments);\n };\n\n scale.copy = function() {\n return binLinear().domain(scale.domain()).range(scale.range());\n };\n\n return scale;\n}\n\nexport function binOrdinal() {\n var domain = [],\n range = [];\n\n function scale(x) {\n return x == null || x !== x\n ? undefined\n : range[(bisect(domain, x) - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n\n scale.range = function(_) {\n if (arguments.length) {\n range = slice.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n\n // Addresses #1395, refine if/when d3-scale tickFormat is exposed\n scale.tickFormat = function() {\n var linear = scaleLinear().domain([domain[0], peek(domain)]);\n return linear.tickFormat.apply(linear, arguments);\n };\n\n scale.copy = function() {\n return binOrdinal().domain(scale.domain()).range(scale.range());\n };\n\n return scale;\n}\n","import invertRange from './invertRange';\nimport invertRangeExtent from './invertRangeExtent';\nimport {\n band as scaleBand,\n point as scalePoint\n} from './scaleBand';\nimport {\n binLinear as scaleBinLinear,\n binOrdinal as scaleBinOrdinal\n} from './scaleBin';\nimport scaleSequential from './scaleSequential';\n\nimport * as $ from 'd3-scale';\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor) {\n return function scale() {\n var s = constructor();\n\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s)\n : s.invertExtent ? invertRangeExtent(s)\n : undefined;\n }\n\n s.type = type;\n return s;\n };\n}\n\nexport default function scale(type, scale) {\n if (arguments.length > 1) {\n scales[type] = create(type, scale);\n return this;\n } else {\n return scales.hasOwnProperty(type) ? scales[type] : undefined;\n }\n}\n\nvar scales = {\n // base scale types\n identity: $.scaleIdentity,\n linear: $.scaleLinear,\n log: $.scaleLog,\n ordinal: $.scaleOrdinal,\n pow: $.scalePow,\n sqrt: $.scaleSqrt,\n quantile: $.scaleQuantile,\n quantize: $.scaleQuantize,\n threshold: $.scaleThreshold,\n time: $.scaleTime,\n utc: $.scaleUtc,\n\n // extended scale types\n band: scaleBand,\n point: scalePoint,\n sequential: scaleSequential,\n 'bin-linear': scaleBinLinear,\n 'bin-ordinal': scaleBinOrdinal\n};\n\nfor (var key in scales) {\n scale(key, scales[key]);\n}\n","export default function(scale) {\n return function(_) {\n var lo = _[0],\n hi = _[1],\n t;\n\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n\n return [\n scale.invert(lo),\n scale.invert(hi)\n ];\n }\n}\n","export default function(scale) {\n return function(_) {\n var range = scale.range(),\n lo = _[0],\n hi = _[1],\n min = -1, max, t, i, n;\n\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n\n for (i=0, n=range.length; i= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n\n if (min < 0) return undefined;\n\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n\n return [\n lo[0] === undefined ? lo[1] : lo[0],\n hi[1] === undefined ? hi[0] : hi[1]\n ];\n }\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {peek} from 'vega-util';\nimport {scaleLinear} from 'd3-scale';\n\nexport default function sequential(interpolator) {\n var linear = scaleLinear(),\n x0 = 0,\n dx = 1,\n clamp = false;\n\n function update() {\n var domain = linear.domain();\n x0 = domain[0];\n dx = peek(domain) - x0;\n }\n\n function scale(x) {\n var t = (x - x0) / dx;\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.clamp = function(_) {\n if (arguments.length) {\n clamp = !!_;\n return scale;\n } else {\n return clamp;\n }\n };\n\n scale.domain = function(_) {\n return arguments.length ? (linear.domain(_), update(), scale) : linear.domain();\n };\n\n scale.interpolator = function(_) {\n if (arguments.length) {\n interpolator = _;\n return scale;\n } else {\n return interpolator;\n }\n };\n\n scale.copy = function() {\n return sequential().domain(linear.domain()).clamp(clamp).interpolator(interpolator);\n };\n\n scale.ticks = function(count) {\n return linear.ticks(count);\n };\n\n scale.tickFormat = function(count, specifier) {\n return linear.tickFormat(count, specifier);\n };\n\n scale.nice = function(count) {\n return linear.nice(count), update(), scale;\n };\n\n return scale;\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","import {constant, peek} from 'vega-util';\nimport * as $ from 'd3-interpolate';\n\nexport function interpolateRange(interpolator, range) {\n var start = range[0],\n span = peek(range) - start;\n return function(i) { return interpolator(start + i * span); };\n}\n\nexport function scaleFraction(scale, min, max) {\n var delta = max - min;\n return !delta || !isFinite(delta) ? constant(0)\n : scale.type === 'linear' || scale.type === 'sequential'\n ? function(_) { return (_ - min) / delta; }\n : scale.copy().domain([min, max]).range([0, 1]).interpolate(lerp);\n}\n\nfunction lerp(a, b) {\n var span = b - a;\n return function(i) { return a + i * span; }\n}\n\nexport function interpolate(type, gamma) {\n var interp = $[method(type)];\n return (gamma != null && interp && interp.gamma)\n ? interp.gamma(gamma)\n : interp;\n}\n\nfunction method(type) {\n return 'interpolate' + type.toLowerCase()\n .split('-')\n .map(function(s) { return s[0].toUpperCase() + s.slice(1); })\n .join('');\n}\n","function colors(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\nexport var category20 = colors(\n '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5'\n);\n\nexport var category20b = colors(\n '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6'\n);\n\nexport var category20c = colors(\n '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9'\n);\n\nexport var tableau10 = colors(\n '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac'\n);\n\nexport var tableau20 = colors(\n '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5'\n);\n\nexport var blueOrange = new Array(3).concat(\n \"67a9cff7f7f7f1a340\",\n \"0571b092c5defdb863e66101\",\n \"0571b092c5def7f7f7fdb863e66101\",\n \"2166ac67a9cfd1e5f0fee0b6f1a340b35806\",\n \"2166ac67a9cfd1e5f0f7f7f7fee0b6f1a340b35806\",\n \"2166ac4393c392c5ded1e5f0fee0b6fdb863e08214b35806\",\n \"2166ac4393c392c5ded1e5f0f7f7f7fee0b6fdb863e08214b35806\",\n \"0530612166ac4393c392c5ded1e5f0fee0b6fdb863e08214b358067f3b08\",\n \"0530612166ac4393c392c5ded1e5f0f7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import {\n category20, category20b, category20c,\n tableau10, tableau20,\n blueOrange\n} from './palettes';\nimport * as _ from 'd3-scale-chromatic';\nimport {interpolateRgbBasis} from 'd3-interpolate';\nimport {peek} from 'vega-util';\n\nvar discretized = {\n blueorange: blueOrange\n};\n\nvar schemes = {\n // d3 categorical palettes\n category10: _.schemeCategory10,\n accent: _.schemeAccent,\n dark2: _.schemeDark2,\n paired: _.schemePaired,\n pastel1: _.schemePastel1,\n pastel2: _.schemePastel2,\n set1: _.schemeSet1,\n set2: _.schemeSet2,\n set3: _.schemeSet3,\n\n // additional categorical palettes\n category20: category20,\n category20b: category20b,\n category20c: category20c,\n tableau10: tableau10,\n tableau20: tableau20,\n\n // sequential multi-hue interpolators\n viridis: _.interpolateViridis,\n magma: _.interpolateMagma,\n inferno: _.interpolateInferno,\n plasma: _.interpolatePlasma,\n\n // cyclic interpolators\n rainbow: _.interpolateRainbow,\n sinebow: _.interpolateSinebow,\n\n // extended interpolators\n blueorange: interpolateRgbBasis(peek(blueOrange))\n};\n\nfunction add(name, suffix) {\n schemes[name] = _['interpolate' + suffix];\n discretized[name] = _['scheme' + suffix];\n}\n\n// sequential single-hue\nadd('blues', 'Blues');\nadd('greens', 'Greens');\nadd('greys', 'Greys');\nadd('purples', 'Purples');\nadd('reds', 'Reds');\nadd('oranges', 'Oranges');\n\n// diverging\nadd('brownbluegreen', 'BrBG');\nadd('purplegreen', 'PRGn');\nadd('pinkyellowgreen', 'PiYG');\nadd('purpleorange', 'PuOr');\nadd('redblue', 'RdBu');\nadd('redgrey', 'RdGy');\nadd('redyellowblue', 'RdYlBu');\nadd('redyellowgreen', 'RdYlGn');\nadd('spectral', 'Spectral');\n\n// sequential multi-hue\nadd('bluegreen', 'BuGn');\nadd('bluepurple', 'BuPu');\nadd('greenblue', 'GnBu');\nadd('orangered', 'OrRd');\nadd('purplebluegreen', 'PuBuGn');\nadd('purpleblue', 'PuBu');\nadd('purplered', 'PuRd');\nadd('redpurple', 'RdPu');\nadd('yellowgreenblue', 'YlGnBu');\nadd('yellowgreen', 'YlGn');\nadd('yelloworangebrown', 'YlOrBr');\nadd('yelloworangered', 'YlOrRd');\n\nexport function scheme(name, scheme) {\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n }\n\n var part = name.split('-');\n name = part[0];\n part = +part[1] + 1;\n\n return part && discretized.hasOwnProperty(name) ? discretized[name][part-1]\n : !part && schemes.hasOwnProperty(name) ? schemes[name]\n : undefined;\n}\n\nexport function schemeDiscretized(name, schemeArray, interpolator) {\n if (arguments.length > 1) {\n discretized[name] = schemeArray;\n schemes[name] = interpolator || interpolateRgbBasis(peek(schemeArray));\n return this;\n }\n\n return discretized.hasOwnProperty(name)\n ? discretized[name]\n : undefined;\n}\n","import {\n timeMillisecond, utcMillisecond,\n timeSecond, utcSecond,\n timeMinute, utcMinute,\n timeHour, utcHour,\n timeDay, utcDay,\n timeWeek, utcWeek,\n timeMonth, utcMonth,\n timeYear, utcYear\n} from 'd3-time';\n\nvar time = {\n millisecond: timeMillisecond,\n second: timeSecond,\n minute: timeMinute,\n hour: timeHour,\n day: timeDay,\n week: timeWeek,\n month: timeMonth,\n year: timeYear\n};\n\nvar utc = {\n millisecond: utcMillisecond,\n second: utcSecond,\n minute: utcMinute,\n hour: utcHour,\n day: utcDay,\n week: utcWeek,\n month: utcMonth,\n year: utcYear\n}\n\nexport function timeInterval(name) {\n return time.hasOwnProperty(name) && time[name];\n}\n\nexport function utcInterval(name) {\n return utc.hasOwnProperty(name) && utc[name];\n}\n","import {Log} from './scale-types';\nimport {timeInterval, utcInterval} from 'vega-scale';\nimport {error, isObject, isString, peek} from 'vega-util';\nimport {\n format as numberFormat,\n formatSpecifier\n} from 'd3-format';\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @return {*} - The tick count or interval function.\n */\nexport function tickCount(scale, count) {\n var step;\n\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n\n if (isString(count)) {\n count = scale.type === 'time' ? timeInterval(count)\n : scale.type === 'utc' ? utcInterval(count)\n : error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nexport function validTicks(scale, ticks, count) {\n var range = scale.range(),\n lo = range[0],\n hi = peek(range);\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n }\n\n ticks = ticks.filter(function(v) {\n v = scale(v);\n return !(v < lo || v > hi)\n });\n\n if (count > 0 && ticks.length > 1) {\n var endpoints = [ticks[0], peek(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter(function(_, i) { return !(i % 2); });\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nexport function tickValues(scale, count) {\n return scale.ticks ? scale.ticks(count) : scale.domain();\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3 4.0\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier).\n * @return {function(*):string} - The generated label formatter.\n */\nexport function tickFormat(scale, count, specifier) {\n var format = scale.tickFormat ? scale.tickFormat(count, specifier)\n : specifier ? numberFormat(specifier)\n : String;\n\n return (scale.type === Log)\n ? filter(format, variablePrecision(specifier))\n : format;\n}\n\nfunction filter(sourceFormat, targetFormat) {\n return function(_) {\n return sourceFormat(_) ? targetFormat(_) : '';\n };\n}\n\nfunction variablePrecision(specifier) {\n var s = formatSpecifier(specifier || ',');\n\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%': s.precision -= 2; break;\n case 'e': s.precision -= 1; break;\n }\n return trimZeroes(\n numberFormat(s), // number format\n numberFormat('.1f')(1)[1] // decimal point character\n );\n } else {\n return numberFormat(s);\n }\n}\n\nfunction trimZeroes(format, decimalChar) {\n return function(x) {\n var str = format(x),\n dec = str.indexOf(decimalChar),\n idx, end;\n\n if (dec < 0) return str;\n\n idx = rightmostDigit(str, dec);\n end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') { ++idx; break; }\n\n return str.slice(0, idx) + end;\n };\n}\n\nfunction rightmostDigit(str, dec) {\n var i = str.lastIndexOf('e'), c;\n if (i > 0) return i;\n for (i=str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n","import {tickCount, tickFormat, tickValues, validTicks} from './ticks';\nimport {Transform, ingest} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function AxisTicks(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(AxisTicks, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n count = _.count == null ? (_.values ? _.values.length : 10) : tickCount(scale, _.count),\n format = _.format || tickFormat(scale, count, _.formatSpecifier),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n\n if (ticks) out.rem = ticks;\n\n ticks = values.map(function(value, i) {\n return ingest({\n index: i / (values.length - 1),\n value: value,\n label: format(value)\n });\n });\n\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {value: ticks[0].value},\n label: ''\n }));\n }\n\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n\n return out;\n};\n","import {Transform, ingest, tupleid} from 'vega-dataflow';\nimport {error, fastmap, inherits, isArray} from 'vega-util';\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nexport default function DataJoin(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(DataJoin, Transform);\n\nfunction defaultItemCreate() {\n return ingest({});\n}\n\nfunction isExit(t) {\n return t.exit;\n}\n\nprototype.transform = function(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = fastmap().test(isExit);\n map.lookup = function(t) { return map.get(key(t)); };\n }\n\n pulse.visit(pulse.ADD, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n map.set(k, (x = item(t)));\n out.add.push(x);\n }\n\n x.datum = t;\n x.exit = false;\n });\n\n pulse.visit(pulse.MOD, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n\n pulse.visit(pulse.REM, function(t) {\n var k = key(t),\n x = map.get(k);\n\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n\n if (_.clean && map.empty > df.cleanThreshold) df.runAfter(map.clean);\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {falsy, inherits, isArray} from 'vega-util';\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nexport default function Encode(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(Encode, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(function(e) { return encoders[e]; })) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, function(t) {\n enter(t, _);\n update(t, _);\n if (set !== falsy && set !== update) set(t, _);\n });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) out.modifies(set.output);\n }\n\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, function(t) { exit(t, _); });\n out.modifies(exit.output);\n }\n\n if (reenter || set !== falsy) {\n var flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, function(t) {\n var mod = enter(t, _);\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, function(t) {\n if (set(t, _)) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n\n return out.changed() ? out : pulse.StopPropagation;\n};\n","export var Symbols = 'symbol';\nexport var Discrete = 'discrete';\nexport var Gradient = 'gradient';\n","import {Symbols, Discrete} from './legend-types';\nimport {Quantile, Quantize, Threshold, BinLinear, BinOrdinal} from './scale-types';\nimport {tickValues} from './ticks';\nimport {peek} from 'vega-util';\n\nvar symbols = {};\nsymbols[Quantile] = quantileSymbols;\nsymbols[Quantize] = quantizeSymbols;\nsymbols[Threshold] = thresholdSymbols;\nsymbols[BinLinear] = symbols[BinOrdinal] = binSymbols;\n\nexport function labelValues(scale, count) {\n var values = symbols[scale.type];\n return values ? values(scale) : tickValues(scale, count);\n}\n\nfunction quantizeSymbols(scale) {\n var domain = scale.domain(),\n x0 = domain[0],\n x1 = peek(domain),\n n = scale.range().length,\n values = new Array(n),\n i = 0;\n\n values[0] = -Infinity;\n while (++i < n) values[i] = (i * x1 - (i - n) * x0) / n;\n values.max = +Infinity;\n\n return values;\n}\n\nfunction quantileSymbols(scale) {\n var values = [-Infinity].concat(scale.quantiles());\n values.max = +Infinity;\n\n return values;\n}\n\nfunction thresholdSymbols(scale) {\n var values = [-Infinity].concat(scale.domain());\n values.max = +Infinity;\n\n return values;\n}\n\nfunction binSymbols(scale) {\n var values = scale.domain();\n values.max = values.pop();\n\n return values;\n}\n\nexport function labelFormat(scale, format, type) {\n return type === Symbols && symbols[scale.type] ? formatRange(format)\n : type === Discrete ? formatDiscrete(format)\n : formatPoint(format);\n}\n\nfunction formatRange(format) {\n return function(value, index, array) {\n var limit = array[index + 1] || array.max || +Infinity,\n lo = formatValue(value, format),\n hi = formatValue(limit, format);\n return lo && hi ? lo + '\\u2013' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n };\n}\n\nfunction formatDiscrete(format) {\n return function(value, index) {\n return index ? format(value) : null;\n }\n}\n\nfunction formatPoint(format) {\n return function(value) {\n return format(value);\n };\n}\n\nfunction formatValue(value, format) {\n return isFinite(value) ? format(value) : null;\n}\n\nexport function labelFraction(scale) {\n var domain = scale.domain(),\n count = domain.length - 1,\n lo = +domain[0],\n hi = +peek(domain),\n span = hi - lo;\n\n if (scale.type === Threshold) {\n var adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n\n return function(value) {\n return (value - lo) / span;\n };\n}\n","import {labelFormat, labelFraction, labelValues} from './labels';\nimport {Symbols, Gradient} from './legend-types';\nimport {tickCount, tickFormat} from './ticks';\nimport {Transform, ingest} from 'vega-dataflow';\nimport {scaleFraction} from 'vega-scale';\nimport {constant, inherits, isFunction, peek} from 'vega-util';\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function LegendEntries(params) {\n Transform.call(this, [], params);\n}\n\nvar prototype = inherits(LegendEntries, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || Symbols,\n scale = _.scale,\n count = _.count == null ? 5 : tickCount(scale, _.count),\n format = _.format || tickFormat(scale, count, _.formatSpecifier),\n values = _.values || labelValues(scale, count, type),\n domain, fraction, size, offset;\n\n format = labelFormat(scale, format, type);\n if (items) out.rem = items;\n\n if (type === Symbols) {\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(values[0]) === 0) {\n values = values.slice(1);\n }\n // compute size offset for legend entries\n offset = values.reduce(function(max, value) {\n return Math.max(max, size(value, _));\n }, 0);\n } else {\n size = constant(offset = size || 8);\n }\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n offset: offset,\n size: size(value, _)\n });\n });\n }\n\n else if (type === Gradient) {\n domain = scale.domain(),\n fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n });\n });\n }\n\n else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n\n items = values.map(function(value, index) {\n return ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index+1])\n });\n });\n }\n\n out.source = items;\n out.add = items;\n this.value = items;\n\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {error, fastmap, inherits} from 'vega-util';\n\nvar Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\nfunction sourceX(t) { return t.source.x; }\nfunction sourceY(t) { return t.source.y; }\nfunction targetX(t) { return t.target.x; }\nfunction targetY(t) { return t.target.y; }\n\n /**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function LinkPath(params) {\n Transform.call(this, {}, params);\n}\n\nLinkPath.Definition = {\n \"type\": \"LinkPath\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"sourceX\", \"type\": \"field\", \"default\": \"source.x\" },\n { \"name\": \"sourceY\", \"type\": \"field\", \"default\": \"source.y\" },\n { \"name\": \"targetX\", \"type\": \"field\", \"default\": \"target.x\" },\n { \"name\": \"targetY\", \"type\": \"field\", \"default\": \"target.y\" },\n { \"name\": \"orient\", \"type\": \"enum\", \"default\": \"vertical\",\n \"values\": [\"horizontal\", \"vertical\", \"radial\"] },\n { \"name\": \"shape\", \"type\": \"enum\", \"default\": \"line\",\n \"values\": [\"line\", \"arc\", \"curve\", \"diagonal\", \"orthogonal\"] },\n { \"name\": \"require\", \"type\": \"signal\" },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(LinkPath, Transform);\n\nprototype.transform = function(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape\n + (_.orient ? '-' + _.orient : ''));\n }\n\n pulse.visit(pulse.SOURCE, function(t) {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n\n return pulse.reflow(_.modified()).modifies(as);\n};\n\n// -- Link Path Generation Methods -----\n\nfunction line(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'L' + tx + ',' + ty;\n}\n\nfunction lineR(sa, sr, ta, tr) {\n return line(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction arc(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.sqrt(dx * dx + dy * dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy +\n 'A' + rr + ',' + rr +\n ' ' + ra + ' 0 1' +\n ' ' + tx + ',' + ty;\n}\n\nfunction arcR(sa, sr, ta, tr) {\n return arc(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction curve(sx, sy, tx, ty) {\n var dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy +\n 'C' + (sx+ix) + ',' + (sy+iy) +\n ' ' + (tx+iy) + ',' + (ty-ix) +\n ' ' + tx + ',' + ty;\n}\n\nfunction curveR(sa, sr, ta, tr) {\n return curve(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n );\n}\n\nfunction orthoX(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'V' + ty + 'H' + tx;\n}\n\nfunction orthoY(sx, sy, tx, ty) {\n return 'M' + sx + ',' + sy +\n 'H' + tx + 'V' + ty;\n}\n\nfunction orthoR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n ' ' + (sr*tc) + ',' + (sr*ts) +\n 'L' + (tr*tc) + ',' + (tr*ts);\n}\n\nfunction diagonalX(sx, sy, tx, ty) {\n var m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + m + ',' + sy +\n ' ' + m + ',' + ty +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalY(sx, sy, tx, ty) {\n var m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + sx + ',' + m +\n ' ' + tx + ',' + m +\n ' ' + tx + ',' + ty;\n}\n\nfunction diagonalR(sa, sr, ta, tr) {\n var sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'C' + (mr*sc) + ',' + (mr*ss) +\n ' ' + (mr*tc) + ',' + (mr*ts) +\n ' ' + (tr*tc) + ',' + (tr*ts);\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\nimport {range, sum} from 'd3-array';\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nexport default function Pie(params) {\n Transform.call(this, null, params);\n}\n\nPie.Definition = {\n \"type\": \"Pie\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"startAngle\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"endAngle\", \"type\": \"number\", \"default\": 6.283185307179586 },\n { \"name\": \"sort\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"startAngle\", \"endAngle\"] }\n ]\n};\n\nvar prototype = inherits(Pie, Transform);\n\nprototype.transform = function(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i, t, v;\n\n if (_.sort) {\n index.sort(function(a, b) {\n return values[a] - values[b];\n });\n }\n\n for (i=0; i -1) return raw;\n\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || (_.zero === undefined && INCLUDE_ZERO[type]),\n n, mid;\n\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (INCLUDE_PAD[type] && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = ((domain = domain.slice()).length - 1) || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n\n if (_.domainMid != null) {\n mid = _.domainMid;\n if (mid < domain[0] || mid > domain[n]) {\n df.warn('Scale domainMid exceeds domain min or max.', mid);\n }\n domain.splice(n, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice((_.nice !== true && tickCount(scale, _.nice)) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\n\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\n\nfunction padDomain(type, domain, range, pad, exponent) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac)\n : type === Sqrt ? zoomPow(domain, null, frac, 0.5)\n : type === Pow ? zoomPow(domain, null, frac, exponent)\n : zoomLinear(domain, null, frac);\n\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length-1] = d[1];\n return domain;\n}\n\nfunction domainCheck(type, domain, df) {\n if (type === Log) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce(function(s, v) {\n return s + (v < 0 ? -1 : v > 0 ? 1 : 0);\n }, 0));\n\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\n\nfunction configureRange(scale, _, count) {\n var round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(scale.type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(scale.type, _, count);\n if (isFunction(range)) return scale.interpolator(range);\n }\n\n // given a range array for a sequential scale, convert to interpolator\n else if (range && scale.type === Sequential) {\n return scale.interpolator(interpolateRgbBasis(flip(range, _.reverse)));\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(getInterpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate);\n }\n\n if (range) scale.range(flip(range, _.reverse));\n}\n\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1\n : ((_.paddingInner != null ? _.paddingInner : _.padding) || 0);\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\n\nfunction configureScheme(type, _, count) {\n var name = _.scheme.toLowerCase(),\n scheme = getScheme(name),\n extent = _.schemeExtent,\n discrete;\n\n if (!scheme) {\n error('Unrecognized scheme name: ' + _.scheme);\n }\n\n // determine size for potential discrete range\n count = (type === Threshold) ? count + 1\n : (type === BinOrdinal) ? count - 1\n : (type === Quantile || type === Quantize) ? (+_.schemeCount || DEFAULT_COUNT)\n : count;\n\n // adjust and/or quantize scheme as appropriate\n return type === Sequential ? adjustScheme(scheme, extent, _.reverse)\n : !extent && (discrete = getScheme(name + '-' + count)) ? discrete\n : isFunction(scheme) ? quantize(adjustScheme(scheme, extent), count)\n : type === Ordinal ? scheme : scheme.slice(0, count);\n}\n\nfunction adjustScheme(scheme, extent, reverse) {\n return (isFunction(scheme) && (extent || reverse))\n ? interpolateRange(scheme, flip(extent || [0, 1], reverse))\n : scheme;\n}\n\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\nfunction quantize(interpolator, count) {\n var samples = new Array(count),\n n = count + 1;\n for (var i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nexport default function SortItems(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(SortItems, Transform);\n\nprototype.transform = function(_, pulse) {\n var mod = _.modified('sort')\n || pulse.changed(pulse.ADD)\n || pulse.modified(_.sort.fields)\n || pulse.modified('datum');\n\n if (mod) pulse.source.sort(_.sort);\n\n this.modified(mod);\n return pulse;\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\n\nvar Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - One of 'zero', 'center', 'normalize'.\n */\nexport default function Stack(params) {\n Transform.call(this, null, params);\n}\n\nStack.Definition = {\n \"type\": \"Stack\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"groupby\", \"type\": \"field\", \"array\": true },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"offset\", \"type\": \"enum\", \"default\": Zero, \"values\": [Zero, Center, Normalize] },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": DefOutput }\n ]\n};\n\nvar prototype = inherits(Stack, Transform);\n\nprototype.transform = function(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n field = _.field || one,\n stack = _.offset === Center ? stackCenter\n : _.offset === Normalize ? stackNormalize\n : stackZero,\n groups, i, n, max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, _.sort, field);\n\n // compute stack layouts per group\n for (i=0, n=groups.length, max=groups.max; i max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n\n return groups;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","import {ingest, Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {extent} from 'd3-array';\nimport {contours, contourDensity} from 'd3-contour';\n\nvar CONTOUR_PARAMS = ['size', 'smooth'];\nvar DENSITY_PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nexport default function Contour(params) {\n Transform.call(this, null, params);\n}\n\nContour.Definition = {\n \"type\": \"Contour\",\n \"metadata\": {\"generates\": true},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2, \"required\": true },\n { \"name\": \"values\", \"type\": \"number\", \"array\": true },\n { \"name\": \"x\", \"type\": \"field\" },\n { \"name\": \"y\", \"type\": \"field\" },\n { \"name\": \"weight\", \"type\": \"field\" },\n { \"name\": \"cellSize\", \"type\": \"number\" },\n { \"name\": \"bandwidth\", \"type\": \"number\" },\n { \"name\": \"count\", \"type\": \"number\" },\n { \"name\": \"smooth\", \"type\": \"boolean\" },\n { \"name\": \"nice\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"thresholds\", \"type\": \"number\", \"array\": true }\n ]\n};\n\nvar prototype = inherits(Contour, Transform);\n\nprototype.transform = function(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified())\n return pulse.StopPropagation;\n\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n count = _.count || 10,\n contour, params, values;\n\n if (_.values) {\n contour = contours();\n params = CONTOUR_PARAMS;\n values = _.values;\n } else {\n contour = contourDensity();\n params = DENSITY_PARAMS;\n values = pulse.materialize(pulse.SOURCE).source;\n }\n\n // set threshold parameter\n contour.thresholds(_.thresholds || (_.nice ? count : quantize(count)));\n\n // set all other parameters\n params.forEach(function(param) {\n if (_[param] != null) contour[param](_[param]);\n });\n\n if (this.value) out.rem = this.value;\n values = values && values.length ? contour(values).map(ingest) : [];\n this.value = out.source = out.add = values;\n\n return out;\n};\n\nfunction quantize(k) {\n return function(values) {\n var ex = extent(values), x0 = ex[0], dx = ex[1] - x0,\n t = [], i = 1;\n for (; i<=k; ++i) t.push(x0 + dx * i / (k + 1));\n return t;\n };\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export var Feature = 'Feature';\nexport var FeatureCollection = 'FeatureCollection';\nexport var MultiPoint = 'MultiPoint';\n","import {Feature, FeatureCollection, MultiPoint} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {accessorFields, inherits} from 'vega-util';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nexport default function GeoJSON(params) {\n Transform.call(this, null, params);\n}\n\nGeoJSON.Definition = {\n \"type\": \"GeoJSON\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"length\": 2 },\n { \"name\": \"geojson\", \"type\": \"field\" },\n ]\n};\n\nvar prototype = inherits(GeoJSON, Transform);\n\nprototype.transform = function(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson,\n flag = pulse.ADD,\n mod;\n\n mod = _.modified()\n || pulse.changed(pulse.REM)\n || pulse.modified(accessorFields(geojson))\n || (lon && (pulse.modified(accessorFields(lon))))\n || (lat && (pulse.modified(accessorFields(lat))));\n\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = (features = []);\n this._points = (points = []);\n }\n\n if (geojson) {\n pulse.visit(flag, function(t) {\n features.push(geojson(t));\n });\n }\n\n if (lon && lat) {\n pulse.visit(flag, function(t) {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n\n this.value = {\n type: FeatureCollection,\n features: features\n };\n};\n","export default x => x;\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","export default function noop() {}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(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","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","export default function(x) {\n return x;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sin = Math.sin;\nexport var tan = Math.tan;\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport function sinci(x) {\n return x ? x / Math.sin(x) : 1;\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function sqrt(x) {\n return x > 0 ? Math.sqrt(x) : 0;\n}\n\nexport function tanh(x) {\n x = exp(2 * x);\n return (x - 1) / (x + 1);\n}\n\nexport function sinh(x) {\n return (exp(x) - exp(-x)) / 2;\n}\n\nexport function cosh(x) {\n return (exp(x) + exp(-x)) / 2;\n}\n\nexport function arsinh(x) {\n return log(x + sqrt(x * x + 1));\n}\n\nexport function arcosh(x) {\n return log(x + sqrt(x * x - 1));\n}\n","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2} from \"./math.js\";\n\nexport function mollweideBromleyTheta(cp, phi) {\n var cpsinPhi = cp * sin(phi), i = 30, delta;\n do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));\n while (abs(delta) > epsilon && --i > 0);\n return phi / 2;\n}\n\nexport function mollweideBromleyRaw(cx, cy, cp) {\n\n function forward(lambda, phi) {\n return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n }\n\n forward.invert = function(x, y) {\n return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n };\n\n return forward;\n}\n\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\n\nexport default function() {\n return projection(mollweideRaw)\n .scale(169.529);\n}\n","import { geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoIdentity, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator } from 'd3-geo';\nimport { geoMollweide } from 'd3-geo-projection';\n\nconst defaultPath = geoPath();\nconst projectionProperties = [// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY', // extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n/**\n * Augment projections with their type and a copy method.\n */\n\nfunction create(type, constructor) {\n return function projection() {\n const p = constructor();\n p.type = type;\n p.path = geoPath().projection(p);\n\n p.copy = p.copy || function () {\n const c = projection();\n projectionProperties.forEach(prop => {\n if (p[prop]) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n\n return p;\n };\n}\n\nfunction projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n\n type = type.toLowerCase();\n\n if (arguments.length > 1) {\n projections[type] = create(type, proj);\n return this;\n } else {\n return projections[type] || null;\n }\n}\nfunction getProjectionPath(proj) {\n return proj && proj.path || defaultPath;\n}\nconst projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equalEarth: geoEqualEarth,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n mollweide: geoMollweide,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\n\nfor (const key in projections) {\n projection(key, projections[key]);\n}\n\nexport { getProjectionPath, projection, projectionProperties };\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import {Transform} from 'vega-dataflow';\nimport {getProjectionPath} from 'vega-projection';\nimport {inherits, identity} from 'vega-util';\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nexport default function GeoPath(params) {\n Transform.call(this, null, params);\n}\n\nGeoPath.Definition = {\n \"type\": \"GeoPath\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\" },\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"pointRadius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(GeoPath, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity,\n as = _.as || 'path',\n flag = out.SOURCE;\n\n function set(t) { t[as] = path(field(t)); }\n\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity || pulse.modified(field.fields)\n ? out.ADD_MOD\n : out.ADD;\n }\n\n var prev = initPath(path, _.pointRadius);\n out.visit(flag, set);\n path.pointRadius(prev);\n\n return out.modifies(as);\n};\n\nfunction initPath(path, pointRadius) {\n var prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nexport default function GeoPoint(params) {\n Transform.call(this, null, params);\n}\n\nGeoPoint.Definition = {\n \"type\": \"GeoPoint\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\", \"required\": true },\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 2, \"default\": [\"x\", \"y\"] }\n ]\n};\n\nvar prototype = inherits(GeoPoint, Transform);\n\nprototype.transform = function(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n\n function set(t) {\n var xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n\n return pulse.modifies(as);\n};\n","import {Transform} from 'vega-dataflow';\nimport {getProjectionPath} from 'vega-projection';\nimport {inherits, field} from 'vega-util';\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nexport default function GeoShape(params) {\n Transform.call(this, null, params);\n}\n\nGeoShape.Definition = {\n \"type\": \"GeoShape\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"projection\", \"type\": \"projection\" },\n { \"name\": \"field\", \"type\": \"field\", \"default\": \"datum\" },\n { \"name\": \"pointRadius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"shape\" }\n ]\n};\n\nvar prototype = inherits(GeoShape, Transform);\n\nprototype.transform = function(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n datum = _.field || field('datum'),\n as = _.as || 'shape',\n flag = out.ADD_MOD;\n\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(\n getProjectionPath(_.projection),\n datum,\n _.pointRadius\n );\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n\n out.visit(flag, function(t) { t[as] = shape; });\n\n return out.modifies(as);\n};\n\nfunction shapeGenerator(path, field, pointRadius) {\n var shape = pointRadius == null\n ? function(_) { return path(field(_)); }\n : function(_) {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = function(_) {\n path.context(_);\n return shape;\n };\n\n return shape;\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {Transform, ingest, replace} from 'vega-dataflow';\nimport {inherits, isFunction} from 'vega-util';\nimport {geoGraticule} from 'd3-geo';\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nexport default function Graticule(params) {\n Transform.call(this, [], params);\n this.generator = geoGraticule();\n}\n\nGraticule.Definition = {\n \"type\": \"Graticule\",\n \"metadata\": {\"changes\": true},\n \"params\": [\n { \"name\": \"extent\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"extentMajor\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"extentMinor\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"step\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"stepMajor\", \"type\": \"number\", \"array\": true, \"length\": 2, \"default\": [90, 360] },\n { \"name\": \"stepMinor\", \"type\": \"number\", \"array\": true, \"length\": 2, \"default\": [10, 10] },\n { \"name\": \"precision\", \"type\": \"number\", \"default\": 2.5 }\n ]\n};\n\nvar prototype = inherits(Graticule, Transform);\n\nprototype.transform = function(_, pulse) {\n var src = this.value,\n gen = this.generator, t;\n\n if (!src.length || _.modified()) {\n for (var prop in _) {\n if (isFunction(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n\n t = gen();\n if (src.length) {\n pulse.mod.push(replace(src[0], t));\n } else {\n pulse.add.push(ingest(t));\n }\n src[0] = t;\n\n return pulse;\n};\n","import {FeatureCollection} from './constants';\nimport {Transform} from 'vega-dataflow';\nimport {projection, projectionProperties} from 'vega-projection';\nimport {array, error, inherits, isArray, isFunction} from 'vega-util';\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Projection(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\nvar prototype = inherits(Projection, Transform);\n\nprototype.transform = function(_, pulse) {\n var proj = this.value;\n\n if (!proj || _.modified('type')) {\n this.value = (proj = create(_.type));\n projectionProperties.forEach(function(prop) {\n if (_[prop] != null) set(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(function(prop) {\n if (_.modified(prop)) set(proj, prop, _[prop]);\n });\n }\n\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n};\n\nfunction fit(proj, _) {\n var data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data)\n : _.size ? proj.fitSize(_.size, data) : 0;\n}\n\nfunction create(type) {\n var constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\n\nfunction set(proj, key, value) {\n if (isFunction(proj[key])) proj[key](value);\n}\n\nexport function collectGeoJSON(features) {\n features = array(features);\n return features.length === 1\n ? features[0]\n : {\n type: FeatureCollection,\n features: features.reduce(function(list, f) {\n (f && f.type === FeatureCollection) ? list.push.apply(list, f.features)\n : isArray(f) ? list.push.apply(list, f)\n : list.push(f);\n return list;\n }, [])\n };\n}","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {Transform} from 'vega-dataflow';\nimport {accessorFields, array, error, inherits, isFunction} from 'vega-util';\nimport {\n forceSimulation, forceCenter, forceCollide,\n forceManyBody, forceLink, forceX, forceY\n} from 'd3-force';\n\nvar ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\n\nvar Forces = 'forces',\n ForceParams = [\n 'alpha', 'alphaMin', 'alphaTarget',\n 'velocityDecay', 'forces'\n ],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.forces - The forces to apply.\n */\nexport default function Force(params) {\n Transform.call(this, null, params);\n}\n\nForce.Definition = {\n \"type\": \"Force\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"static\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"restart\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 300 },\n { \"name\": \"alpha\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"alphaMin\", \"type\": \"number\", \"default\": 0.001 },\n { \"name\": \"alphaTarget\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"velocityDecay\", \"type\": \"number\", \"default\": 0.4 },\n { \"name\": \"forces\", \"type\": \"param\", \"array\": true,\n \"params\": [\n {\n \"key\": {\"force\": \"center\"},\n \"params\": [\n { \"name\": \"x\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"y\", \"type\": \"number\", \"default\": 0 }\n ]\n },\n {\n \"key\": {\"force\": \"collide\"},\n \"params\": [\n { \"name\": \"radius\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.7 },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"force\": \"nbody\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": -30 },\n { \"name\": \"theta\", \"type\": \"number\", \"default\": 0.9 },\n { \"name\": \"distanceMin\", \"type\": \"number\", \"default\": 1 },\n { \"name\": \"distanceMax\", \"type\": \"number\" }\n ]\n },\n {\n \"key\": {\"force\": \"link\"},\n \"params\": [\n { \"name\": \"links\", \"type\": \"data\" },\n { \"name\": \"id\", \"type\": \"field\" },\n { \"name\": \"distance\", \"type\": \"number\", \"default\": 30, \"expr\": true },\n { \"name\": \"strength\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"iterations\", \"type\": \"number\", \"default\": 1 }\n ]\n },\n {\n \"key\": {\"force\": \"x\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.1 },\n { \"name\": \"x\", \"type\": \"field\" }\n ]\n },\n {\n \"key\": {\"force\": \"y\"},\n \"params\": [\n { \"name\": \"strength\", \"type\": \"number\", \"default\": 0.1 },\n { \"name\": \"y\", \"type\": \"field\" }\n ]\n }\n ] },\n {\n \"name\": \"as\", \"type\": \"string\", \"array\": true, \"modify\": false,\n \"default\": ForceOutput\n }\n ]\n};\n\nvar prototype = inherits(Force, Transform);\n\nprototype.transform = function(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig)\n || (pulse.changed() && _.restart))\n {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1))\n .alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n};\n\nprototype.finish = function(_, pulse) {\n var dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (var args=this._argops, j=0, m=args.length, arg; j= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","// Build lookup table mapping tuple keys to tree node instances\nexport default function(tree, key, filter) {\n var map = {};\n tree.each(function(node) {\n var t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","import lookup from './lookup';\nimport {ingest, isTuple, Transform, tupleid} from 'vega-dataflow';\nimport {array, error, inherits} from 'vega-util';\nimport {nest} from 'd3-collection';\nimport {hierarchy} from 'd3-hierarchy';\n\n /**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nexport default function Nest(params) {\n Transform.call(this, null, params);\n}\n\nNest.Definition = {\n \"type\": \"Nest\",\n \"metadata\": {\"treesource\": true, \"changes\": true},\n \"params\": [\n { \"name\": \"keys\", \"type\": \"field\", \"array\": true },\n { \"name\": \"generate\", \"type\": \"boolean\" }\n ]\n};\n\nvar prototype = inherits(Nest, Transform);\n\nfunction children(n) {\n return n.values;\n}\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(function(node) {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array(_.keys)\n .reduce(function(n, k) { n.key(k); return n; }, nest())\n .entries(out.source)\n }, children);\n\n // collect nodes to add\n if (gen) {\n tree.each(function(node) {\n if (node.children) {\n node = ingest(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup(tree, tupleid, tupleid);\n }\n\n out.source.root = tree;\n return out;\n};\n","import {Transform} from 'vega-dataflow';\nimport {error, inherits, one} from 'vega-util';\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\n\nvar prototype = inherits(HierarchyLayout, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name\n + ' transform requires a backing tree data source.');\n }\n\n var layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n\n if (_.field) root.sum(_.field);\n if (_.sort) root.sort(_.sort);\n\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one);\n }\n\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(function(node) { setFields(node, fields, as); });\n\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n};\n\nfunction setParams(layout, params, _) {\n for (var p, i=0, n=params.length; i= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {inherits} from 'vega-util';\nimport {pack} from 'd3-hierarchy';\n\nvar Output = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Pack(params) {\n HierarchyLayout.call(this, params);\n}\n\nPack.Definition = {\n \"type\": \"Pack\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"radius\", \"type\": \"field\", \"default\": null },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Pack, HierarchyLayout);\n\nprototype.layout = pack;\n\nprototype.params = ['size', 'padding'];\n\nprototype.fields = Output;\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {inherits} from 'vega-util';\nimport {partition} from 'd3-hierarchy';\n\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Partition(params) {\n HierarchyLayout.call(this, params);\n}\n\nPartition.Definition = {\n \"type\": \"Partition\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"round\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Partition, HierarchyLayout);\n\nprototype.layout = partition;\n\nprototype.params = ['size', 'round', 'padding'];\n\nprototype.fields = Output;\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import lookup from './lookup';\nimport {Transform} from 'vega-dataflow';\nimport {error, inherits, truthy} from 'vega-util';\nimport {stratify} from 'd3-hierarchy';\n\n /**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nexport default function Stratify(params) {\n Transform.call(this, null, params);\n}\n\nStratify.Definition = {\n \"type\": \"Stratify\",\n \"metadata\": {\"treesource\": true},\n \"params\": [\n { \"name\": \"key\", \"type\": \"field\", \"required\": true },\n { \"name\": \"parentKey\", \"type\": \"field\", \"required\": true }\n ]\n};\n\nvar prototype = inherits(Stratify, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n\n var tree = this.value,\n mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !this.value\n || mod\n || pulse.changed(pulse.ADD_REM)\n || pulse.modified(_.key.fields)\n || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n\n if (run) {\n if (out.source.length) {\n tree = lookup(\n stratify().id(_.key).parentId(_.parentKey)(out.source)\n , _.key, truthy);\n } else {\n tree = lookup(stratify()([{}]), _.key, _.key);\n }\n }\n\n out.source.root = this.value = tree;\n return out;\n};\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","import HierarchyLayout from './HierarchyLayout';\nimport {error, inherits} from 'vega-util';\nimport {tree, cluster} from 'd3-hierarchy';\n\nvar Layouts = {\n tidy: tree,\n cluster: cluster\n};\n\nvar Output = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Tree(params) {\n HierarchyLayout.call(this, params);\n}\n\nTree.Definition = {\n \"type\": \"Tree\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"tidy\", \"values\": [\"tidy\", \"cluster\"] },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"nodeSize\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"separation\", \"type\": \"boolean\", \"default\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Tree, HierarchyLayout);\n\n/**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\nprototype.layout = function(method) {\n var m = method || 'tidy';\n if (Layouts.hasOwnProperty(m)) return Layouts[m]();\n else error('Unrecognized Tree layout method: ' + m);\n};\n\nprototype.params = ['size', 'nodeSize'];\n\nprototype.fields = Output;\n","import {ingest, tupleid, Transform} from 'vega-dataflow';\nimport {error, inherits} from 'vega-util';\n\n /**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function TreeLinks(params) {\n Transform.call(this, [], params);\n}\n\nTreeLinks.Definition = {\n \"type\": \"TreeLinks\",\n \"metadata\": {\"tree\": true, \"generates\": true, \"changes\": true},\n \"params\": []\n};\n\nvar prototype = inherits(TreeLinks, Transform);\n\nprototype.transform = function(_, pulse) {\n var links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n\n if (!tree) error('TreeLinks transform requires a tree data source.');\n\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, function(t) { lut[tupleid(t)] = 1; });\n\n // generate links for all edges incident on valid tuples\n tree.each(function(node) {\n var t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest({source: p, target: t}));\n }\n });\n this.value = out.add;\n }\n\n else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, function(t) { lut[tupleid(t)] = 1; });\n\n // gather links incident on modified tuples\n links.forEach(function(link) {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n\n return out;\n};\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import HierarchyLayout from './HierarchyLayout';\nimport {error, inherits} from 'vega-util';\nimport {\n treemap,\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify\n} from 'd3-hierarchy';\n\nvar Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\n\nvar Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nexport default function Treemap(params) {\n HierarchyLayout.call(this, params);\n}\n\nTreemap.Definition = {\n \"type\": \"Treemap\",\n \"metadata\": {\"tree\": true, \"modifies\": true},\n \"params\": [\n { \"name\": \"field\", \"type\": \"field\" },\n { \"name\": \"sort\", \"type\": \"compare\" },\n { \"name\": \"method\", \"type\": \"enum\", \"default\": \"squarify\",\n \"values\": [\"squarify\", \"resquarify\", \"binary\", \"dice\", \"slice\", \"slicedice\"] },\n { \"name\": \"padding\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingInner\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingOuter\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingTop\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingRight\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingBottom\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"paddingLeft\", \"type\": \"number\", \"default\": 0 },\n { \"name\": \"ratio\", \"type\": \"number\", \"default\": 1.618033988749895 },\n { \"name\": \"round\", \"type\": \"boolean\", \"default\": false },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": Output.length, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Treemap, HierarchyLayout);\n\n/**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\nprototype.layout = function() {\n var x = treemap();\n x.ratio = function(_) {\n var t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = function(_) {\n if (Tiles.hasOwnProperty(_)) x.tile(Tiles[_]);\n else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n};\n\nprototype.params = [\n 'method', 'ratio', 'size', 'round',\n 'padding', 'paddingInner', 'paddingOuter',\n 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'\n];\n\nprototype.fields = Output;\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\nimport {voronoi} from 'd3-voronoi';\n\nexport default function Voronoi(params) {\n Transform.call(this, null, params);\n}\n\nVoronoi.Definition = {\n \"type\": \"Voronoi\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"x\", \"type\": \"field\", \"required\": true },\n { \"name\": \"y\", \"type\": \"field\", \"required\": true },\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"extent\", \"type\": \"array\", \"array\": true, \"length\": 2,\n \"default\": [[-1e5, -1e5], [1e5, 1e5]],\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} },\n { \"name\": \"as\", \"type\": \"string\", \"default\": \"path\" }\n ]\n};\n\nvar prototype = inherits(Voronoi, Transform);\n\nvar defaultExtent = [[-1e5, -1e5], [1e5, 1e5]];\n\nprototype.transform = function(_, pulse) {\n var as = _.as || 'path',\n data = pulse.source,\n diagram, polygons, i, n;\n\n // configure and construct voronoi diagram\n diagram = voronoi().x(_.x).y(_.y);\n if (_.size) diagram.size(_.size);\n else diagram.extent(_.extent || defaultExtent);\n\n this.value = (diagram = diagram(data));\n\n // map polygons to paths\n polygons = diagram.polygons();\n for (i=0, n=data.length; i> 5,\n ch = 1 << 11;\n\nexport default function() {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n\n cloud.layout = function() {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(function(d) {\n return {\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~fontSize(d),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n };\n }).sort(function(a, b) { return b.size - a.size; });\n\n while (++i < n) {\n var d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n\n return tags;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n var context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return {context: context, ratio: ratio};\n }\n\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.words = function(_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n\n cloud.size = function(_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n\n cloud.font = function(_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n\n cloud.fontStyle = function(_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n\n cloud.fontWeight = function(_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n\n cloud.rotate = function(_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n\n cloud.text = function(_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n\n cloud.spiral = function(_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n\n cloud.fontSize = function(_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n\n cloud.padding = function(_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n\n cloud.random = function(_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w, w32, h, i, j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n w = c.measureText(d.text + \"m\").width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function(t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function(t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function() { return d; };\n}\n\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import cloud from './CloudLayout';\nimport {Transform} from 'vega-dataflow';\nimport {constant, inherits, isFunction} from 'vega-util';\nimport {scale} from 'vega-scale';\nimport {random} from 'vega-statistics';\n\nvar Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\n\nvar Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\n\nexport default function Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\n\nWordcloud.Definition = {\n \"type\": \"Wordcloud\",\n \"metadata\": {\"modifies\": true},\n \"params\": [\n { \"name\": \"size\", \"type\": \"number\", \"array\": true, \"length\": 2 },\n { \"name\": \"font\", \"type\": \"string\", \"expr\": true, \"default\": \"sans-serif\" },\n { \"name\": \"fontStyle\", \"type\": \"string\", \"expr\": true, \"default\": \"normal\" },\n { \"name\": \"fontWeight\", \"type\": \"string\", \"expr\": true, \"default\": \"normal\" },\n { \"name\": \"fontSize\", \"type\": \"number\", \"expr\": true, \"default\": 14 },\n { \"name\": \"fontSizeRange\", \"type\": \"number\", \"array\": \"nullable\", \"default\": [10, 50] },\n { \"name\": \"rotate\", \"type\": \"number\", \"expr\": true, \"default\": 0 },\n { \"name\": \"text\", \"type\": \"field\" },\n { \"name\": \"spiral\", \"type\": \"string\", \"values\": [\"archimedean\", \"rectangular\"] },\n { \"name\": \"padding\", \"type\": \"number\", \"expr\": true },\n { \"name\": \"as\", \"type\": \"string\", \"array\": true, \"length\": 7, \"default\": Output }\n ]\n};\n\nvar prototype = inherits(Wordcloud, Transform);\n\nprototype.transform = function(_, pulse) {\n function modp(param) {\n var p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n\n var mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n\n var data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output,\n fontSize = _.fontSize || 14,\n range;\n\n isFunction(fontSize)\n ? (range = _.fontSizeRange)\n : (fontSize = constant(fontSize));\n\n // create font size scaling function as needed\n if (range) {\n var fsize = fontSize,\n sizeScale = scale('sqrt')()\n .domain(extent(fsize, data))\n .range(range);\n fontSize = function(x) { return sizeScale(fsize(x)); };\n }\n\n data.forEach(function(t) {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n var words = layout\n .words(data)\n .text(_.text)\n .size(_.size || [500, 500])\n .padding(_.padding || 1)\n .spiral(_.spiral || 'archimedean')\n .rotate(_.rotate || 0)\n .font(_.font || 'sans-serif')\n .fontStyle(_.fontStyle || 'normal')\n .fontWeight(_.fontWeight || 'normal')\n .fontSize(fontSize)\n .random(random)\n .layout();\n\n var size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n i = 0,\n n = words.length,\n w, t;\n\n for (; i max) max = v;\n }\n\n return [min, max];\n}\n","export function array8(n) { return new Uint8Array(n); }\n\nexport function array16(n) { return new Uint16Array(n); }\n\nexport function array32(n) { return new Uint32Array(n); }\n","import {array8, array16, array32} from './arrays';\n\n/**\n * Maintains CrossFilter state.\n */\nexport default function Bitmaps() {\n\n var width = 8,\n data = [],\n seen = array32(0),\n curr = array(0, width),\n prev = array(0, width);\n\n return {\n\n data: function() { return data; },\n\n seen: function() {\n return (seen = lengthen(seen, data.length));\n },\n\n add: function(array) {\n for (var i=0, j=data.length, n=array.length, t; i boolean (true => remove)\n var n = data.length,\n copy = Array(n - num),\n reindex = data, // reuse old data array for index map\n t, i, j;\n\n // seek forward to first removal\n for (i=0; !map[i] && i k || m > width) {\n width = Math.max(m, width);\n curr = array(n, width, curr);\n prev = array(n, width);\n }\n }\n };\n}\n\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\n\nfunction array(n, m, array) {\n var copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\n","export default function(index, i, query) {\n var bit = (1 << i);\n\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n\n onAdd: function(added, curr) {\n var dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length, i;\n\n for (i=0; i 0) for (i=0; i remove\n var n = size,\n idx, i, j;\n\n // seek forward to first removal\n for (i=0; !map[index[i]] && i y ? 1 : 0;\n });\n return permute(values, index);\n}\n\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n var i0 = 0, i1 = 0, i;\n\n for (i=0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n","export default function(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import Bitmaps from './Bitmaps';\nimport Dimension from './Dimension';\nimport SortedIndex from './SortedIndex';\nimport {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nexport default function CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\n\nCrossFilter.Definition = {\n \"type\": \"CrossFilter\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"fields\", \"type\": \"field\", \"array\": true, \"required\": true },\n { \"name\": \"query\", \"type\": \"array\", \"array\": true, \"required\": true,\n \"content\": {\"type\": \"number\", \"array\": true, \"length\": 2} }\n ]\n};\n\nvar prototype = inherits(CrossFilter, Transform);\n\nprototype.transform = function(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields')\n || _.fields.some(function(f) { return pulse.modified(f.fields); });\n\n return init\n ? this.reinit(_, pulse)\n : this.eval(_, pulse);\n }\n};\n\nprototype.init = function(_, pulse) {\n var fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length,\n i = 0, key, index;\n\n // instantiate indices and dimensions\n for (; i lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n dim.range = query.slice();\n};\n\nprototype.incrementOne = function(dim, query, add, rem) {\n var bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one,\n i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n dim.range = query.slice();\n};\n","import {Transform} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nexport default function ResolveFilter(params) {\n Transform.call(this, null, params);\n}\n\nResolveFilter.Definition = {\n \"type\": \"ResolveFilter\",\n \"metadata\": {},\n \"params\": [\n { \"name\": \"ignore\", \"type\": \"number\", \"required\": true,\n \"description\": \"A bit mask indicating which filters to ignore.\" },\n { \"name\": \"filter\", \"type\": \"object\", \"required\": true,\n \"description\": \"Per-tuple filter bitmaps from a CrossFilter transform.\" }\n ]\n};\n\nvar prototype = inherits(ResolveFilter, Transform);\n\nprototype.transform = function(_, pulse) {\n var ignore = ~(_.ignore || 0), // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n\n var output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = function(k) {\n return !(curr[k] & ignore) ? data[k] : null;\n };\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & (mask-1))) { // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, function(k) {\n return (curr[k] & ignore) === mask ? data[k] : null;\n });\n\n } else { // multiple filters changed\n output.filter(output.ADD, function(k) {\n var c = curr[k] & ignore,\n f = !c && (c ^ (prev[k] & ignore));\n return f ? data[k] : null;\n });\n output.filter(output.REM, function(k) {\n var c = curr[k] & ignore,\n f = c && !(c ^ (c ^ (prev[k] & ignore)));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, function(t) { return pass(t._index); });\n};\n","import {isString} from 'vega-util';\n\nvar Default = 'default';\n\nexport default function(view) {\n var cursor = view._signals.cursor;\n\n // add cursor signal to dataflow, if needed\n if (!cursor) {\n view._signals.cursor = (cursor = view.add({user: Default, item: null}));\n }\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor,\n function(_, event) {\n var value = cursor.value,\n user = value ? (isString(value) ? value : value.user) : Default,\n item = event.item && event.item.cursor || null;\n\n return (value && user === value.user && item == value.item) ? value\n : {user: user, item: item};\n }\n );\n\n // when cursor signal updates, set visible cursor\n view.add(null, function(_) {\n var user = _.cursor,\n item = this.value;\n\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n\n setCursor(user && user !== Default ? user : (item || user));\n\n return item;\n }, {cursor: cursor});\n}\n\nfunction setCursor(cursor) {\n // set cursor on document body\n // this ensures cursor applies even if dragging out of view\n if (typeof document !== 'undefined' && document.body) {\n document.body.style.cursor = cursor;\n }\n}\n","import {changeset, isChangeSet} from 'vega-dataflow';\nimport {error} from 'vega-util';\n\nexport function dataref(view, name) {\n var data = view._runtime.data;\n if (!data.hasOwnProperty(name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\n\nexport function data(name) {\n return dataref(this, name).values.value;\n}\n\nexport function change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n var dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\n\nexport function insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\n\nexport function remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\n","export function width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\n\nexport function height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\n\nexport function offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [\n padding.left + origin[0],\n padding.top + origin[1]\n ];\n}\n\nexport function resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n\n view._renderer.background(view._background);\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n\n view._resizeListeners.forEach(function(handler) {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n","import eventExtend from './events-extend';\nimport {EventStream} from 'vega-dataflow';\nimport {extend, isArray, toSet} from 'vega-util';\n\nvar VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {trap: false};\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nexport function initializeEventConfig(config) {\n config = extend({}, config);\n\n var def = config.defaults;\n if (def) {\n if (isArray(def.prevent)) {\n def.prevent = toSet(def.prevent);\n }\n if (isArray(def.allow)) {\n def.allow = toSet(def.allow);\n }\n }\n\n return config;\n}\n\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def && def.prevent,\n allow = def && def.allow;\n\n return prevent === false || allow === true ? false\n : prevent === true || allow === false ? true\n : prevent ? prevent[type]\n : allow ? !allow[type]\n : view.preventDefault();\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nexport function events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function(e, item) {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n try {\n s.receive(eventExtend(view, e, item));\n } catch (error) {\n view.error(error);\n } finally {\n view.run();\n }\n },\n sources;\n\n if (source === TIMER) {\n view.timer(send, type);\n }\n\n else if (source === VIEW) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n\n else {\n if (source === WINDOW) {\n if (typeof window !== 'undefined') sources = [window];\n } else if (typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n }\n\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i=0, n=sources.length; i 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import element from './element';\nimport {debounce} from 'vega-util';\nimport {tickStep} from 'd3-array';\n\nvar BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio',\n OptionClass = 'vega-option-';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nexport default function(view, el, binding) {\n if (!el) return;\n\n var param = binding.param,\n bind = binding.state;\n\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: function(value) {\n if (value !== view.signal(param.signal)) {\n bind.source = true;\n view.signal(param.signal, value).run();\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n\n generate(bind, el, param, view.signal(param.signal));\n\n if (!bind.active) {\n view.on(view._signals[param.signal], null, function() {\n bind.source\n ? (bind.source = false)\n : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n\n return bind;\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, value) {\n var div = element('div', {'class': BindClass});\n\n div.appendChild(element('span',\n {'class': NameClass},\n (param.name || param.signal)\n ));\n\n el.appendChild(div);\n\n var input = form;\n switch (param.input) {\n case 'checkbox': input = checkbox; break;\n case 'select': input = select; break;\n case 'radio': input = radio; break;\n case 'range': input = range; break;\n }\n\n input(bind, div, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n var node = element('input');\n\n for (var key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n\n el.appendChild(node);\n\n node.addEventListener('input', function() {\n bind.update(node.value);\n });\n\n bind.elements = [node];\n bind.set = function(value) { node.value = value; };\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n var attr = {type: 'checkbox', name: param.signal};\n if (value) attr.checked = true;\n var node = element('input', attr);\n\n el.appendChild(node);\n\n node.addEventListener('change', function() {\n bind.update(node.checked);\n });\n\n bind.elements = [node];\n bind.set = function(value) { node.checked = !!value || null; }\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n var node = element('select', {name: param.signal});\n\n param.options.forEach(function(option) {\n var attr = {value: option};\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, option+''));\n });\n\n el.appendChild(node);\n\n node.addEventListener('change', function() {\n bind.update(param.options[node.selectedIndex]);\n });\n\n bind.elements = [node];\n bind.set = function(value) {\n for (var i=0, n=param.options.length; i\n Copyright (C) 2013 Thaddee Tyl \n Copyright (C) 2013 Mathias Bynens \n Copyright (C) 2012 Ariya Hidayat \n Copyright (C) 2012 Mathias Bynens \n Copyright (C) 2012 Joost-Wim Boekesteijn \n Copyright (C) 2012 Kris Kowal \n Copyright (C) 2012 Yusuke Suzuki \n Copyright (C) 2012 Arpad Borsos \n Copyright (C) 2011 Ariya Hidayat \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nimport ASTNode from './ast';\n\nvar TokenName,\n source,\n index,\n length,\n lookahead;\n\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\n\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\n\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\n\nvar ILLEGAL = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n // eslint-disable-next-line no-misleading-character-class\n RegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]');\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\n\nfunction isDecimalDigit(ch) {\n return (ch >= 0x30 && ch <= 0x39); // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)));\n}\n\nfunction isIdentifierPart(ch) {\n return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore)\n (ch >= 0x41 && ch <= 0x5A) || // A..Z\n (ch >= 0x61 && ch <= 0x7A) || // a..z\n (ch >= 0x30 && ch <= 0x39) || // 0..9\n (ch === 0x5C) || // \\ (backslash)\n ((ch >= 0x80) && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n}\n\n// 7.6.1.1 Keywords\n\nvar keywords = {\n 'if':1, 'in':1, 'do':1,\n 'var':1, 'for':1, 'new':1, 'try':1, 'let':1,\n 'this':1, 'else':1, 'case':1, 'void':1, 'with':1, 'enum':1,\n 'while':1, 'break':1, 'catch':1, 'throw':1, 'const':1, 'yield':1, 'class':1, 'super':1,\n 'return':1, 'typeof':1, 'delete':1, 'switch':1, 'export':1, 'import':1, 'public':1, 'static':1,\n 'default':1, 'finally':1, 'extends':1, 'package':1, 'private':1,\n 'function':1, 'continue':1, 'debugger':1,\n 'interface':1, 'protected':1,\n 'instanceof':1, 'implements':1\n};\n\nfunction skipComment() {\n var ch;\n\n while (index < length) {\n ch = source.charCodeAt(index);\n\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\n\nfunction scanHexEscape(prefix) {\n var i, len, ch, code = 0;\n\n len = (prefix === 'u') ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = ((code - 0x10000) >> 10) + 0xD800;\n cu2 = ((code - 0x10000) & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n var ch, id;\n\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id = ch;\n }\n\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id += ch;\n }\n }\n\n return id;\n}\n\nfunction getIdentifier() {\n var start, ch;\n\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords.hasOwnProperty(id)) { // eslint-disable-line no-prototype-builtins\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n\n switch (code) {\n\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E: // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A: // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n\n case 0x21: // !\n case 0x3D: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n\n if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n var number = '';\n\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\n\nfunction scanOctalLiteral(start) {\n var number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\n\nfunction scanNumericLiteral() {\n var number, start, ch;\n\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote, start, ch, code, octal = false;\n\n quote = source[index];\n assert((quote === '\\'' || quote === '\"'),\n 'String literal must starts with a quote');\n\n start = index;\n ++index;\n\n while (index < length) {\n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 &&\n index < length &&\n isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\n\nfunction testRegExp(pattern, flags) {\n var tmp = pattern;\n\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp\n .replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n })\n .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\n\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\n\nfunction scanRegExpFlags() {\n var ch, str, flags;\n\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n } else {\n flags += ch;\n str += ch;\n }\n }\n\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n\n return {\n value: flags,\n literal: str\n };\n}\n\nfunction scanRegExp() {\n var start, body, flags, value;\n\n lookahead = null;\n skipComment();\n start = index;\n\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\n\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier ||\n token.type === TokenKeyword ||\n token.type === TokenBooleanLiteral ||\n token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n var ch;\n\n skipComment();\n\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n\n ch = source.charCodeAt(index);\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n return scanPunctuator();\n}\n\nfunction lex() {\n var token;\n\n token = lookahead;\n index = token.end;\n\n lookahead = advance();\n\n index = token.end;\n\n return token;\n}\n\nfunction peek() {\n var pos;\n\n pos = index;\n\n lookahead = advance();\n index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n var node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n var node = new ASTNode((operator === '||' || operator === '&&') ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction finishCallExpression(callee, args) {\n var node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n var node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\n\nfunction finishIdentifier(name) {\n var node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\n\nfunction finishLiteral(token) {\n var node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n var node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\n\nfunction finishObjectExpression(properties) {\n var node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\n\nfunction finishProperty(kind, key, value) {\n var node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n var node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n (whole, index) => {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n var token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n var elements = [];\n\n index = lookahead.start;\n expect('[');\n\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n\n if (!match(']')) {\n expect(',');\n }\n }\n }\n\n lex();\n\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n var token;\n\n index = lookahead.start;\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n\n return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n var token, key, id, value;\n\n index = lookahead.start;\n token = lookahead;\n\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\n\nfunction parseObjectInitialiser() {\n var properties = [],\n property, name, key, map = {},\n toString = String;\n\n index = lookahead.start;\n expect('{');\n\n while (!match('}')) {\n property = parseObjectProperty();\n\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n\n properties.push(property);\n\n if (!match('}')) {\n expect(',');\n }\n }\n\n expect('}');\n\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n var expr;\n\n expect('(');\n\n expr = parseExpression();\n\n expect(')');\n\n return expr;\n}\n\n\n// 11.1 Primary Expressions\n\nvar legalKeywords = {\n 'if': 1\n};\n\nfunction parsePrimaryExpression() {\n var type, token, expr;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n if (match('[')) {\n return parseArrayInitialiser();\n }\n\n if (match('{')) {\n return parseObjectInitialiser();\n }\n\n type = lookahead.type;\n index = lookahead.start;\n\n\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n var args = [];\n\n expect('(');\n\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n\n expect(')');\n\n return args;\n}\n\nfunction parseNonComputedProperty() {\n var token;\n index = lookahead.start;\n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n expect('.');\n\n return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n var expr;\n\n expect('[');\n\n expr = parseExpression();\n\n expect(']');\n\n return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n\n expr = parsePrimaryExpression();\n\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n var expr = parseLeftHandSideExpressionAllowCall();\n\n if (lookahead.type === TokenPunctuator) {\n if ((match('++') || match('--'))) {\n throw new Error(DISABLED);\n }\n }\n\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n}\n\nfunction binaryPrecedence(token) {\n var prec = 0;\n\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n\n case '&&':\n prec = 2;\n break;\n\n case '|':\n prec = 3;\n break;\n\n case '^':\n prec = 4;\n break;\n\n case '&':\n prec = 5;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n\n default:\n break;\n }\n\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n\n marker = lookahead;\n left = parseUnaryExpression();\n\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop();\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n var expr = parseConditionalExpression();\n\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\n\nexport default function(code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n\n peek();\n\n var expr = parseExpression();\n\n if (lookahead.type !== TokenEOF) {\n throw new Error('Unexpect token after expression.');\n }\n return expr;\n}\n","export default {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\n","import {error} from 'vega-util';\n\nexport default function(codegen) {\n\n function fncall(name, args, cast, type) {\n let obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ?\n '()' :\n '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n\n function fn(name, cast, type) {\n return args => fncall(name, args, cast, type);\n }\n\n const DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n\n return {\n // MATH functions\n isNaN: 'Number.isNaN',\n isFinite: 'Number.isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n\n clamp: function(args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n const a = args.map(codegen);\n return 'Math.max('+a[1]+', Math.min('+a[2]+','+a[0]+'))';\n },\n\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n\n // sequence functions\n length: fn('length', null, -1),\n join: fn('join', null),\n indexof: fn('indexOf', null),\n lastindexof: fn('lastIndexOf', null),\n slice: fn('slice', null),\n\n reverse: function(args) {\n return '('+codegen(args[0])+').slice().reverse()';\n },\n\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n replace: fn('replace', STRING),\n trim: fn('trim', STRING, 0),\n\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n\n // Control Flow functions\n if: function(args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n const a = args.map(codegen);\n return '('+a[0]+'?'+a[1]+':'+a[2]+')';\n }\n };\n}\n","import {format as d3_format} from 'd3-format';\nimport {\n timeFormat as d3_timeFormat,\n timeParse as d3_timeParse,\n utcFormat as d3_utcFormat,\n utcParse as d3_utcParse\n} from 'd3-time-format';\n\nvar formatCache = {};\n\nfunction formatter(type, method, specifier) {\n var k = type + ':' + specifier,\n e = formatCache[k];\n if (!e || e[0] !== method) {\n formatCache[k] = (e = [method, method(specifier)]);\n }\n return e[1];\n}\n\nexport function format(_, specifier) {\n return formatter('format', d3_format, specifier)(_);\n}\n\nexport function timeFormat(_, specifier) {\n return formatter('timeFormat', d3_timeFormat, specifier)(_);\n}\n\nexport function utcFormat(_, specifier) {\n return formatter('utcFormat', d3_utcFormat, specifier)(_);\n}\n\nexport function timeParse(_, specifier) {\n return formatter('timeParse', d3_timeParse, specifier)(_);\n}\n\nexport function utcParse(_, specifier) {\n return formatter('utcParse', d3_utcParse, specifier)(_);\n}\n\nvar dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat(dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time(month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time(month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time(0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time(0, 2 + day, '%a');\n}\n","/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nexport function extent(array) {\n var i = 0, n, v, min, max;\n\n if (array && (n = array.length)) {\n // find first valid value\n for (v = array[i]; v == null || v !== v; v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i max) max = v;\n }\n }\n }\n\n return [min, max];\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nexport function inrange(value, range, left, right) {\n var r0 = range[0], r1 = range[range.length-1], t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n\n return (left ? r0 <= value : r0 < value) &&\n (right ? value <= r1 : value < r1);\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nexport function clampRange(range, min, max) {\n var lo = range[0],\n hi = range[1],\n span;\n\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n\n return span >= (max - min)\n ? [min, max]\n : [\n (lo = Math.min(Math.max(lo, min), max - span)),\n lo + span\n ];\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nexport function span(array) {\n return (array[array.length-1] - array[0]) || 0;\n}\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","var _window = (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n return _window ? _window.screen : {};\n}\n\nexport function windowSize() {\n return _window\n ? [_window.innerWidth, _window.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n var view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","export var Literal = 'Literal';\nexport var Identifier = 'Identifier';\n","export var indexPrefix = '@';\nexport var scalePrefix = '%';\nexport var dataPrefix = ':';\n","import {Literal, Identifier} from './ast';\nimport {scalePrefix} from './prefixes';\nimport {bandSpace} from 'vega-scale';\nimport {isArray, isFunction, isString} from 'vega-util';\n\nexport function getScale(name, ctx) {\n var s;\n return isFunction(name) ? name\n : isString(name) ? (s = ctx.scales[name]) && s.value\n : undefined;\n}\n\nfunction addScaleDependency(scope, params, name) {\n var scaleName = scalePrefix + name;\n if (!params.hasOwnProperty(scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n }\n else if (args[0].type === Identifier) {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nexport function range(name, group) {\n var s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function domain(name, group) {\n var s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function bandwidth(name, group) {\n var s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function copy(name, group) {\n var s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function scale(name, value, group) {\n var s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\n\nexport function invert(name, range, group) {\n var s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","import {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\nimport {getScale} from './scale';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n var p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport var geoArea = geoMethod('area', area);\nexport var geoBounds = geoMethod('bounds', bounds);\nexport var geoCentroid = geoMethod('centroid', centroid);\n","import {Literal} from './ast';\nimport {dataPrefix, indexPrefix} from './prefixes';\nimport {error, truthy} from 'vega-util';\n\nexport function data(name) {\n var data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n var data = args[0].value,\n dataName = dataPrefix + data;\n\n if (!params.hasOwnProperty(dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\n\nexport function indata(name, field, value) {\n var index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n var data = args[0].value,\n field = args[1].value,\n indexName = indexPrefix + field;\n\n if (!params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function setdata(name, tuples) {\n var df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","import {data} from './data';\n\nvar EMPTY = {};\n\nfunction datum(d) { return d.data; }\n\nfunction treeNodes(name, context) {\n var tree = data.call(context, name);\n return tree.root && tree.root.lookup || EMPTY;\n}\n\nexport function treePath(name, source, target) {\n var nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n var n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) && isArray(b) && a.length === b.length ? equalArray(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (var i=0, n=a.length; i, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nexport function vlSelectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === INTERSECT,\n n = entries.length,\n i = 0,\n entry, miss, count, unit, b;\n\n for (; i= 2 && args[args.length-1].value,\n field = 'unit',\n indexName = indexPrefix + field;\n\n if (op === INTERSECT && !params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n dataVisitor(name, args, scope, params);\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @returns {object} An object of selected fields and values.\n */\nexport function vlSelectionResolve(name, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {}, types = {},\n entry, fields, values, unit, field, res, resUnit, type, union,\n n = entries.length, i = 0, j, m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[type + '_union'];\n res[unit] = union(resUnit, array(values[j]));\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || UNION;\n Object.keys(resolved).forEach(function (field) {\n resolved[field] = Object.keys(resolved[field])\n .map(function (unit) { return resolved[field][unit]; })\n .reduce(function (acc, curr) {\n return acc === undefined ? curr :\n ops[types[field] + '_' + op](acc, curr);\n });\n });\n\n return resolved;\n}\n\nvar ops = {\n 'E_union': function (base, value) {\n if (!base.length) return value;\n\n var i = 0, n = value.length;\n for (; i= 0; });\n },\n\n 'R_union': function (base, value) {\n var lo = toNumber(value[0]), hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n },\n\n 'R_intersect': function (base, value) {\n var lo = toNumber(value[0]), hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n }\n}\n","import {inrange} from './arrays';\nimport {Literal} from './ast';\nimport {dataVisitor} from './data';\nimport {indexPrefix} from './prefixes';\nimport {error, field, isNumber, isString, isDate, toNumber} from 'vega-util';\n\nvar BIN = 'bin_',\n INTERSECT = 'intersect',\n UNION = 'union',\n UNIT_INDEX = 'index:unit';\n\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n getter = entry.getter || (entry.getter = []),\n n = fields.length,\n i = 0, dval;\n\n for (; i, fields: array, values: array<*>, bins: object}\nexport function vlPoint(name, datum, op) {\n return vlSelection.call(this, name, datum, op, testPoint);\n}\n\n// Assumes interval selection typles are of the form:\n// {unit: string, intervals: array<{encoding: string, field:string, extent:array}>}\nexport function vlInterval(name, datum, op) {\n return vlSelection.call(this, name, datum, op, testInterval);\n}\n\nexport function vlMultiVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n\n var data = args[0].value,\n // vlMulti, vlMultiDomain have different # of params, but op is always last.\n op = args.length >= 2 && args[args.length-1].value,\n field = 'unit',\n indexName = indexPrefix + field;\n\n if (op === INTERSECT && !params.hasOwnProperty(indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n dataVisitor(name, args, scope, params);\n}\n\n/**\n * Materializes a point selection as a scale domain.\n * @param {string} name - The name of the dataset representing the selection.\n * @param {string} [encoding] - A particular encoding channel to materialize.\n * @param {string} [field] - A particular field to materialize.\n * @param {string} [op='intersect'] - The set operation for combining selections.\n * One of 'intersect' (default) or 'union'.\n * @returns {array} An array of values to serve as a scale domain.\n */\nexport function vlPointDomain(name, encoding, field, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n entry = entries[0],\n i = 0, n, index, values, continuous, units;\n\n if (!entry) return undefined;\n\n for (n = encoding ? entry.encodings.length : entry.fields.length; i 2;\n break;\n }\n }\n\n values = entries.reduce(function(acc, entry) {\n var extent = entry.intervals[index].extent,\n value = discrete\n ? extent.map(function (d) { return {unit: entry.unit, value: d}; })\n : {unit: entry.unit, value: extent};\n\n if (discrete) {\n acc.push.apply(acc, value);\n } else {\n acc.push(value);\n }\n return acc;\n }, []);\n\n\n return discrete ? discreteDomain(values, op) : continuousDomain(values, op);\n}\n\nfunction discreteDomain(entries, op) {\n var units = {}, count = 0,\n values = {}, domain = [],\n i = 0, n = entries.length,\n entry, unit, v, key;\n\n for (; i hi) {\n hi = extent[0];\n lo = extent[1];\n }\n domain = domain ? merge(domain, lo, hi) : [lo, hi];\n }\n\n return domain && domain.length && (+domain[0] !== +domain[1])\n ? domain\n : undefined;\n}\n\nfunction unionInterval(domain, lo, hi) {\n if (domain[0] > lo) domain[0] = lo;\n if (domain[1] < hi) domain[1] = hi;\n return domain;\n}\n\nfunction intersectInterval(domain, lo, hi) {\n if (hi < domain[0] || domain[1] < lo) {\n return [];\n } else {\n if (domain[0] < lo) domain[0] = lo;\n if (domain[1] > hi) domain[1] = hi;\n }\n return domain;\n}\n","import {isTuple} from 'vega-dataflow';\nimport {codegen, constants, functions} from 'vega-expression';\nimport {random} from 'vega-statistics';\nimport {\n isArray, isBoolean, isDate, isNumber, isObject, isRegExp, isString,\n panLinear, panLog, panPow, zoomLinear, zoomLog, zoomPow,\n toBoolean, toDate, toNumber, toString,\n pad, peek, stringValue, truncate\n} from 'vega-util';\nimport {rgb, lab, hcl, hsl} from 'd3-color';\nimport {range as sequence} from 'd3-array';\n\nimport {\n format, utcFormat, timeFormat, utcParse, timeParse,\n monthFormat, monthAbbrevFormat,\n dayFormat, dayAbbrevFormat\n} from './format';\nimport {extent, inrange, clampRange, span} from './arrays';\nimport {quarter, utcquarter} from './quarter';\nimport {warn, info, debug} from './log';\nimport inScope from './inscope';\nimport {pinchDistance, pinchAngle} from './pinch';\nimport {containerSize, screen, windowSize} from './window';\nimport flush from './flush';\nimport merge from './merge';\nimport {range, domain, bandwidth, bandspace, copy, scale, invert, scaleVisitor} from './scale';\nimport scaleGradient from './scale-gradient';\nimport {geoArea, geoBounds, geoCentroid} from './geo';\nimport {geoShape, pathShape} from './shape';\nimport {data, indata, setdata, dataVisitor, indataVisitor} from './data';\nimport {treePath, treeAncestors} from './tree';\nimport encode from './encode';\nimport modify from './modify';\nimport {vlSelectionTest, vlSelectionResolve, vlSelectionVisitor} from './selection';\nimport {vlPoint, vlPointDomain, vlMultiVisitor, vlInterval, vlIntervalDomain} from './selection.deprecated';\n\n// Expression function context object\nexport var functionContext = {\n random: function() { return random(); }, // override default\n isArray: isArray,\n isBoolean: isBoolean,\n isDate: isDate,\n isNumber: isNumber,\n isObject: isObject,\n isRegExp: isRegExp,\n isString: isString,\n isTuple: isTuple,\n toBoolean: toBoolean,\n toDate: toDate,\n toNumber: toNumber,\n toString: toString,\n pad: pad,\n peek: peek,\n truncate: truncate,\n rgb: rgb,\n lab: lab,\n hcl: hcl,\n hsl: hsl,\n sequence: sequence,\n format: format,\n utcFormat: utcFormat,\n utcParse: utcParse,\n timeFormat: timeFormat,\n timeParse: timeParse,\n monthFormat: monthFormat,\n monthAbbrevFormat: monthAbbrevFormat,\n dayFormat: dayFormat,\n dayAbbrevFormat: dayAbbrevFormat,\n quarter: quarter,\n utcquarter: utcquarter,\n warn: warn,\n info: info,\n debug: debug,\n extent: extent,\n inScope: inScope,\n clampRange: clampRange,\n pinchDistance: pinchDistance,\n pinchAngle: pinchAngle,\n screen: screen,\n containerSize: containerSize,\n windowSize: windowSize,\n span: span,\n merge: merge,\n flush: flush,\n bandspace: bandspace,\n inrange: inrange,\n setdata: setdata,\n pathShape: pathShape,\n panLinear: panLinear,\n panLog: panLog,\n panPow: panPow,\n zoomLinear: zoomLinear,\n zoomLog: zoomLog,\n zoomPow: zoomPow,\n encode: encode,\n modify: modify\n};\n\nvar eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// Vega-Lite selection functions.\nexpressionFunction('vlSelectionTest', vlSelectionTest, vlSelectionVisitor);\nexpressionFunction('vlSelectionResolve', vlSelectionResolve, vlSelectionVisitor);\n\n// Deprecated selection functions kept around to avoid a major version bump.\nexpressionFunction('vlSingle', vlPoint, dataVisitor);\nexpressionFunction('vlSingleDomain', vlPointDomain, dataVisitor);\nexpressionFunction('vlMulti', vlPoint, vlMultiVisitor);\nexpressionFunction('vlMultiDomain', vlPointDomain, vlMultiVisitor);\nexpressionFunction('vlInterval', vlInterval, dataVisitor);\nexpressionFunction('vlIntervalDomain', vlIntervalDomain, dataVisitor);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n var fn = functions(codegen);\n eventFunctions.forEach(function(name) { fn[name] = eventPrefix + name; });\n for (var name in functionContext) { fn[name] = thisPrefix + name; }\n return fn;\n}\n\n// Export code generator and parameters\nexport var codegenParams = {\n blacklist: ['_'],\n whitelist: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: function(id) { return '_[' + stringValue('$' + id) + ']'; },\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\nexport var codeGenerator = codegen(codegenParams);\n","export function quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\n\nexport function utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n","export default function(item) {\n var group = this.context.group,\n value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","export function pinchDistance(event) {\n var t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function pinchAngle(event) {\n var t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {extend} from 'vega-util';\n\nexport default function() {\n var args = [].slice.call(arguments);\n args.unshift({});\n return extend.apply(null, args);\n}\n","import {peek} from 'vega-util';\n\nexport default function(range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n\n var a = range[0],\n b = peek(range),\n t = +threshold,\n l, r;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a; a = b; b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n r = Math.abs(b - value);\n\n // adjust if value within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\n","import {getScale} from './scale';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n var p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n }\n}\n\nexport function pathShape(path) {\n var p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","export default function(item, name, retval) {\n if (item) {\n var df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","import {getScale} from './scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {scaleFraction} from 'vega-scale';\nimport {peek} from 'vega-util';\n\nexport default function(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n\n var gradient = Gradient(p0, p1),\n stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = scaleFraction(scale, min, max);\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n for (var i=0, n=stops.length; i `${globalvar}[\"${id}\"]`;\n\n let globals = {},\n fields = {},\n memberDepth = 0;\n\n function visit(ast) {\n if (isString(ast)) return ast;\n const generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n\n const Generators = {\n Literal: n => n.raw,\n\n Identifier: n => {\n const id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (hasOwnProperty(blacklist, id)) {\n return error('Illegal identifier: ' + id);\n } else if (hasOwnProperty(constants, id)) {\n return constants[id];\n } else if (hasOwnProperty(whitelist, id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n\n MemberExpression: n => {\n const d = !n.computed,\n o = visit(n.object);\n if (d) memberDepth += 1;\n const p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.'+p : '['+p+']');\n },\n\n CallExpression: n => {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n const callee = n.callee.name,\n args = n.arguments,\n fn = hasOwnProperty(functions, callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction(fn)\n ? fn(args)\n : fn + '(' + args.map(visit).join(',') + ')';\n },\n\n ArrayExpression: n =>\n '[' + n.elements.map(visit).join(',') + ']',\n\n BinaryExpression: n =>\n '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n\n UnaryExpression: n =>\n '(' + n.operator + visit(n.argument) + ')',\n\n ConditionalExpression: n =>\n '(' + visit(n.test) +\n '?' + visit(n.consequent) +\n ':' + visit(n.alternate) +\n ')',\n\n LogicalExpression: n =>\n '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n\n ObjectExpression: n =>\n '{' + n.properties.map(visit).join(',') + '}',\n\n Property: n => {\n memberDepth += 1;\n const k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n\n function codegen(ast) {\n const result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n\n codegen.functions = functions;\n codegen.constants = constants;\n\n return codegen;\n}\n","import {codeGenerator, codegenParams} from './expression/codegen';\nimport {parse} from 'vega-expression';\nimport {error, isString, stringValue} from 'vega-util';\n\nexport var signalPrefix = '$';\n\nexport default function(expr, scope, preamble) {\n var params = {}, ast, gen;\n\n // parse the expression to an abstract syntax tree (ast)\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parse(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(function visitor(node) {\n if (node.type !== 'CallExpression') return;\n var name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(function(name) {\n var signalName = signalPrefix + name;\n if (!params.hasOwnProperty(signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: preamble ? preamble + 'return(' + gen.code + ');' : gen.code,\n $fields: gen.fields,\n $params: params\n };\n}\n","import {isObject} from 'vega-util';\n\nexport function Entry(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\n\nexport function entry(type, value, params, parent) {\n return new Entry(type, value, params, parent);\n}\n\nexport function operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nexport function ref(op) {\n var ref = {$ref: op.id};\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\n\nexport var tupleidRef = {\n $tupleid: 1,\n toString: function() { return ':_tupleid_:'; }\n};\n\nexport function fieldRef(field, name) {\n return name ? {$field: field, $name: name} : {$field: field};\n}\n\nexport var keyFieldRef = fieldRef('key');\n\nexport function compareRef(fields, orders) {\n return {$compare: fields, $order: orders};\n}\n\nexport function keyRef(fields, flat) {\n var ref = {$key: fields};\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nexport var Ascending = 'ascending';\n\nexport var Descending = 'descending';\n\nexport function sortKey(sort) {\n return !isObject(sort) ? ''\n : (sort.order === Descending ? '-' : '+')\n + aggrField(sort.op, sort.field);\n}\n\nexport function aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '')\n + (op && field ? '_' : '')\n + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nexport var Scope = 'scope';\n\nexport var View = 'view';\n\nexport function isSignal(_) {\n return _ && _.signal;\n}\n\nexport function hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (var key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\n\nexport function value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\n\nexport function deref(v) {\n return v && v.signal || v;\n}\n","import parseExpression from './expression';\nimport {View, Scope} from '../util';\nimport {array, error, stringValue} from 'vega-util';\n\nvar Timer = 'timer';\n\nexport default function parseStream(stream, scope) {\n var method = stream.merge ? mergeStream\n : stream.stream ? nestedStream\n : stream.type ? eventStream\n : error('Invalid stream specification: ' + stringValue(stream));\n\n return method(stream, scope);\n}\n\nfunction eventSource(source) {\n return source === Scope ? View : (source || View);\n}\n\nfunction mergeStream(stream, scope) {\n var list = stream.merge.map(function(s) {\n return parseStream(s, scope);\n });\n\n var entry = streamParameters({merge: list}, stream, scope);\n return scope.addStream(entry).id;\n}\n\nfunction nestedStream(stream, scope) {\n var id = parseStream(stream.stream, scope),\n entry = streamParameters({stream: id}, stream, scope);\n return scope.addStream(entry).id;\n}\n\nfunction eventStream(stream, scope) {\n var id, entry;\n\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {between: stream.between, filter: stream.filter};\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n\n entry = streamParameters({stream: id}, stream, scope);\n return Object.keys(entry).length === 1\n ? id\n : scope.addStream(entry).id;\n}\n\nfunction streamParameters(entry, stream, scope) {\n var param = stream.between;\n\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n }\n entry.between = [\n parseStream(param[0], scope),\n parseStream(param[1], scope)\n ];\n }\n\n param = stream.filter ? array(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parseExpression('(' + param.join(')&&(') + ')').$expr;\n }\n\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n\n if (stream.consume) {\n entry.consume = true;\n }\n\n return entry;\n}\n\nfunction filterMark(type, name, role) {\n var item = 'event.item';\n return item\n + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '')\n + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '')\n + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n","import parseExpression from './expression';\nimport parseStream from './stream';\nimport {Scope, View} from '../util';\nimport {selector} from 'vega-event-selector';\nimport {array, error, extend, isString, stringValue} from 'vega-util';\n\nvar preamble = 'var datum=event.item&&event.item.datum;';\n\nexport default function(spec, scope, target) {\n var events = spec.events,\n update = spec.update,\n encode = spec.encode,\n sources = [],\n value = '', entry;\n\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = selector(events, scope.isSubscope() ? Scope : View);\n }\n\n // separate event streams from signal updates\n events = array(events).filter(function(stream) {\n if (stream.signal || stream.scale) {\n sources.push(stream);\n return 0;\n } else {\n return 1;\n }\n });\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {merge: events} : events[0]);\n }\n\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + stringValue(encode) + ')';\n }\n\n // resolve update value\n value = isString(update) ? parseExpression(update, scope, preamble)\n : update.expr != null ? parseExpression(update.expr, scope, preamble)\n : update.value != null ? update.value\n : update.signal != null ? {\n $expr: '_.value',\n $params: {value: scope.signalRef(update.signal)}\n }\n : error('Invalid signal update specification.');\n\n entry = {\n target: target,\n update: value\n };\n\n if (spec.force) {\n entry.options = {force: true};\n }\n\n sources.forEach(function(source) {\n scope.addUpdate(extend(streamSource(source, scope), entry));\n });\n}\n\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal)\n : stream.scale ? scope.scaleRef(stream.scale)\n : parseStream(stream, scope)\n };\n}\n","import {entry} from './util';\n\nfunction transform(name) {\n return function(params, value, parent) {\n return entry(name, value, params || undefined, parent);\n };\n}\n\nexport var Aggregate = transform('aggregate');\nexport var AxisTicks = transform('axisticks');\nexport var Bound = transform('bound');\nexport var Collect = transform('collect');\nexport var Compare = transform('compare');\nexport var DataJoin = transform('datajoin');\nexport var Encode = transform('encode');\nexport var Expression = transform('expression');\nexport var Extent = transform('extent');\nexport var Facet = transform('facet');\nexport var Field = transform('field');\nexport var Key = transform('key');\nexport var LegendEntries = transform('legendentries');\nexport var Load = transform('load');\nexport var Mark = transform('mark');\nexport var MultiExtent = transform('multiextent');\nexport var MultiValues = transform('multivalues');\nexport var Overlap = transform('overlap');\nexport var Params = transform('params');\nexport var PreFacet = transform('prefacet');\nexport var Projection = transform('projection');\nexport var Proxy = transform('proxy');\nexport var Relay = transform('relay');\nexport var Render = transform('render');\nexport var Scale = transform('scale');\nexport var Sieve = transform('sieve');\nexport var SortItems = transform('sortitems');\nexport var ViewLayout = transform('viewlayout');\nexport var Values = transform('values');\n","import {ref, keyFieldRef} from '../util';\nimport {Collect, Aggregate, MultiExtent, MultiValues, Sieve, Values} from '../transforms';\nimport {error, extend, isArray, isObject, isString, stringValue, toSet} from 'vega-util';\n\nvar FIELD_REF_ID = 0;\n\nvar types = [\n 'identity',\n 'ordinal', 'band', 'point',\n 'bin-linear', 'bin-ordinal',\n 'quantize', 'quantile', 'threshold',\n 'linear', 'pow', 'sqrt', 'log', 'sequential',\n 'time', 'utc'\n];\n\nvar allTypes = toSet(types),\n discreteTypes = toSet(types.slice(4, 9)),\n continuousTypes = toSet(types.slice(9)),\n ordinalTypes = toSet(types.slice(1, 6));\n\nexport function isOrdinal(type) {\n return ordinalTypes.hasOwnProperty(type);\n}\n\nexport function isDiscretizing(type) {\n return discreteTypes.hasOwnProperty(type);\n}\n\nexport function isContinuous(type) {\n return continuousTypes.hasOwnProperty(type);\n}\n\nexport function isQuantile(type) {\n return type === 'quantile';\n}\n\nexport function initScale(spec, scope) {\n var type = spec.type || 'linear';\n\n if (!allTypes.hasOwnProperty(type)) {\n error('Unrecognized scale type: ' + stringValue(type));\n }\n\n scope.addScale(spec.name, {\n type: type,\n domain: undefined\n });\n}\n\nexport function parseScale(spec, scope) {\n var params = scope.getScale(spec.name).params,\n key;\n\n params.domain = parseScaleDomain(spec.domain, spec, scope);\n\n if (spec.range != null) {\n params.range = parseScaleRange(spec, scope, params);\n }\n\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n\n if (spec.nice != null) {\n parseScaleNice(spec.nice, params);\n }\n\n for (key in spec) {\n if (params.hasOwnProperty(key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\n\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v\n : v.signal ? scope.signalRef(v.signal)\n : error('Unsupported object: ' + stringValue(v));\n}\n\nfunction parseArray(v, scope) {\n return v.signal\n ? scope.signalRef(v.signal)\n : v.map(function(v) { return parseLiteral(v, scope); });\n}\n\nfunction dataLookupError(name) {\n error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal)\n : (isArray(domain) ? explicitDomain\n : domain.fields ? multipleDomain\n : singularDomain)(domain, spec, scope);\n}\n\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(function(v) {\n return parseLiteral(v, scope);\n });\n}\n\nfunction singularDomain(domain, spec, scope) {\n var data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n\n return isOrdinal(spec.type)\n ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false))\n : isQuantile(spec.type) ? data.domainRef(scope, domain.field)\n : data.extentRef(scope, domain.field);\n}\n\nfunction multipleDomain(domain, spec, scope) {\n var data = domain.data,\n fields = domain.fields.reduce(function(dom, d) {\n d = isString(d) ? {data: data, field: d}\n : (isArray(d) || d.signal) ? fieldRef(d, scope)\n : d;\n dom.push(d);\n return dom;\n }, []);\n\n return (isOrdinal(spec.type) ? ordinalMultipleDomain\n : isQuantile(spec.type) ? quantileMultipleDomain\n : numericMultipleDomain)(domain, scope, fields);\n}\n\nfunction fieldRef(data, scope) {\n var name = '_:vega:_' + (FIELD_REF_ID++),\n coll = Collect({});\n\n if (isArray(data)) {\n coll.value = {$ingest: data};\n } else if (data.signal) {\n var code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {data: name, field: 'data'};\n}\n\nfunction ordinalMultipleDomain(domain, scope, fields) {\n var counts, a, c, v;\n\n // get value counts for each domain field\n counts = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field);\n });\n\n // sum counts from all fields\n a = scope.add(Aggregate({\n groupby: keyFieldRef,\n ops:['sum'], fields: [scope.fieldRef('count')], as:['count'],\n pulse: counts\n }));\n\n // collect aggregate output\n c = scope.add(Collect({pulse: ref(a)}));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(parseSort(domain.sort, true)),\n pulse: ref(c)\n }));\n\n return ref(v);\n}\n\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';\n else sort = {field: 'key'};\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n error('Multiple domain scales can not sort by field.');\n } else if (multidomain && sort.op && sort.op !== 'count') {\n error('Multiple domain scales support op count only.');\n }\n }\n return sort;\n}\n\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n var values = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({values: values})));\n}\n\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n var extents = fields.map(function(f) {\n var data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({extents: extents})));\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice, params) {\n params.nice = isObject(nice)\n ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n }\n : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n var range = spec.range,\n config = scope.config.range;\n\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && config.hasOwnProperty(range)) {\n spec = extend({}, spec, {range: config[range]});\n return parseScaleRange(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {signal: 'width'}]\n } else if (range === 'height') {\n range = isOrdinal(spec.type)\n ? [0, {signal: 'height'}]\n : [{signal: 'height'}, 0]\n } else {\n error('Unrecognized scale range value: ' + stringValue(range));\n }\n } else if (range.scheme) {\n params.scheme = parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isOrdinal(spec.type) && !isArray(range)) {\n return parseScaleDomain(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + stringValue(range));\n }\n\n return range.map(function(v) {\n return parseLiteral(v, scope);\n });\n}\n","import {error, isArray, isObject, stringValue} from 'vega-util';\n\nexport default function(proj, scope) {\n var params = {};\n\n for (var name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter(proj[name], name, scope);\n }\n\n scope.addProjection(proj.name, params);\n}\n\nfunction parseParameter(_, name, scope) {\n return isArray(_) ? _.map(function(_) { return parseParameter(_, name, scope); })\n : !isObject(_) ? _\n : _.signal ? scope.signalRef(_.signal)\n : name === 'fit' ? _\n : error('Unsupported parameter object: ' + stringValue(_));\n}\n","export var Top = 'top';\nexport var Left = 'left';\nexport var Right = 'right';\nexport var Bottom = 'bottom';\nexport var Center = 'center';\n\nexport var Vertical = 'vertical';\n\nexport var Start = 'start';\nexport var Middle = 'middle';\nexport var End = 'end';\n\nexport var Index = 'index';\nexport var Label = 'label';\nexport var Offset = 'offset';\nexport var Perc = 'perc';\nexport var Perc2 = 'perc2';\nexport var Size = 'size';\nexport var Value = 'value';\n\nexport var GuideLabelStyle = 'guide-label';\nexport var GuideTitleStyle = 'guide-title';\nexport var GroupTitleStyle = 'group-title';\n\nexport var Symbols = 'symbol';\nexport var Gradient = 'gradient';\nexport var Discrete = 'discrete';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nexport var LegendScales = [\n 'size',\n 'shape',\n 'fill',\n 'stroke',\n 'strokeDash',\n 'opacity'\n];\n\nexport var Skip = {\n name: 1,\n interactive: 1\n};\n","import {toSet} from 'vega-util';\n\nvar Skip = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\n\nexport default function(encode, marktype) {\n var code = '';\n\n if (Skip[marktype]) return code;\n\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n\n return code;\n}\n","import expression from '../expression';\nimport {extend} from 'vega-util';\n\nexport default function(code, scope, params, fields) {\n var expr = expression(code, scope);\n expr.$fields.forEach(function(name) { fields[name] = 1; });\n extend(params, expr.$params);\n return expr.$expr;\n}\n","import expression from './expression';\nimport {error, isString, isObject, splitAccessPath, stringValue} from 'vega-util';\n\nexport default function(ref, scope, params, fields) {\n return resolve(isObject(ref) ? ref : {datum: ref}, scope, params, fields);\n}\n\nfunction resolve(ref, scope, params, fields) {\n var object, level, field;\n\n if (ref.signal) {\n object = 'datum';\n field = expression(ref.signal, scope, params, fields);\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n\n while (level-- > 0) {\n object += '.mark.group';\n }\n\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + stringValue(ref));\n }\n\n if (!ref.signal) {\n if (isString(field)) {\n fields[field] = 1; // TODO review field tracking?\n field = splitAccessPath(field).map(stringValue).join('][');\n } else {\n field = resolve(field, scope, params, fields);\n }\n }\n\n return object + '[' + field + ']';\n}\n","import expression from './expression';\nimport field from './field';\nimport {scalePrefix} from '../expression/prefixes';\nimport {isString, stringValue} from 'vega-util';\n\nexport default function(enc, value, scope, params, fields) {\n var scale = getScale(enc.scale, scope, params, fields),\n interp, func, flag;\n\n if (enc.range != null) {\n // pull value from scale range\n interp = +enc.range;\n func = scale + '.range()';\n value = (interp === 0) ? (func + '[0]')\n : '($=' + func + ',' + ((interp === 1) ? '$[$.length-1]'\n : '$[0]+' + interp + '*($[$.length-1]-$[0])') + ')';\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = scale + '(' + value + ')';\n\n if (enc.band && (flag = hasBandwidth(enc.scale, scope))) {\n func = scale + '.bandwidth';\n interp = +enc.band;\n interp = func + '()' + (interp===1 ? '' : '*' + interp);\n\n // if we don't know the scale type, check for bandwidth\n if (flag < 0) interp = '(' + func + '?' + interp + ':0)';\n\n value = (value ? value + '+' : '') + interp;\n\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = '(datum.extra?' + scale + '(datum.extra.value):' + value + ')';\n }\n }\n\n if (value == null) value = '0';\n }\n\n return value;\n}\n\nfunction hasBandwidth(name, scope) {\n if (!isString(name)) return -1;\n var type = scope.scaleType(name);\n return type === 'band' || type === 'point' ? 1 : 0;\n}\n\nexport function getScale(name, scope, params, fields) {\n var scaleName;\n\n if (isString(name)) {\n // direct scale lookup; add scale as parameter\n scaleName = scalePrefix + name;\n if (!params.hasOwnProperty(scaleName)) {\n params[scaleName] = scope.scaleRef(name);\n }\n scaleName = stringValue(scaleName);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (scaleName in scope.scales) {\n params[scalePrefix + scaleName] = scope.scaleRef(scaleName);\n }\n scaleName = stringValue(scalePrefix) + '+'\n + (name.signal\n ? '(' + expression(name.signal, scope, params, fields) + ')'\n : field(name, scope, params, fields));\n }\n\n return '_[' + scaleName + ']';\n}\n","import entry from './entry';\nimport {isObject} from 'vega-util';\n\nexport default function(property, scope, params, fields) {\n return isObject(property)\n ? '(' + entry(null, property, scope, params, fields) + ')'\n : property;\n}\n","import color from './color';\nimport field from './field';\nimport scale from './scale';\nimport gradient from './gradient';\nimport property from './property';\nimport expression from './expression';\nimport {stringValue} from 'vega-util';\n\nexport default function(channel, enc, scope, params, fields) {\n if (enc.gradient != null) {\n return gradient(enc, scope, params, fields);\n }\n\n var value = enc.signal ? expression(enc.signal, scope, params, fields)\n : enc.color ? color(enc.color, scope, params, fields)\n : enc.field != null ? field(enc.field, scope, params, fields)\n : enc.value !== undefined ? stringValue(enc.value)\n : undefined;\n\n if (enc.scale != null) {\n value = scale(enc, value, scope, params, fields);\n }\n\n if (value === undefined) {\n value = null;\n }\n\n if (enc.exponent != null) {\n value = 'Math.pow(' + value + ','\n + property(enc.exponent, scope, params, fields) + ')';\n }\n\n if (enc.mult != null) {\n value += '*' + property(enc.mult, scope, params, fields);\n }\n\n if (enc.offset != null) {\n value += '+' + property(enc.offset, scope, params, fields);\n }\n\n if (enc.round) {\n value = 'Math.round(' + value + ')';\n }\n\n return value;\n}\n","import {getScale} from './scale';\nimport {stringValue} from 'vega-util';\n\nexport default function(enc, scope, params, fields) {\n return 'this.gradient('\n + getScale(enc.gradient, scope, params, fields)\n + ',' + stringValue(enc.start)\n + ',' + stringValue(enc.stop)\n + ',' + stringValue(enc.count)\n + ')';\n}\n","import entry from './entry';\n\nexport default function(enc, scope, params, fields) {\n function color(type, x, y, z) {\n var a = entry(null, x, scope, params, fields),\n b = entry(null, y, scope, params, fields),\n c = entry(null, z, scope, params, fields);\n return 'this.' + type + '(' + [a, b, c].join(',') + ').toString()';\n }\n\n return (enc.c) ? color('hcl', enc.h, enc.c, enc.l)\n : (enc.h || enc.s) ? color('hsl', enc.h, enc.s, enc.l)\n : (enc.l || enc.a) ? color('lab', enc.l, enc.a, enc.b)\n : (enc.r || enc.g || enc.b) ? color('rgb', enc.r, enc.g, enc.b)\n : null;\n}\n","import {stringValue} from 'vega-util';\n\nexport default function(obj, key, value) {\n return obj + '[' + stringValue(key) + ']=' + value + ';';\n}\n","import entry from './entry';\nimport set from './set';\nimport expression from './expression';\nimport {peek} from 'vega-util';\n\nexport default function(channel, rules, scope, params, fields) {\n var code = '';\n\n rules.forEach(function(rule) {\n var value = entry(channel, rule, scope, params, fields);\n code += rule.test\n ? expression(rule.test, scope, params, fields) + '?' + value + ':'\n : value;\n });\n\n // if no else clause, terminate with null (vega/vega#1366)\n if (peek(code) === ':') {\n code += 'null';\n }\n\n return set('o', channel, code);\n}\n","import adjustSpatial from './encode/adjust-spatial';\nimport entry from './encode/entry';\nimport rule from './encode/rule';\nimport set from './encode/set';\nimport {isArray} from 'vega-util';\n\nexport default function parseEncode(encode, marktype, params, scope) {\n var fields = {},\n code = 'var o=item,datum=o.datum,$;',\n channel, enc, value;\n\n for (channel in encode) {\n enc = encode[channel];\n if (isArray(enc)) { // rule\n code += rule(channel, enc, scope, params, fields);\n } else {\n value = entry(channel, enc, scope, params, fields);\n code += set('o', channel, value);\n }\n }\n\n code += adjustSpatial(encode, marktype);\n code += 'return 1;';\n\n return {\n $expr: code,\n $fields: Object.keys(fields),\n $output: Object.keys(encode)\n };\n}\n","export var MarkRole = 'mark';\nexport var FrameRole = 'frame';\nexport var ScopeRole = 'scope';\n\nexport var AxisRole = 'axis';\nexport var AxisDomainRole = 'axis-domain';\nexport var AxisGridRole = 'axis-grid';\nexport var AxisLabelRole = 'axis-label';\nexport var AxisTickRole = 'axis-tick';\nexport var AxisTitleRole = 'axis-title';\n\nexport var LegendRole = 'legend';\nexport var LegendBandRole = 'legend-band';\nexport var LegendEntryRole = 'legend-entry';\nexport var LegendGradientRole = 'legend-gradient';\nexport var LegendLabelRole = 'legend-label';\nexport var LegendSymbolRole = 'legend-symbol';\nexport var LegendTitleRole = 'legend-title';\n\nexport var TitleRole = 'title';\n","import parseEncode from '../encode';\nimport {FrameRole, MarkRole} from '../marks/roles';\nimport {array, extend, isArray, isObject} from 'vega-util';\n\nexport function encoder(_) {\n return isObject(_) ? extend({}, _) : {value: _};\n}\n\nexport function addEncode(object, name, value, set) {\n if (value != null) {\n if (isObject(value) && !isArray(value)) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {value: value};\n }\n // object[name] = isObject(value) && !isArray(value) ? value : {value: value};\n return 1;\n } else {\n return 0;\n }\n}\n\nexport function extendEncode(encode, extra, skip) {\n for (var name in extra) {\n if (skip && skip.hasOwnProperty(name)) continue;\n encode[name] = extend(encode[name] || {}, extra[name]);\n }\n return encode;\n}\n\nexport function encoders(encode, type, role, style, scope, params) {\n var enc, key;\n params = params || {};\n params.encoders = {$encode: (enc = {})};\n\n encode = applyDefaults(encode, type, role, style, scope.config);\n\n for (key in encode) {\n enc[key] = parseEncode(encode[key], type, params, scope);\n }\n\n return params;\n}\n\nfunction applyDefaults(encode, type, role, style, config) {\n var enter = {}, key, skip, props;\n\n // ignore legend and axis\n if (role == 'legend' || String(role).indexOf('axis') === 0) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group\n : (role === MarkRole) ? extend({}, config.mark, config[type])\n : null;\n\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode)\n || (key === 'fill' || key === 'stroke')\n && (has('fill', encode) || has('stroke', encode));\n\n if (!skip) enter[key] = defaultEncode(props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array(style).forEach(function(name) {\n var props = config.style && config.style[name];\n for (var key in props) {\n if (!has(key, encode)) {\n enter[key] = defaultEncode(props[key]);\n }\n }\n });\n\n encode = extend({}, encode); // defensive copy\n encode.enter = extend(enter, encode.enter);\n\n return encode;\n}\n\nfunction defaultEncode(value) {\n return value && value.signal\n ? {signal: value.signal}\n : {value: value};\n}\n\nexport function has(key, encode) {\n return encode && (\n (encode.enter && encode.enter[key]) ||\n (encode.update && encode.update[key])\n );\n}\n","import {Skip} from './constants';\nimport {extendEncode} from '../encode/encode-util';\n\nexport default function(type, role, style, key, dataRef, encode, extras) {\n return {\n type: type,\n name: extras ? extras.name : undefined,\n role: role,\n style: (extras && extras.style) || style,\n key: key,\n from: dataRef,\n interactive: !!(extras && extras.interactive),\n encode: extendEncode(encode, extras, Skip)\n };\n}\n","import {Vertical} from './constants';\nimport {value} from '../../util';\n\nexport function lookup(name, spec, config) {\n return value(spec[name], config[name]);\n}\n\nexport function isVertical(spec, configVal) {\n return value(spec.direction, configVal) === Vertical;\n}\n\nexport function gradientLength(spec, config) {\n return value(\n spec.gradientLength,\n config.gradientLength || config.gradientWidth\n );\n}\n\nexport function gradientThickness(spec, config) {\n return value(\n spec.gradientThickness,\n config.gradientThickness || config.gradientHeight\n );\n}\n\nexport function entryColumns(spec, config) {\n return value(\n spec.columns,\n value(config.columns, +isVertical(spec, config.symbolDirection))\n );\n}\n\nexport function getEncoding(name, encode) {\n var v = encode && (\n (encode.update && encode.update[name]) ||\n (encode.enter && encode.enter[name])\n );\n return v && v.signal ? v : v ? v.value : null;\n}\n\nexport function getStyle(name, scope, style) {\n var s = scope.config.style[style];\n return s && s[name];\n}\n","export var GroupMark = 'group';\nexport var RectMark = 'rect';\nexport var RuleMark = 'rule';\nexport var SymbolMark = 'symbol';\nexport var TextMark = 'text';\n","import guideMark from './guide-mark';\nimport {gradientLength, gradientThickness, isVertical, lookup} from './guide-util';\nimport {RectMark} from '../marks/marktypes';\nimport {LegendGradientRole} from '../marks/roles';\nimport {addEncode, encoder} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scale, config, userEncode) {\n var zero = {value: 0},\n vertical = isVertical(spec, config.gradientDirection),\n thickness = gradientThickness(spec, config),\n length = gradientLength(spec, config),\n encode, enter, start, stop, width, height;\n\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: zero,\n y: zero,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend({}, enter, {\n opacity: {value: 1},\n fill: {gradient: scale, start: start, stop: stop}\n }),\n exit: {\n opacity: zero\n }\n };\n addEncode(encode, 'stroke', lookup('gradientStrokeColor', spec, config));\n addEncode(encode, 'strokeWidth', lookup('gradientStrokeWidth', spec, config));\n addEncode(encode, 'opacity', lookup('gradientOpacity', spec, config), 'update');\n\n return guideMark(RectMark, LegendGradientRole, null, undefined, undefined, encode, userEncode);\n}\n","import {Value, Perc, Perc2} from './constants';\nimport guideMark from './guide-mark';\nimport {gradientLength, gradientThickness, isVertical, lookup} from './guide-util';\nimport {RectMark} from '../marks/marktypes';\nimport {LegendBandRole} from '../marks/roles';\nimport {addEncode, encoder} from '../encode/encode-util';\nimport {extend} from 'vega-util';\n\nexport default function(spec, scale, config, userEncode, dataRef) {\n var zero = {value: 0},\n vertical = isVertical(spec, config.gradientDirection),\n thickness = gradientThickness(spec, config),\n length = gradientLength(spec, config),\n encode, enter, u, v, uu, vv, adjust = '';\n\n vertical\n ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-')\n : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n\n enter = {\n opacity: zero,\n fill: {scale: scale, field: Value}\n };\n enter[u] = {signal: adjust + 'datum.' + Perc, mult: length};\n enter[v] = zero;\n enter[uu] = {signal: adjust + 'datum.' + Perc2, mult: length};\n enter[vv] = encoder(thickness);\n\n encode = {\n enter: enter,\n update: extend({}, enter, {opacity: {value: 1}}),\n exit: {opacity: zero}\n };\n addEncode(encode, 'stroke', lookup('gradientStrokeColor', spec, config));\n addEncode(encode, 'strokeWidth', lookup('gradientStrokeWidth', spec, config));\n addEncode(encode, 'opacity', lookup('gradientOpacity', spec, config), 'update');\n\n return guideMark(RectMark, LegendBandRole, null, Value, dataRef, encode, userEncode);\n}\n","import {Index, Label, Perc, Value, GuideLabelStyle} from './constants';\nimport guideMark from './guide-mark';\nimport {gradientLength, gradientThickness, isVertical, lookup} from './guide-util';\nimport {TextMark} from '../marks/marktypes';\nimport {LegendLabelRole} from '../marks/roles';\nimport {addEncode, encoder} from '../encode/encode-util';\nimport {value} from '../../util';\n\nvar alignExpr = 'datum.' + Perc + '<=0?\"left\"'\n + ':datum.' + Perc + '>=1?\"right\":\"center\"';\n\nvar baselineExpr = 'datum.' + Perc + '<=0?\"bottom\"'\n + ':datum.' + Perc + '>=1?\"top\":\"middle\"';\n\nexport default function(spec, config, userEncode, dataRef) {\n var zero = {value: 0},\n vertical = isVertical(spec, config.gradientDirection),\n thickness = encoder(gradientThickness(spec, config)),\n length = gradientLength(spec, config),\n overlap = lookup('labelOverlap', spec, config),\n encode, enter, update, u, v, adjust = '';\n\n encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: {value: 1},\n text: {field: Label}\n },\n exit: {\n opacity: zero\n }\n };\n addEncode(encode, 'fill', lookup('labelColor', spec, config));\n addEncode(encode, 'font', lookup('labelFont', spec, config));\n addEncode(encode, 'fontSize', lookup('labelFontSize', spec, config));\n addEncode(encode, 'fontWeight', lookup('labelFontWeight', spec, config));\n addEncode(encode, 'fillOpacity', lookup('labelOpacity', spec, config));\n addEncode(encode, 'limit', value(spec.labelLimit, config.gradientLabelLimit));\n\n if (vertical) {\n enter.align = {value: 'left'};\n enter.baseline = update.baseline = {signal: baselineExpr};\n u = 'y'; v = 'x'; adjust = '1-';\n } else {\n enter.align = update.align = {signal: alignExpr};\n enter.baseline = {value: 'top'};\n u = 'x'; v = 'y';\n }\n\n enter[u] = update[u] = {signal: adjust + 'datum.' + Perc, mult: length};\n\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n\n spec = guideMark(TextMark, LegendLabelRole, GuideLabelStyle, Value, dataRef, encode, userEncode);\n if (overlap) spec.overlap = {method: overlap, order: 'datum.' + Index};\n return spec;\n}\n","import {GroupMark} from '../marks/marktypes';\n\nexport default function(role, style, name, dataRef, interactive, encode, marks, layout) {\n return {\n type: GroupMark,\n name: name,\n role: role,\n style: style,\n from: dataRef,\n interactive: interactive || false,\n encode: encode,\n marks: marks,\n layout: layout\n };\n}\n","import {\n Index, Label, Offset, Size, Value,\n Skip, GuideLabelStyle, LegendScales\n} from './constants';\nimport guideGroup from './guide-group';\nimport guideMark from './guide-mark';\nimport {entryColumns, isVertical, lookup} from './guide-util';\nimport {SymbolMark, TextMark} from '../marks/marktypes';\nimport {ScopeRole, LegendSymbolRole, LegendLabelRole} from '../marks/roles';\nimport {addEncode, encoder, extendEncode} from '../encode/encode-util';\n\nvar zero = {value: 0};\n\n// userEncode is top-level, includes entries, symbols, labels\nexport default function(spec, config, userEncode, dataRef, columns) {\n var entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = lookup('clipHeight', spec, config),\n symbolOffset = lookup('symbolOffset', spec, config),\n valueRef = {data: 'value'},\n encode = {},\n xSignal = columns + '?' + 'datum.' + Offset + ':' + 'datum.' + Size,\n yEncode = height ? encoder(height) : {field: Size},\n index = 'datum.' + Index,\n ncols = 'max(1,' + columns + ')',\n enter, update, labelOffset, symbols, labels, nrows, sort;\n\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero,\n x: {signal: xSignal, mult: 0.5, offset: symbolOffset},\n y: yEncode\n },\n update: update = {\n opacity: {value: 1},\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n\n if (!spec.fill) {\n addEncode(encode, 'fill', config.symbolBaseFillColor);\n addEncode(encode, 'stroke', config.symbolBaseStrokeColor);\n }\n addEncode(encode, 'shape', lookup('symbolType', spec, config));\n addEncode(encode, 'size', lookup('symbolSize', spec, config));\n addEncode(encode, 'strokeWidth', lookup('symbolStrokeWidth', spec, config));\n addEncode(encode, 'fill', lookup('symbolFillColor', spec, config));\n addEncode(encode, 'stroke', lookup('symbolStrokeColor', spec, config));\n addEncode(encode, 'opacity', lookup('symbolOpacity', spec, config), 'update');\n\n LegendScales.forEach(function(scale) {\n if (spec[scale]) {\n update[scale] = enter[scale] = {scale: spec[scale], field: Value};\n }\n });\n\n symbols = guideMark(\n SymbolMark, LegendSymbolRole, null,\n Value, valueRef, encode, userEncode.symbols\n );\n if (height) symbols.clip = true;\n\n // -- LEGEND LABELS --\n labelOffset = encoder(symbolOffset);\n labelOffset.offset = lookup('labelOffset', spec, config);\n\n encode = {\n enter: enter = {\n opacity: zero,\n x: {signal: xSignal, offset: labelOffset},\n y: yEncode\n },\n update: update = {\n opacity: {value: 1},\n text: {field: Label},\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n\n addEncode(encode, 'align', lookup('labelAlign', spec, config));\n addEncode(encode, 'baseline', lookup('labelBaseline', spec, config));\n addEncode(encode, 'fill', lookup('labelColor', spec, config));\n addEncode(encode, 'font', lookup('labelFont', spec, config));\n addEncode(encode, 'fontSize', lookup('labelFontSize', spec, config));\n addEncode(encode, 'fontWeight', lookup('labelFontWeight', spec, config));\n addEncode(encode, 'limit', lookup('labelLimit', spec, config));\n addEncode(encode, 'fillOpacity', lookup('labelOpacity', spec, config));\n\n labels = guideMark(\n TextMark, LegendLabelRole, GuideLabelStyle,\n Value, valueRef, encode, userEncode.labels\n );\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {value: true}, // ignore width/height in bounds calc\n width: zero,\n height: height ? encoder(height) : zero,\n opacity: zero\n },\n exit: {opacity: zero},\n update: update = {\n opacity: {value: 1},\n row: {signal: null},\n column: {signal: null}\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (isVertical(spec, config.symbolDirection)) {\n nrows = 'ceil(item.mark.items.length/' + ncols + ')';\n update.row.signal = index + '%' + nrows;\n update.column.signal = 'floor(' + index + '/' + nrows + ')';\n sort = {field: ['row', index]};\n } else {\n update.row.signal = 'floor(' + index + '/' + ncols + ')';\n update.column.signal = index + '%' + ncols;\n sort = {field: index};\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = columns + '?' + update.column.signal + ':' + index;\n\n // facet legend entries into sub-groups\n dataRef = {facet: {data: dataRef, name: 'value', groupby: Index}};\n\n spec = guideGroup(\n ScopeRole, null, name, dataRef, interactive,\n extendEncode(encode, entries, Skip), [symbols, labels]\n );\n spec.sort = sort;\n return spec;\n}\n\nexport function legendSymbolLayout(spec, config) {\n // layout parameters for legend entries\n return {\n align: lookup('gridAlign', spec, config),\n center: {row: true, column: false},\n columns: entryColumns(spec, config),\n padding: {\n row: lookup('rowPadding', spec, config),\n column: lookup('columnPadding', spec, config)\n }\n };\n}\n","import {isObject, stringValue} from 'vega-util';\n\nexport default function(clip, scope) {\n var expr;\n\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n\n return expr\n ? scope.signalRef(expr)\n : !!clip;\n}\n\nfunction param(value) {\n return isObject(value) && value.signal\n ? value.signal\n : stringValue(value);\n}","import {GroupMark} from './marktypes';\nimport {ScopeRole, MarkRole} from './roles';\n\nexport default function(spec) {\n var role = spec.role || '';\n return (!role.indexOf('axis') || !role.indexOf('legend'))\n ? role\n : spec.type === GroupMark ? ScopeRole : (role || MarkRole);\n}\n","import role from './role';\n\nexport default function(spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || role(spec),\n zindex: +spec.zindex || undefined\n };\n}\n","export default function(spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal)\n : spec === false ? false\n : true;\n}\n","import parseExpression from './expression';\nimport {entry, fieldRef, isSignal, ref} from '../util';\nimport {Params} from '../transforms';\nimport {definition} from 'vega-dataflow';\nimport {error, extend, isArray, isString, stringValue} from 'vega-util';\n\n/**\n * Parse a data transform specification.\n */\nexport default function(spec, scope) {\n var def = definition(spec.type);\n if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n\n var t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n var params = {}, pdef, i, n;\n for (i=0, n=def.params.length; i 0;\n};\n\nprototype.toRuntime = function() {\n this.finish();\n return {\n background: this.background,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig\n };\n};\n\nprototype.id = function() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n};\n\nprototype.add = function(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(function(ref) { ref.$ref = op.id; });\n op.refs = null;\n }\n return op;\n};\n\nprototype.proxy = function(op) {\n var vref = op instanceof Entry ? ref(op) : op;\n return this.add(Proxy({value: vref}));\n};\n\nprototype.addStream = function(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n};\n\nprototype.addUpdate = function(update) {\n this.updates.push(update);\n return update;\n};\n\n// Apply metadata\nprototype.finish = function() {\n var name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n var data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (var field in ds.index) {\n annotate(ds.index[field], name, 'index:' + field);\n }\n }\n\n return this;\n};\n\n// ----\n\nprototype.pushState = function(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({pulse: encode}))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n};\n\nprototype.popState = function() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n};\n\nprototype.parent = function() {\n return peek(this._parent);\n};\n\nprototype.encode = function() {\n return peek(this._encode);\n};\n\nprototype.lookup = function() {\n return peek(this._lookup);\n};\n\nprototype.markpath = function() {\n var p = this._markpath;\n return ++p[p.length-1];\n};\n\n// ----\n\nprototype.fieldRef = function(field, name) {\n if (isString(field)) return fieldRef(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + stringValue(field));\n }\n\n var s = field.signal,\n f = this.field[s],\n params;\n\n if (!f) {\n params = {name: this.signalRef(s)};\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n};\n\nprototype.compareRef = function(cmp, stable) {\n function check(_) {\n if (isSignal(_)) {\n signal = true;\n return scope.signalRef(_.signal);\n } else {\n return _;\n }\n }\n\n var scope = this,\n signal = false,\n fields = array(cmp.field).map(check),\n orders = array(cmp.order).map(check);\n\n if (stable) {\n fields.push(tupleidRef);\n }\n\n return signal\n ? ref(this.add(Compare({fields: fields, orders: orders})))\n : compareRef(fields, orders);\n};\n\nprototype.keyRef = function(fields, flat) {\n function check(_) {\n if (isSignal(_)) {\n signal = true;\n return ref(sig[_.signal]);\n } else {\n return _;\n }\n }\n\n var sig = this.signals,\n signal = false;\n fields = array(fields).map(check);\n\n return signal\n ? ref(this.add(Key({fields: fields, flat: flat})))\n : keyRef(fields, flat);\n};\n\nprototype.sortRef = function(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n var a = [aggrField(sort.op, sort.field), tupleidRef],\n o = sort.order || Ascending;\n\n return o.signal\n ? ref(this.add(Compare({\n fields: a,\n orders: [o = this.signalRef(o.signal), o]\n })))\n : compareRef(a, [o, o]);\n};\n\n// ----\n\nprototype.event = function(source, type) {\n var key = source + ':' + type;\n if (!this.events[key]) {\n var id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n};\n\n// ----\n\nprototype.addSignal = function(name, value) {\n if (this.signals.hasOwnProperty(name)) {\n error('Duplicate signal name: ' + stringValue(name));\n }\n var op = value instanceof Entry ? value : this.add(operator(value));\n return this.signals[name] = op;\n};\n\nprototype.getSignal = function(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + stringValue(name));\n }\n return this.signals[name];\n};\n\nprototype.signalRef = function(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!this.lambdas.hasOwnProperty(s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n};\n\nprototype.parseLambdas = function() {\n var code = Object.keys(this.lambdas);\n for (var i=0, n=code.length; i 0 ? ',' : '')\n + (isObject(value)\n ? (value.signal || propertyLambda(value))\n : stringValue(value));\n }\n return code + ']';\n}\n\nfunction objectLambda(obj) {\n var code = '{',\n i = 0,\n key, value;\n\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '')\n + stringValue(key) + ':'\n + (isObject(value)\n ? (value.signal || propertyLambda(value))\n : stringValue(value));\n }\n return code + '}';\n}\n\nprototype.exprRef = function(code, name) {\n var params = {expr: parseExpression(code, this)};\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n}\n\nprototype.addBinding = function(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + stringValue(name));\n }\n this.bindings.push(extend({signal: name}, bind));\n};\n\n// ----\n\nprototype.addScaleProj = function(name, transform) {\n if (this.scales.hasOwnProperty(name)) {\n error('Duplicate scale or projection name: ' + stringValue(name));\n }\n this.scales[name] = this.add(transform);\n};\n\nprototype.addScale = function(name, params) {\n this.addScaleProj(name, Scale(params));\n};\n\nprototype.addProjection = function(name, params) {\n this.addScaleProj(name, Projection(params));\n};\n\nprototype.getScale = function(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + stringValue(name));\n }\n return this.scales[name];\n};\n\nprototype.projectionRef =\nprototype.scaleRef = function(name) {\n return ref(this.getScale(name));\n};\n\nprototype.projectionType =\nprototype.scaleType = function(name) {\n return this.getScale(name).params.type;\n};\n\n// ----\n\nprototype.addData = function(name, dataScope) {\n if (this.data.hasOwnProperty(name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return (this.data[name] = dataScope);\n};\n\nprototype.getData = function(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + stringValue(name));\n }\n return this.data[name];\n};\n\nprototype.addDataPipeline = function(name, entries) {\n if (this.data.hasOwnProperty(name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n};\n","import {extend, isArray, isObject} from 'vega-util';\n\nexport default function(configs) {\n var output = defaults();\n (configs || []).forEach(function(config) {\n var key, value, style;\n if (config) {\n for (key in config) {\n if (key === 'style') {\n style = output.style || (output.style = {});\n for (key in config.style) {\n style[key] = extend(style[key] || {}, config.style[key]);\n }\n } else {\n value = config[key];\n output[key] = isObject(value) && !isArray(value)\n ? extend(isObject(output[key]) ? output[key] : {}, value)\n : value;\n }\n }\n }\n });\n return output;\n}\n\nvar defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = \"#000\",\n gray = '#888',\n lightGray = '#ddd';\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults() {\n return {\n // default padding around visualization\n padding: 0,\n\n // default for automatic sizing; options: \"none\", \"pad\", \"fit\"\n // or provide an object (e.g., {\"type\": \"pad\", \"resize\": true})\n autosize: 'pad',\n\n // default view background color\n // covers the entire view component\n background: null,\n\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {allow: ['wheel']}\n },\n\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: { fill: defaultColor },\n area: { fill: defaultColor },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: { stroke: defaultColor },\n rect: { fill: defaultColor },\n rule: { stroke: black },\n shape: { stroke: defaultColor },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n\n // style definitions\n style: {\n // axis & legend labels\n \"guide-label\": {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n \"guide-title\": {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n \"group-title\": {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n }\n },\n\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titleAlign: 'center',\n titlePadding: 4\n },\n\n // correction for centering bias\n axisBand: {\n tickOffset: -1\n },\n\n // defaults for legends\n legend: {\n orient: 'right',\n offset: 18,\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleAlign: 'left',\n titleBaseline: 'top',\n titleLimit: 180,\n titlePadding: 5\n },\n\n // defaults for group title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4\n },\n\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues',\n extent: [0.2, 1]\n },\n heatmap: {\n scheme: 'viridis'\n },\n ramp: {\n scheme: 'blues',\n extent: [0.2, 1]\n },\n diverging: {\n scheme: 'blueorange'\n },\n symbol: [\n 'circle',\n 'square',\n 'triangle-up',\n 'cross',\n 'diamond',\n 'triangle-right',\n 'triangle-down',\n 'triangle-left'\n ]\n }\n };\n}\n","import parseView from './parsers/view';\nimport Scope from './Scope';\nimport defaults from './config';\nimport {error, isObject} from 'vega-util';\n\nexport default function(spec, config) {\n if (!isObject(spec)) error('Input Vega specification must be an object.');\n return parseView(spec, new Scope(defaults([config, spec.config])))\n .toRuntime();\n}\n","import {isObject} from 'vega-util';\n\nexport default function(spec, config) {\n spec = spec || config.autosize;\n if (isObject(spec)) {\n return spec;\n } else {\n spec = spec || 'pad';\n return {type: spec};\n }\n}\n","/**\n * Parse an expression given the argument signature and body code.\n */\nexport default function expression(args, code, ctx) {\n // wrap code in return statement if expression does not terminate\n if (code[code.length-1] !== ';') {\n code = 'return(' + code + ');';\n }\n var fn = Function.apply(null, args.concat(code));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n/**\n * Parse an expression used to update an operator value.\n */\nexport function operatorExpression(code, ctx) {\n return expression(['_'], code, ctx);\n}\n\n/**\n * Parse an expression provided as an operator parameter value.\n */\nexport function parameterExpression(code, ctx) {\n return expression(['datum', '_'], code, ctx);\n}\n\n/**\n * Parse an expression applied to an event stream.\n */\nexport function eventExpression(code, ctx) {\n return expression(['event'], code, ctx);\n}\n\n/**\n * Parse an expression used to handle an event-driven operator update.\n */\nexport function handlerExpression(code, ctx) {\n return expression(['_', 'event'], code, ctx);\n}\n\n/**\n * Parse an expression that performs visual encoding.\n */\nexport function encodeExpression(code, ctx) {\n return expression(['item', '_'], code, ctx);\n}\n","import parseDataflow from './dataflow';\nimport {parameterExpression, encodeExpression} from './expression';\nimport {tupleid} from 'vega-dataflow';\nimport {accessor, array, compare, error, field, isArray, isObject, key} from 'vega-util';\n\n/**\n * Parse a set of operator parameters.\n */\nexport default function parseParameters(spec, ctx, params) {\n params = params || {};\n var key, value;\n\n for (key in spec) {\n value = spec[key];\n\n params[key] = isArray(value)\n ? value.map(function(v) { return parseParameter(v, ctx, params); })\n : parseParameter(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n\n for (var i=0, n=PARSERS.length, p; i= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n};\n\nprototype.addResizeListener = function(handler) {\n var l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n};\n\nprototype.removeResizeListener = function(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n};\n\nfunction findOperatorHandler(op, handler) {\n var t = op._targets || [],\n h = t.filter(function(op) {\n var u = op._update;\n return u && u.handler === handler;\n });\n return h.length ? h[0] : null;\n}\n\nfunction addOperatorListener(view, name, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(this, function() { handler(name, op.value); });\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\n\nfunction removeOperatorListener(view, op, handler) {\n var h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\n\nprototype.addSignalListener = function(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n};\n\nprototype.removeSignalListener = function(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n};\n\nprototype.addDataListener = function(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n};\n\nprototype.removeDataListener = function(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n};\n\nprototype.preventDefault = function(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n};\n\nprototype.timer = timer;\nprototype.events = events;\nprototype.finalize = finalize;\nprototype.hover = hover;\n\n// -- DATA ----\nprototype.data = data;\nprototype.change = change;\nprototype.insert = insert;\nprototype.remove = remove;\n\n// -- SCALES --\nprototype.scale = scale;\n\n// -- INITIALIZATION ----\nprototype.initialize = initialize;\n\n// -- HEADLESS RENDERING ----\nprototype.toImageURL = renderToImageURL;\nprototype.toCanvas = renderToCanvas;\nprototype.toSVG = renderToSVG;\n\n// -- SAVE / RESTORE STATE ----\nprototype.getState = getState;\nprototype.setState = setState;\n","import {transforms} from 'vega-dataflow';\nimport {functionContext} from 'vega-parser';\nimport {parse, context} from 'vega-runtime';\n\nexport default function(view, spec, functions) {\n var fn = functions || functionContext;\n return parse(spec, context(view, transforms, fn));\n}\n","import {interval} from 'd3-timer';\n\nexport default function(callback, delay) {\n function tick(elapsed) {\n callback({timestamp: Date.now(), elapsed: elapsed});\n }\n this._timers.push(interval(tick, delay));\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import {offset} from './render-size';\nimport {constant, isString} from 'vega-util';\nimport {point} from 'vega-scenegraph';\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nexport default function(view, event, item) {\n var el = view._renderer.canvas(),\n p, e, translate;\n\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n\n event.dataflow = view;\n event.vega = extension(view, item, p);\n event.item = item;\n return event;\n}\n\nfunction extension(view, item, point) {\n var itemGroup = item\n ? item.mark.marktype === 'group' ? item : item.mark.group\n : null;\n\n function group(name) {\n var g = itemGroup, i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) { g = i; break; }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n\n var p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: function(item) { return xy(item)[0]; },\n y: function(item) { return xy(item)[1]; }\n };\n}\n","/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nexport default function() {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n, m, e;\n\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n\n return this;\n}\n","import {error} from 'vega-util';\n\nexport function scale(name) {\n var scales = this._runtime.scales;\n if (!scales.hasOwnProperty(name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\n","import {offset} from './render-size';\nimport trap from './trap';\n\nexport default function(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n var handler = new constructor(view.loader(), trap(view, view.tooltip()))\n .scene(view.scenegraph().root)\n .initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(function(h) {\n handler.on(h.type, h.handler);\n });\n }\n\n return handler;\n}\n","import renderHeadless from './render-headless';\nimport {RenderType as Type} from 'vega-scenegraph';\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nexport default function(type, scaleFactor) {\n return (type !== Type.Canvas && type !== Type.SVG && type !== Type.PNG)\n ? Promise.reject('Unrecognized image type: ' + type)\n : renderHeadless(this, type, scaleFactor).then(function(renderer) {\n return type === Type.SVG\n ? toBlobURL(renderer.svg(), 'image/svg+xml')\n : renderer.canvas().toDataURL('image/png');\n });\n}\n\nfunction toBlobURL(data, mime) {\n var blob = new Blob([data], {type: mime});\n return window.URL.createObjectURL(blob);\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nexport default function(scaleFactor) {\n return renderHeadless(this, RenderType.Canvas, scaleFactor)\n .then(function(renderer) { return renderer.canvas(); });\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nexport default function(scaleFactor) {\n return renderHeadless(this, RenderType.SVG, scaleFactor)\n .then(function(renderer) { return renderer.svg(); });\n}\n","// -- Transforms -----\n\nimport {extend} from 'vega-util';\nimport {transforms} from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nextend(transforms, tx, vtx, encode, geo, force, tree, voronoi, wordcloud, xf);\n\n\n// -- Exports -----\n\nexport {\n version\n} from './package.json';\n\nexport * from 'vega-statistics';\n\nexport * from 'vega-util';\n\nexport * from 'vega-loader';\n\nexport * from 'vega-scenegraph';\n\nexport {\n Dataflow,\n EventStream,\n Parameters,\n Pulse,\n MultiPulse,\n Operator,\n Transform,\n changeset,\n ingest,\n isTuple,\n definition,\n transform,\n transforms,\n tupleid\n} from 'vega-dataflow';\n\nexport {\n scale,\n scheme,\n schemeDiscretized,\n interpolate,\n interpolateRange,\n timeInterval,\n utcInterval\n} from 'vega-scale';\n\nexport {\n projection\n} from 'vega-projection';\n\nexport {\n View\n} from 'vega-view';\n\nexport {\n parse,\n expressionFunction,\n formatLocale,\n timeFormatLocale\n} from 'vega-parser';\n\nexport {\n parse as runtime,\n context as runtimeContext\n} from 'vega-runtime';\n","var name = \"vega-themes\";\nvar version$1 = \"2.10.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\n\t\"vega\",\n\t\"vega-lite\",\n\t\"themes\",\n\t\"style\"\n];\nvar license = \"BSD-3-Clause\";\nvar author = {\n\tname: \"UW Interactive Data Lab\",\n\turl: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [\n\t{\n\t\tname: \"Emily Gu\",\n\t\turl: \"https://github.com/emilygu\"\n\t},\n\t{\n\t\tname: \"Arvind Satyanarayan\",\n\t\turl: \"http://arvindsatya.com\"\n\t},\n\t{\n\t\tname: \"Jeffrey Heer\",\n\t\turl: \"https://idl.cs.washington.edu\"\n\t},\n\t{\n\t\tname: \"Dominik Moritz\",\n\t\turl: \"https://www.domoritz.de\"\n\t}\n];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\n\t\"src\",\n\t\"build\"\n];\nvar scripts = {\n\tprebuild: \"yarn clean\",\n\tbuild: \"rollup -c\",\n\tclean: \"rimraf build && rimraf examples/build\",\n\t\"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n\t\"copy:build\": \"rsync -r build/* examples/build\",\n\t\"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n\tpreversion: \"yarn lint\",\n\tserve: \"browser-sync start -s -f build examples --serveStatic examples\",\n\tstart: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n\tprepare: \"beemo create-config\",\n\teslintbase: \"beemo eslint .\",\n\tformat: \"yarn eslintbase --fix\",\n\tlint: \"yarn eslintbase\",\n\trelease: \"auto shipit\"\n};\nvar devDependencies = {\n\t\"@auto-it/conventional-commits\": \"^10.32.2\",\n\t\"@auto-it/first-time-contributor\": \"^10.32.2\",\n\t\"@rollup/plugin-json\": \"^4.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^13.0.6\",\n\t\"rollup-plugin-ts\": \"^1.4.7\",\n\tauto: \"^10.32.2\",\n\t\"browser-sync\": \"^2.27.7\",\n\tconcurrently: \"^6.4.0\",\n\t\"gh-pages\": \"^3.2.3\",\n\trollup: \"^2.60.0\",\n\t\"rollup-plugin-bundle-size\": \"^1.0.3\",\n\t\"rollup-plugin-terser\": \"^7.0.2\",\n\ttypescript: \"^4.4.4\",\n\tvega: \"^5.19.1\",\n\t\"vega-lite\": \"^5.0.0\",\n\t\"vega-lite-dev-config\": \"^0.20.0\"\n};\nvar peerDependencies = {\n\tvega: \"*\",\n\t\"vega-lite\": \"*\"\n};\nvar pkg = {\n\tname: name,\n\tversion: version$1,\n\tdescription: description,\n\tkeywords: keywords,\n\tlicense: license,\n\tauthor: author,\n\tcontributors: contributors,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\trepository: repository,\n\tfiles: files,\n\tscripts: scripts,\n\tdevDependencies: devDependencies,\n\tpeerDependencies: peerDependencies\n};\n\nconst lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n background: '#333',\n title: {\n color: lightColor,\n subtitleColor: lightColor,\n },\n style: {\n 'guide-label': {\n fill: lightColor,\n },\n 'guide-title': {\n fill: lightColor,\n },\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor,\n },\n};\n\nconst markColor$7 = '#4572a7';\nconst excelTheme = {\n background: '#fff',\n arc: { fill: markColor$7 },\n area: { fill: markColor$7 },\n line: { stroke: markColor$7, strokeWidth: 2 },\n path: { stroke: markColor$7 },\n rect: { fill: markColor$7 },\n shape: { stroke: markColor$7 },\n symbol: { fill: markColor$7, strokeWidth: 1.5, size: 50 },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5,\n },\n axisBand: {\n grid: false,\n tickExtra: true,\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square',\n },\n range: {\n category: [\n '#4572a7',\n '#aa4643',\n '#8aa453',\n '#71598e',\n '#4598ae',\n '#d98445',\n '#94aace',\n '#d09393',\n '#b9cc98',\n '#a99cbc',\n ],\n },\n};\n\nconst markColor$6 = '#30a2da';\nconst axisColor$2 = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor$2 = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n arc: { fill: markColor$6 },\n area: { fill: markColor$6 },\n axis: {\n domainColor: axisColor$2,\n grid: true,\n gridColor: axisColor$2,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n titleColor: guideTitleColor,\n tickColor: axisColor$2,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n labelPadding: 4,\n },\n axisBand: {\n grid: false,\n },\n background: backgroundColor$2,\n group: {\n fill: backgroundColor$2,\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10,\n },\n line: {\n stroke: markColor$6,\n strokeWidth: 2,\n },\n path: { stroke: markColor$6, strokeWidth: 0.5 },\n rect: { fill: markColor$6 },\n range: {\n category: [\n '#30a2da',\n '#fc4f30',\n '#e5ae38',\n '#6d904f',\n '#8b8b8b',\n '#b96db8',\n '#ff9e27',\n '#56cc60',\n '#52d2ca',\n '#52689e',\n '#545454',\n '#9fe4f8',\n ],\n diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5'],\n },\n point: {\n filled: true,\n shape: 'circle',\n },\n shape: { stroke: markColor$6 },\n bar: {\n binSpacing: 2,\n fill: markColor$6,\n stroke: null,\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20,\n },\n};\n\nconst markColor$5 = '#000';\nconst ggplot2Theme = {\n group: {\n fill: '#e5e5e5',\n },\n arc: { fill: markColor$5 },\n area: { fill: markColor$5 },\n line: { stroke: markColor$5 },\n path: { stroke: markColor$5 },\n rect: { fill: markColor$5 },\n shape: { stroke: markColor$5 },\n symbol: { fill: markColor$5, size: 40 },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal',\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40,\n },\n range: {\n category: [\n '#000000',\n '#7F7F7F',\n '#1A1A1A',\n '#999999',\n '#333333',\n '#B0B0B0',\n '#4D4D4D',\n '#C9C9C9',\n '#666666',\n '#DCDCDC',\n ],\n },\n};\n\nconst headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont$1 = 'Benton Gothic, sans-serif';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor$4 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans-serif';\nconst titleFontWeight = 'normal';\nconst titleFontSize$1 = 13;\nconst colorSchemes$1 = {\n 'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n 'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n 'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n 'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d'],\n};\nconst latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n color: '#000000',\n font: titleFont,\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight,\n },\n arc: { fill: markColor$4 },\n area: { fill: markColor$4 },\n line: { stroke: markColor$4, strokeWidth: 2 },\n path: { stroke: markColor$4 },\n rect: { fill: markColor$4 },\n shape: { stroke: markColor$4 },\n symbol: { fill: markColor$4, size: 30 },\n axis: {\n labelFont: labelFont$1,\n labelFontSize,\n labelFontWeight,\n titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight,\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3,\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11,\n },\n legend: {\n labelFont: labelFont$1,\n labelFontSize,\n symbolType: 'square',\n titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight,\n },\n range: {\n category: colorSchemes$1['category-6'],\n diverging: colorSchemes$1['fireandice-6'],\n heatmap: colorSchemes$1['fire-7'],\n ordinal: colorSchemes$1['fire-7'],\n ramp: colorSchemes$1['fire-7'],\n },\n};\n\nconst markColor$3 = '#ab5787';\nconst axisColor$1 = '#979797';\nconst quartzTheme = {\n background: '#f9f9f9',\n arc: { fill: markColor$3 },\n area: { fill: markColor$3 },\n line: { stroke: markColor$3 },\n path: { stroke: markColor$3 },\n rect: { fill: markColor$3 },\n shape: { stroke: markColor$3 },\n symbol: { fill: markColor$3, size: 30 },\n axis: {\n domainColor: axisColor$1,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor$1,\n tickColor: axisColor$1,\n tickWidth: 0.2,\n titleColor: axisColor$1,\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n grid: true,\n tickSize: 10,\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n },\n range: {\n category: [\n '#ab5787',\n '#51b2e5',\n '#703c5c',\n '#168dd9',\n '#d190b6',\n '#00609f',\n '#d365ba',\n '#154866',\n '#666666',\n '#c4c4c4',\n ],\n },\n};\n\nconst markColor$2 = '#3e5c69';\nconst voxTheme = {\n background: '#fff',\n arc: { fill: markColor$2 },\n area: { fill: markColor$2 },\n line: { stroke: markColor$2 },\n path: { stroke: markColor$2 },\n rect: { fill: markColor$2 },\n shape: { stroke: markColor$2 },\n symbol: { fill: markColor$2 },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal',\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n gridWidth: 0.2,\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square',\n },\n range: {\n category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2'],\n },\n};\n\nconst markColor$1 = '#1696d2';\nconst axisColor = '#000000';\nconst backgroundColor$1 = '#FFFFFF';\nconst font = 'Lato';\nconst labelFont = 'Lato';\nconst sourceFont = 'Lato';\nconst gridColor$1 = '#DEDDDD';\nconst titleFontSize = 18;\nconst colorSchemes = {\n 'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n 'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n 'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n 'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n 'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n 'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n 'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n 'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n 'one-group': ['#1696d2', '#000000'],\n 'two-groups-cat-1': ['#1696d2', '#000000'],\n 'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n 'two-groups-cat-3': ['#1696d2', '#db2b27'],\n 'two-groups-seq': ['#a2d4ec', '#1696d2'],\n 'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n 'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n 'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n 'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n 'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n 'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n 'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n 'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n 'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n 'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n 'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n 'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a'],\n};\nconst urbanInstituteTheme = {\n background: backgroundColor$1,\n title: {\n anchor: 'start',\n fontSize: titleFontSize,\n font: font,\n },\n axisX: {\n domain: true,\n domainColor: axisColor,\n domainWidth: 1,\n grid: false,\n labelFontSize: 12,\n labelFont: labelFont,\n labelAngle: 0,\n tickColor: axisColor,\n tickSize: 5,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n },\n axisY: {\n domain: false,\n domainWidth: 1,\n grid: true,\n gridColor: gridColor$1,\n gridWidth: 1,\n labelFontSize: 12,\n labelFont: labelFont,\n labelPadding: 8,\n ticks: false,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n titleAngle: 0,\n titleY: -10,\n titleX: 18,\n },\n legend: {\n labelFontSize: 12,\n labelFont: labelFont,\n symbolSize: 100,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n orient: 'right',\n offset: 10,\n },\n view: {\n stroke: 'transparent',\n },\n range: {\n category: colorSchemes['six-groups-cat-1'],\n diverging: colorSchemes['diverging-colors'],\n heatmap: colorSchemes['diverging-colors'],\n ordinal: colorSchemes['six-groups-seq'],\n ramp: colorSchemes['shades-blue'],\n },\n area: {\n fill: markColor$1,\n },\n rect: {\n fill: markColor$1,\n },\n line: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 5,\n },\n trail: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 0,\n size: 1,\n },\n path: {\n stroke: markColor$1,\n strokeWidth: 0.5,\n },\n point: {\n filled: true,\n },\n text: {\n font: sourceFont,\n color: markColor$1,\n fontSize: 11,\n align: 'center',\n fontWeight: 400,\n size: 11,\n },\n style: {\n bar: {\n fill: markColor$1,\n stroke: null,\n },\n },\n arc: { fill: markColor$1 },\n shape: { stroke: markColor$1 },\n symbol: { fill: markColor$1, size: 30 },\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\nconst markColor = '#3366CC';\nconst gridColor = '#ccc';\nconst defaultFont = 'Arial, sans-serif';\nconst googlechartsTheme = {\n arc: { fill: markColor },\n area: { fill: markColor },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { stroke: markColor },\n circle: { fill: markColor },\n background: '#fff',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10,\n },\n style: {\n 'guide-label': {\n font: defaultFont,\n fontSize: 12,\n },\n 'guide-title': {\n font: defaultFont,\n fontSize: 12,\n },\n 'group-title': {\n font: defaultFont,\n fontSize: 12,\n },\n },\n title: {\n font: defaultFont,\n fontSize: 14,\n fontWeight: 'bold',\n dy: -3,\n anchor: 'start',\n },\n axis: {\n gridColor: gridColor,\n tickColor: gridColor,\n domain: false,\n grid: true,\n },\n range: {\n category: [\n '#4285F4',\n '#DB4437',\n '#F4B400',\n '#0F9D58',\n '#AB47BC',\n '#00ACC1',\n '#FF7043',\n '#9E9D24',\n '#5C6BC0',\n '#F06292',\n '#00796B',\n '#C2185B',\n ],\n heatmap: ['#c6dafc', '#5e97f6', '#2a56c6'],\n },\n};\n\nconst ptToPx = (value) => value * (1 / 3 + 1);\nconst fontSmallPx = ptToPx(9);\nconst legendFontPx = ptToPx(10);\nconst fontLargePx = ptToPx(12);\nconst fontStandard = 'Segoe UI';\nconst fontTitle = 'wf_standard-font, helvetica, arial, sans-serif';\nconst firstLevelElementColor = '#252423';\nconst secondLevelElementColor = '#605E5C';\nconst backgroundColor = 'transparent';\nconst backgroundSecondaryColor = '#C8C6C4';\nconst paletteColor1 = '#118DFF';\nconst paletteColor2 = '#12239E';\nconst paletteColor3 = '#E66C37';\nconst paletteColor4 = '#6B007B';\nconst paletteColor5 = '#E044A7';\nconst paletteColor6 = '#744EC2';\nconst paletteColor7 = '#D9B300';\nconst paletteColor8 = '#D64550';\nconst divergentColorMax = paletteColor1;\nconst divergentColorMin = '#DEEFFF';\nconst divergentPalette = [divergentColorMin, divergentColorMax];\nconst ordinalPalette = [\n divergentColorMin,\n '#c7e4ff',\n '#b0d9ff',\n '#9aceff',\n '#83c3ff',\n '#6cb9ff',\n '#55aeff',\n '#3fa3ff',\n '#2898ff',\n divergentColorMax,\n];\nconst powerbiTheme = {\n view: { stroke: backgroundColor },\n background: backgroundColor,\n font: fontStandard,\n header: {\n titleFont: fontTitle,\n titleFontSize: fontLargePx,\n titleColor: firstLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor,\n },\n axis: {\n ticks: false,\n grid: false,\n domain: false,\n labelColor: secondLevelElementColor,\n labelFontSize: fontSmallPx,\n titleFont: fontTitle,\n titleColor: firstLevelElementColor,\n titleFontSize: fontLargePx,\n titleFontWeight: 'normal',\n },\n axisQuantitative: {\n tickCount: 3,\n grid: true,\n gridColor: backgroundSecondaryColor,\n gridDash: [1, 5],\n labelFlush: false,\n },\n axisBand: { tickExtra: true },\n axisX: { labelPadding: 5 },\n axisY: { labelPadding: 10 },\n bar: { fill: paletteColor1 },\n line: {\n stroke: paletteColor1,\n strokeWidth: 3,\n strokeCap: 'round',\n strokeJoin: 'round',\n },\n text: { font: fontStandard, fontSize: fontSmallPx, fill: secondLevelElementColor },\n arc: { fill: paletteColor1 },\n area: { fill: paletteColor1, line: true, opacity: 0.6 },\n path: { stroke: paletteColor1 },\n rect: { fill: paletteColor1 },\n point: { fill: paletteColor1, filled: true, size: 75 },\n shape: { stroke: paletteColor1 },\n symbol: { fill: paletteColor1, strokeWidth: 1.5, size: 50 },\n legend: {\n titleFont: fontStandard,\n titleFontWeight: 'bold',\n titleColor: secondLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor,\n symbolType: 'circle',\n symbolSize: 75,\n },\n range: {\n category: [\n paletteColor1,\n paletteColor2,\n paletteColor3,\n paletteColor4,\n paletteColor5,\n paletteColor6,\n paletteColor7,\n paletteColor8,\n ],\n diverging: divergentPalette,\n heatmap: divergentPalette,\n ordinal: ordinalPalette,\n },\n};\n\nconst version = pkg.version;\n\nexport { darkTheme as dark, excelTheme as excel, fiveThirtyEightTheme as fivethirtyeight, ggplot2Theme as ggplot2, googlechartsTheme as googlecharts, latimesTheme as latimes, powerbiTheme as powerbi, quartzTheme as quartz, urbanInstituteTheme as urbaninstitute, version, voxTheme as vox };\n","import defaultStyle from './style';\nvar EL_ID = 'vg-tooltip-element';\nexport var DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2,\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nexport function escapeHTML(value) {\n return String(value)\n .replace(/&/g, '&')\n .replace(/\" + valueToHtml(title) + \"\";\n }\n var keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var val = rest[key];\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += \"\";\n }\n content += \"
\" + valueToHtml(key) + \":\" + valueToHtml(val) + \"
\";\n }\n return content || '{}'; // show empty object if there are no properties\n }\n return valueToHtml(value);\n}\nexport function replacer(maxDepth) {\n var stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n var pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n/**\n * Stringify any JS object to valid JSON\n */\nexport function stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZm9ybWF0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4RDs7Ozs7R0FLRztBQUNILE1BQU0sc0JBQXNCLEtBQVUsRUFBRSxXQUFtQyxFQUFFLFFBQWdCO0lBQzNGLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2xCLE9BQU8sTUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQXJELENBQXFELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQUcsQ0FBQztLQUNoRztJQUVELElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25CLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUVqQixJQUFNLFVBQWlDLEVBQS9CLGdCQUFLLEVBQUUsb0NBQXdCLENBQUM7UUFFeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLElBQUksU0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQU8sQ0FBQztTQUM3QztRQUVELElBQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksU0FBUyxDQUFDO1lBQ3JCLEtBQWtCLFVBQUksRUFBSixhQUFJLEVBQUosa0JBQUksRUFBSixJQUFJO2dCQUFqQixJQUFNLEdBQUcsYUFBQTtnQkFDWixJQUFJLEdBQUcsR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFDaEM7Z0JBRUQsT0FBTyxJQUFJLDJCQUF1QixXQUFXLENBQUMsR0FBRyxDQUFDLGtDQUEyQixXQUFXLENBQUMsR0FBRyxDQUFDLGVBQVksQ0FBQzthQUMzRztZQUNELE9BQU8sSUFBSSxVQUFVLENBQUM7U0FDdkI7UUFFRCxPQUFPLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQywrQ0FBK0M7S0FDeEU7SUFFRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxtQkFBbUIsUUFBZ0I7SUFDdkMsSUFBTSxLQUFLLEdBQVUsRUFBRSxDQUFDO0lBRXhCLE9BQU8sVUFBb0IsR0FBVyxFQUFFLEtBQVU7UUFDaEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUMvQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRTtZQUMzQixPQUFPLFVBQVUsQ0FBQztTQUNuQjtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsT0FBTyxZQUFZLENBQUM7U0FDckI7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBUSxFQUFFLFFBQWdCO0lBQ2xELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQyJ9","import * as tslib_1 from \"tslib\";\nimport { createDefaultStyle, DEFAULT_OPTIONS, escapeHTML } from './defaults';\nimport { formatValue } from './formatValue';\nimport { calculatePosition } from './position';\n/**\n * The tooltip handler class.\n */\nvar Handler = /** @class */ (function () {\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n function Handler(options) {\n this.options = tslib_1.__assign({}, DEFAULT_OPTIONS, options);\n var elementId = this.options.id;\n // bind this to call\n this.call = this.tooltip_handler.bind(this);\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n var style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n if (document.head.childNodes.length > 0) {\n document.head.insertBefore(style, document.head.childNodes[0]);\n }\n else {\n document.head.appendChild(style);\n }\n }\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(elementId);\n if (!this.el) {\n this.el = document.createElement('div');\n this.el.setAttribute('id', elementId);\n this.el.classList.add('vg-tooltip');\n document.body.appendChild(this.el);\n }\n }\n /**\n * The tooltip handler function.\n */\n Handler.prototype.tooltip_handler = function (handler, event, item, value) {\n // console.log(handler, event, item, value);\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', this.options.theme + \"-theme\");\n return;\n }\n // set the tooltip content\n this.el.innerHTML = formatValue(value, escapeHTML, this.options.maxDepth);\n // make the tooltip visible\n this.el.classList.add('visible', this.options.theme + \"-theme\");\n var _a = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY), x = _a.x, y = _a.y;\n this.el.setAttribute('style', \"top: \" + y + \"px; left: \" + x + \"px\");\n };\n return Handler;\n}());\nexport { Handler };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9IYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBVyxNQUFNLFlBQVksQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUvQzs7R0FFRztBQUNIO0lBZ0JFOzs7O09BSUc7SUFDSCxpQkFBWSxPQUEwQjtRQUNwQyxJQUFJLENBQUMsT0FBTyx3QkFBUSxlQUFlLEVBQUssT0FBTyxDQUFFLENBQUM7UUFDbEQsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFFbEMsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZGLElBQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxLQUFLLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWhELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEU7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEM7U0FDRjtRQUVELHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWixJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVwQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQ0FBZSxHQUF2QixVQUF3QixPQUFZLEVBQUUsS0FBaUIsRUFBRSxJQUFTLEVBQUUsS0FBVTtRQUM1RSw0Q0FBNEM7UUFFNUMsMkRBQTJEO1FBQzNELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFdBQVEsQ0FBQyxDQUFDO1lBQ25FLE9BQU87U0FDUjtRQUVELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFFLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFRLENBQUMsQ0FBQztRQUUxRCxJQUFBLDBHQUtMLEVBTE8sUUFBQyxFQUFFLFFBQUMsQ0FLVjtRQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFRLENBQUMsa0JBQWEsQ0FBQyxPQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUEvRUQsSUErRUMifQ==","// generated with build-style.sh\nexport default \"#vg-tooltip-element {\\n visibility: hidden;\\n padding: 8px;\\n position: fixed;\\n z-index: 1000;\\n font-family: sans-serif;\\n font-size: 11px;\\n border-radius: 3px;\\n box-shadow: 2px 2px 4px rgba(0,0,0,0.1);\\n\\n /* The default theme is the light theme. */\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black;\\n}\\n#vg-tooltip-element.visible {\\n visibility: visible;\\n}\\n#vg-tooltip-element h2 {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 13px;\\n}\\n#vg-tooltip-element table {\\n border-spacing: 0;\\n}\\n#vg-tooltip-element td {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-top: 2px;\\n padding-bottom: 2px;\\n}\\n#vg-tooltip-element td.key {\\n color: #808080;\\n max-width: 150px;\\n text-align: right;\\n padding-right: 4px;\\n}\\n#vg-tooltip-element td.value {\\n display: block;\\n max-width: 300px;\\n max-height: 7em;\\n text-align: left;\\n}\\n\\n/* Dark and light color themes */\\n#vg-tooltip-element.dark-theme {\\n background-color: rgba(32, 32, 32, 0.9);\\n border: 1px solid #f5f5f5;\\n color: white;\\n}\\n#vg-tooltip-element.dark-theme td.key {\\n color: #bfbfbf;\\n}\\n\\n#vg-tooltip-element.light-theme {\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black;\\n}\\n#vg-tooltip-element.light-theme td.key {\\n color: #808080;\\n}\";\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLGVBQWUsczBDQThEYixDQUFBIn0=","/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nexport function calculatePosition(event, tooltipBox, offsetX, offsetY) {\n var x = event.clientX + offsetX;\n if (x + tooltipBox.width > window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n var y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return { x: x, y: y };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sNEJBQ0osS0FBaUIsRUFDakIsVUFBNkMsRUFDN0MsT0FBZSxFQUNmLE9BQWU7SUFFZixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDNUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztLQUNqRDtJQUVELElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUM5QyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxFQUFFLENBQUMsR0FBQSxFQUFFLENBQUMsR0FBQSxFQUFFLENBQUM7QUFDbEIsQ0FBQyJ9","// generated with build-style.sh\nexport default \".vega-embed {\\n position: relative;\\n display: inline-block;\\n padding-right: 38px;\\n}\\n\\n.vega-embed .vega-actions-wrapper {\\n display: inline-flex;\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 6px;\\n z-index: 1000;\\n\\n opacity: 0.2;\\n background: white;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\\n color: #1b1e23;\\n border: 1px solid #aaa;\\n border-radius: 999px;\\n transition: opacity 0.4s ease-in;\\n}\\n\\n.vega-embed:hover .vega-actions-wrapper {\\n transition: opacity 0.2s ease;\\n opacity: 1;\\n}\\n\\n.vega-embed .vega-actions {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: none;\\n flex-direction: column;\\n\\n padding-bottom: 8px;\\n padding-top: 8px;\\n border-radius: 4px;\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\\n border: 1px solid #d9d9d9;\\n background: white;\\n}\\n\\n.vega-embed .vega-actions-wrapper:hover {\\n background: transparent;\\n color: transparent;\\n border: none;\\n box-shadow: none;\\n}\\n\\n.vega-embed .vega-actions-wrapper:hover .vega-actions {\\n display: flex;\\n}\\n\\n.vega-embed .vega-actions a {\\n padding: 8px 16px;\\n font-family: sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n white-space: nowrap;\\n color: #434a56;\\n text-decoration: none;\\n}\\n\\n.vega-embed .vega-actions a:hover {\\n background-color: #f7f7f9;\\n color: #1b1e23;\\n}\";\n//# sourceMappingURL=style.js.map","import { isArray } from 'vega-util';\n/**\n * From vega-lite\n */\nexport function mergeDeep(dest) {\n var src = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n src[_i - 1] = arguments[_i];\n }\n for (var _a = 0, src_1 = src; _a < src_1.length; _a++) {\n var s = src_1[_a];\n dest = deepMerge_(dest, s);\n }\n return dest;\n}\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (var p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || isArray(src[p]) || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(isArray(src[p].constructor) ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\nexport function isURL(s) {\n return s.startsWith('http://') || s.startsWith('https://') || s.startsWith('//');\n}\n//# sourceMappingURL=util.js.map","import * as tslib_1 from \"tslib\";\nimport * as d3 from 'd3-selection';\nimport * as stringify_ from 'json-stringify-pretty-compact';\nimport { satisfies } from 'semver';\nimport * as vegaImport from 'vega-lib';\nimport * as vlImport from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport { Handler } from 'vega-tooltip';\nimport { post } from './post';\nimport embedStyle from './style';\nimport { mergeDeep } from './util';\n// https://github.com/rollup/rollup/issues/670\nvar stringify = stringify_.default || stringify_;\nexport var vega = vegaImport;\nexport var vl = vlImport;\nvar NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite',\n};\nvar VERSION = {\n vega: vega.version,\n 'vega-lite': vl ? vl.version : 'not available',\n};\nvar PREPROCESSOR = {\n vega: function (vgjson, _) { return vgjson; },\n 'vega-lite': function (vljson, config) { return vl.compile(vljson, { config: config }).spec; },\n};\nvar SVG_CIRCLES = \"\\n\\n \\n \\n \\n\";\nfunction isTooltipHandler(h) {\n return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n var header = \"\" + sourceHeader + \"
\";\n    var footer = \"
\" + sourceFooter + \"\";\n var win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = NAMES[mode] + \" JSON Source\";\n}\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nexport function guessMode(spec, providedMode) {\n // Decide mode\n var parsed;\n if (spec.$schema) {\n parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n console.warn(\"The given visualization spec is written in \" + NAMES[parsed.library] + \", but mode argument sets \" + NAMES[providedMode] + \".\");\n }\n var mode = parsed.library;\n if (!satisfies(VERSION[mode], \"^\" + parsed.version.slice(1))) {\n console.warn(\"The input spec uses \" + mode + \" \" + parsed.version + \", but the current version of \" + NAMES[mode] + \" is \" + VERSION[mode] + \".\");\n }\n return mode;\n }\n else {\n // try to guess from the provided spec\n if ('mark' in spec ||\n 'encoding' in spec ||\n 'layer' in spec ||\n 'hconcat' in spec ||\n 'vconcat' in spec ||\n 'facet' in spec ||\n 'repeat' in spec) {\n return 'vega-lite';\n }\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n }\n return providedMode || 'vega';\n}\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opt A JavaScript object containing options for embedding.\n */\nexport default function embed(el, spec, opt) {\n if (opt === void 0) { opt = {}; }\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var actions, loader, renderer, logLevel, data, config, data, ID, style, mode, vgSpec, parsed, div, runtime, view, handler, wrapper, ctrl, _loop_1, _i, _a, ext, editorUrl_1;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n opt = opt || {};\n actions = opt.actions === true || opt.actions === false\n ? opt.actions\n : mergeDeep({}, { export: { svg: true, png: true }, source: true, compiled: false, editor: true }, opt.actions || {});\n loader = opt.loader || vega.loader();\n renderer = opt.renderer || 'canvas';\n logLevel = opt.logLevel || vega.Warn;\n if (!vega.isString(spec)) return [3 /*break*/, 2];\n return [4 /*yield*/, loader.load(spec)];\n case 1:\n data = _b.sent();\n return [2 /*return*/, embed(el, JSON.parse(data), opt)];\n case 2:\n config = opt.config || {};\n if (!vega.isString(config)) return [3 /*break*/, 4];\n return [4 /*yield*/, loader.load(config)];\n case 3:\n data = _b.sent();\n return [2 /*return*/, embed(el, spec, tslib_1.__assign({}, opt, { config: JSON.parse(data) }))];\n case 4:\n if (opt.defaultStyle) {\n ID = 'vega-embed-style';\n if (!document.getElementById(ID)) {\n style = document.createElement('style');\n style.id = ID;\n style.innerText = opt.defaultStyle === true ? (embedStyle || '').toString() : opt.defaultStyle;\n document.getElementsByTagName('head')[0].appendChild(style);\n }\n }\n if (opt.theme) {\n config = mergeDeep({}, themes[opt.theme], config);\n }\n mode = guessMode(spec, opt.mode);\n vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n parsed = schemaParser(vgSpec.$schema);\n if (!satisfies(VERSION.vega, \"^\" + parsed.version.slice(1))) {\n console.warn(\"The compiled spec uses Vega \" + parsed.version + \", but current version is \" + VERSION.vega + \".\");\n }\n }\n }\n div = d3\n .select(el) // d3.select supports elements and strings\n .classed('vega-embed', true)\n .html('');\n if (opt.onBeforeParse) {\n // Allow Vega spec to be modified before being used\n vgSpec = opt.onBeforeParse(vgSpec);\n }\n runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config);\n view = new vega.View(runtime, {\n loader: loader,\n logLevel: logLevel,\n renderer: renderer,\n }).initialize(el);\n if (opt.tooltip !== false) {\n handler = void 0;\n if (isTooltipHandler(opt.tooltip)) {\n handler = opt.tooltip;\n }\n else {\n // user provided boolean true or tooltip options\n handler = new Handler(opt.tooltip === true ? {} : opt.tooltip).call;\n }\n view.tooltip(handler);\n }\n // do not automatically enable hover for Vega-Lite.\n if (opt.hover === undefined ? mode !== 'vega-lite' : opt.hover) {\n view.hover();\n }\n if (opt) {\n if (opt.width) {\n view.width(opt.width);\n }\n if (opt.height) {\n view.height(opt.height);\n }\n if (opt.padding) {\n view.padding(opt.padding);\n }\n }\n if (!opt.runAsync) return [3 /*break*/, 6];\n return [4 /*yield*/, view.runAsync()];\n case 5:\n _b.sent();\n return [3 /*break*/, 7];\n case 6:\n view.run();\n _b.label = 7;\n case 7:\n if (actions !== false) {\n wrapper = div.append('div').attr('class', 'vega-actions-wrapper');\n if (opt.defaultStyle === true) {\n wrapper.html(SVG_CIRCLES);\n }\n ctrl = wrapper.insert('div').attr('class', 'vega-actions');\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n _loop_1 = function (ext) {\n if (actions === true || actions.export === true || actions.export[ext]) {\n ctrl\n .append('a')\n .text(\"Export as \" + ext.toUpperCase())\n .attr('href', '#')\n .attr('target', '_blank')\n .attr('download', \"visualization.\" + ext)\n .on('mousedown', function () {\n var _this = this;\n view\n .toImageURL(ext, opt.scaleFactor)\n .then(function (url) {\n _this.href = url;\n })\n .catch(function (error) {\n throw error;\n });\n d3.event.preventDefault();\n });\n }\n };\n for (_i = 0, _a = ['svg', 'png']; _i < _a.length; _i++) {\n ext = _a[_i];\n _loop_1(ext);\n }\n }\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n ctrl\n .append('a')\n .text('View Source')\n .attr('href', '#')\n .on('click', function () {\n viewSource(stringify(spec), opt.sourceHeader || '', opt.sourceFooter || '', mode);\n d3.event.preventDefault();\n });\n }\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n ctrl\n .append('a')\n .text('View Vega')\n .attr('href', '#')\n .on('click', function () {\n viewSource(stringify(vgSpec), opt.sourceHeader || '', opt.sourceFooter || '', 'vega');\n d3.event.preventDefault();\n });\n }\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n editorUrl_1 = opt.editorUrl || 'https://vega.github.io/editor/';\n ctrl\n .append('a')\n .text('Open in Vega Editor')\n .attr('href', '#')\n .on('click', function () {\n post(window, editorUrl_1, {\n config: config,\n mode: mode,\n renderer: renderer,\n spec: stringify(spec),\n });\n d3.event.preventDefault();\n });\n }\n }\n return [2 /*return*/, { view: view, spec: spec }];\n }\n });\n });\n}\n//# sourceMappingURL=embed.js.map","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","/**\n * Open editor url in a new window, and pass a message.\n */\nexport function post(window, url, data) {\n var editor = window.open(url);\n var wait = 10000;\n var step = 250;\n var count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, '*');\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n//# sourceMappingURL=post.js.map","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar R = 0\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1]\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n })\n })\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[CARETLOOSE] : re[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '')\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n var match = version.match(re[COERCE])\n\n if (match == null) {\n return null\n }\n\n return parse(match[1] +\n '.' + (match[2] || '0') +\n '.' + (match[3] || '0'))\n}\n","const VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n};\nlet DEFAULT_SOURCE, MARKS;\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\n\nfunction eventSelector (selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\n\nfunction isMarkType(type) {\n return MARKS[type];\n}\n\nfunction find(s, i, endChar, pushChar, popChar) {\n const n = s.length;\n let count = 0,\n c;\n\n for (; i < n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n\n return i;\n}\n\nfunction parseMerge(s) {\n const output = [],\n n = s.length;\n let start = 0,\n i = 0;\n\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n\n return output;\n}\n\nfunction parseSelector(s) {\n return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\n\nfunction parseBetween(s) {\n const n = s.length;\n let i = 1,\n b;\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n\n b = parseMerge(s.substring(1, i));\n\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n\n s = s.slice(i + 1).trim();\n\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n\n b = b.map(parseSelector);\n const stream = parseSelector(s.slice(1).trim());\n\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n\n return stream;\n}\n\nfunction parseStream(s) {\n const stream = {\n source: DEFAULT_SOURCE\n },\n source = [];\n let throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0,\n j,\n filter; // extract throttle from end\n\n if (s[n - 1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i + 1, n - 1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n\n i = 0;\n }\n\n if (!n) throw s; // set name flag based on first char\n\n if (s[0] === NAME) markname = ++i; // extract first part of multi-part stream selector\n\n j = find(s, i, COLON);\n\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n } // extract remaining part of stream selector\n\n\n i = find(s, i, LBRACK);\n\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n } // extract filters\n\n\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n } // marshall event stream specification\n\n\n if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n throw 'Invalid event selector: ' + s;\n }\n\n if (n > 1) {\n stream.type = source[1];\n\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1);\n }\n\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n return stream;\n}\n\nfunction parseThrottle(s) {\n const a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(_ => {\n const x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\n\nexport { eventSelector as selector };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"./util\");\nvar AGGREGATE_OP_INDEX = {\n argmax: 1,\n argmin: 1,\n average: 1,\n count: 1,\n distinct: 1,\n max: 1,\n mean: 1,\n median: 1,\n min: 1,\n missing: 1,\n q1: 1,\n q3: 1,\n ci0: 1,\n ci1: 1,\n stderr: 1,\n stdev: 1,\n stdevp: 1,\n sum: 1,\n valid: 1,\n values: 1,\n variance: 1,\n variancep: 1,\n};\nexports.AGGREGATE_OPS = util_1.flagKeys(AGGREGATE_OP_INDEX);\nfunction isAggregateOp(a) {\n return !!AGGREGATE_OP_INDEX[a];\n}\nexports.isAggregateOp = isAggregateOp;\nexports.COUNTING_OPS = ['count', 'valid', 'missing', 'distinct'];\nfunction isCountingAggregateOp(aggregate) {\n return aggregate && util_1.contains(exports.COUNTING_OPS, aggregate);\n}\nexports.isCountingAggregateOp = isCountingAggregateOp;\n/** Additive-based aggregation operations. These can be applied to stack. */\nexports.SUM_OPS = [\n 'count',\n 'sum',\n 'distinct',\n 'valid',\n 'missing'\n];\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nexports.SHARED_DOMAIN_OPS = [\n 'mean',\n 'average',\n 'median',\n 'q1',\n 'q3',\n 'min',\n 'max',\n];\nexports.SHARED_DOMAIN_OP_INDEX = vega_util_1.toSet(exports.SHARED_DOMAIN_OPS);\n//# sourceMappingURL=aggregate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"./util\");\nexports.AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n * (Properties not listed are applicable for both)\n */\nexports.AXIS_PROPERTY_TYPE = {\n grid: 'grid',\n gridScale: 'grid',\n domain: 'main',\n labels: 'main',\n labelFlush: 'main',\n labelOverlap: 'main',\n minExtent: 'main',\n maxExtent: 'main',\n offset: 'main',\n ticks: 'main',\n title: 'main',\n values: 'both',\n scale: 'both',\n zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\nvar COMMON_AXIS_PROPERTIES_INDEX = {\n orient: 1,\n domain: 1,\n format: 1,\n grid: 1,\n labelBound: 1,\n labelFlush: 1,\n labelPadding: 1,\n labels: 1,\n labelOverlap: 1,\n maxExtent: 1,\n minExtent: 1,\n offset: 1,\n position: 1,\n tickCount: 1,\n ticks: 1,\n tickSize: 1,\n title: 1,\n titlePadding: 1,\n values: 1,\n zindex: 1,\n};\nvar AXIS_PROPERTIES_INDEX = tslib_1.__assign({}, COMMON_AXIS_PROPERTIES_INDEX, { encoding: 1, labelAngle: 1, titleMaxLength: 1 });\nvar VG_AXIS_PROPERTIES_INDEX = tslib_1.__assign({ scale: 1 }, COMMON_AXIS_PROPERTIES_INDEX, { gridScale: 1, encode: 1 });\nfunction isAxisProperty(prop) {\n return !!AXIS_PROPERTIES_INDEX[prop];\n}\nexports.isAxisProperty = isAxisProperty;\nexports.VG_AXIS_PROPERTIES = util_1.flagKeys(VG_AXIS_PROPERTIES_INDEX);\n// Export for dependent projects\nexports.AXIS_PROPERTIES = util_1.flagKeys(AXIS_PROPERTIES_INDEX);\n//# sourceMappingURL=axis.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"./channel\");\nvar util_1 = require(\"./util\");\nfunction binToString(bin) {\n if (vega_util_1.isBoolean(bin)) {\n return 'bin';\n }\n return 'bin' + util_1.keys(bin).map(function (p) { return util_1.varName(\"_\" + p + \"_\" + bin[p]); }).join('');\n}\nexports.binToString = binToString;\nfunction isBinParams(bin) {\n return bin && !vega_util_1.isBoolean(bin);\n}\nexports.isBinParams = isBinParams;\nfunction autoMaxBins(channel) {\n switch (channel) {\n case channel_1.ROW:\n case channel_1.COLUMN:\n case channel_1.SIZE:\n case channel_1.COLOR:\n case channel_1.FILL:\n case channel_1.STROKE:\n case channel_1.OPACITY:\n // Facets and Size shouldn't have too many bins\n // We choose 6 like shape to simplify the rule\n case channel_1.SHAPE:\n return 6; // Vega's \"shape\" has 6 distinct values\n default:\n return 10;\n }\n}\nexports.autoMaxBins = autoMaxBins;\n//# sourceMappingURL=bin.js.map","\"use strict\";\n/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"./util\");\nvar Channel;\n(function (Channel) {\n // Facet\n Channel.ROW = 'row';\n Channel.COLUMN = 'column';\n // Position\n Channel.X = 'x';\n Channel.Y = 'y';\n Channel.X2 = 'x2';\n Channel.Y2 = 'y2';\n // Geo Position\n Channel.LATITUDE = 'latitude';\n Channel.LONGITUDE = 'longitude';\n Channel.LATITUDE2 = 'latitude2';\n Channel.LONGITUDE2 = 'longitude2';\n // Mark property with scale\n Channel.COLOR = 'color';\n Channel.FILL = 'fill';\n Channel.STROKE = 'stroke';\n Channel.SHAPE = 'shape';\n Channel.SIZE = 'size';\n Channel.OPACITY = 'opacity';\n // Non-scale channel\n Channel.TEXT = 'text';\n Channel.ORDER = 'order';\n Channel.DETAIL = 'detail';\n Channel.KEY = 'key';\n Channel.TOOLTIP = 'tooltip';\n Channel.HREF = 'href';\n})(Channel = exports.Channel || (exports.Channel = {}));\nexports.X = Channel.X;\nexports.Y = Channel.Y;\nexports.X2 = Channel.X2;\nexports.Y2 = Channel.Y2;\nexports.LATITUDE = Channel.LATITUDE;\nexports.LATITUDE2 = Channel.LATITUDE2;\nexports.LONGITUDE = Channel.LONGITUDE;\nexports.LONGITUDE2 = Channel.LONGITUDE2;\nexports.ROW = Channel.ROW;\nexports.COLUMN = Channel.COLUMN;\nexports.SHAPE = Channel.SHAPE;\nexports.SIZE = Channel.SIZE;\nexports.COLOR = Channel.COLOR;\nexports.FILL = Channel.FILL;\nexports.STROKE = Channel.STROKE;\nexports.TEXT = Channel.TEXT;\nexports.DETAIL = Channel.DETAIL;\nexports.KEY = Channel.KEY;\nexports.ORDER = Channel.ORDER;\nexports.OPACITY = Channel.OPACITY;\nexports.TOOLTIP = Channel.TOOLTIP;\nexports.HREF = Channel.HREF;\nexports.GEOPOSITION_CHANNEL_INDEX = {\n longitude: 1,\n longitude2: 1,\n latitude: 1,\n latitude2: 1,\n};\nexports.GEOPOSITION_CHANNELS = util_1.flagKeys(exports.GEOPOSITION_CHANNEL_INDEX);\nvar UNIT_CHANNEL_INDEX = tslib_1.__assign({ \n // position\n x: 1, y: 1, x2: 1, y2: 1 }, exports.GEOPOSITION_CHANNEL_INDEX, { \n // color\n color: 1, fill: 1, stroke: 1, \n // other non-position with scale\n opacity: 1, size: 1, shape: 1, \n // channels without scales\n order: 1, text: 1, detail: 1, key: 1, tooltip: 1, href: 1 });\nfunction isColorChannel(channel) {\n return channel === 'color' || channel === 'fill' || channel === 'stroke';\n}\nexports.isColorChannel = isColorChannel;\nvar FACET_CHANNEL_INDEX = {\n row: 1,\n column: 1\n};\nvar CHANNEL_INDEX = tslib_1.__assign({}, UNIT_CHANNEL_INDEX, FACET_CHANNEL_INDEX);\nexports.CHANNELS = util_1.flagKeys(CHANNEL_INDEX);\nvar _o = CHANNEL_INDEX.order, _d = CHANNEL_INDEX.detail, SINGLE_DEF_CHANNEL_INDEX = tslib_1.__rest(CHANNEL_INDEX, [\"order\", \"detail\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nexports.SINGLE_DEF_CHANNELS = util_1.flagKeys(SINGLE_DEF_CHANNEL_INDEX);\nfunction isChannel(str) {\n return !!CHANNEL_INDEX[str];\n}\nexports.isChannel = isChannel;\n// CHANNELS without COLUMN, ROW\nexports.UNIT_CHANNELS = util_1.flagKeys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nvar _x = UNIT_CHANNEL_INDEX.x, _y = UNIT_CHANNEL_INDEX.y, \n// x2 and y2 share the same scale as x and y\n_x2 = UNIT_CHANNEL_INDEX.x2, _y2 = UNIT_CHANNEL_INDEX.y2, _latitude = UNIT_CHANNEL_INDEX.latitude, _longitude = UNIT_CHANNEL_INDEX.longitude, _latitude2 = UNIT_CHANNEL_INDEX.latitude2, _longitude2 = UNIT_CHANNEL_INDEX.longitude2, \n// The rest of unit channels then have scale\nNONPOSITION_CHANNEL_INDEX = tslib_1.__rest(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\"]);\nexports.NONPOSITION_CHANNELS = util_1.flagKeys(NONPOSITION_CHANNEL_INDEX);\n// POSITION_SCALE_CHANNELS = X and Y;\nvar POSITION_SCALE_CHANNEL_INDEX = { x: 1, y: 1 };\nexports.POSITION_SCALE_CHANNELS = util_1.flagKeys(POSITION_SCALE_CHANNEL_INDEX);\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without X, Y\nvar \n// x2 and y2 share the same scale as x and y\n// text and tooltip have format instead of scale,\n// href has neither format, nor scale\n_t = NONPOSITION_CHANNEL_INDEX.text, _tt = NONPOSITION_CHANNEL_INDEX.tooltip, _hr = NONPOSITION_CHANNEL_INDEX.href, \n// detail and order have no scale\n_dd = NONPOSITION_CHANNEL_INDEX.detail, _k = NONPOSITION_CHANNEL_INDEX.key, _oo = NONPOSITION_CHANNEL_INDEX.order, NONPOSITION_SCALE_CHANNEL_INDEX = tslib_1.__rest(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"detail\", \"key\", \"order\"]);\nexports.NONPOSITION_SCALE_CHANNELS = util_1.flagKeys(NONPOSITION_SCALE_CHANNEL_INDEX);\n// Declare SCALE_CHANNEL_INDEX\nvar SCALE_CHANNEL_INDEX = tslib_1.__assign({}, POSITION_SCALE_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nexports.SCALE_CHANNELS = util_1.flagKeys(SCALE_CHANNEL_INDEX);\nfunction isScaleChannel(channel) {\n return !!SCALE_CHANNEL_INDEX[channel];\n}\nexports.isScaleChannel = isScaleChannel;\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nfunction supportMark(channel, mark) {\n return mark in getSupportedMark(channel);\n}\nexports.supportMark = supportMark;\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to boolean values.\n */\nfunction getSupportedMark(channel) {\n switch (channel) {\n case exports.COLOR:\n case exports.FILL:\n case exports.STROKE:\n case exports.DETAIL:\n case exports.KEY:\n case exports.TOOLTIP:\n case exports.HREF:\n case exports.ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n case exports.OPACITY:\n case exports.ROW:\n case exports.COLUMN:\n return {\n point: true, tick: true, rule: true, circle: true, square: true,\n bar: true, rect: true, line: true, trail: true, area: true, text: true, geoshape: true\n };\n case exports.X:\n case exports.Y:\n case exports.LATITUDE:\n case exports.LONGITUDE:\n return {\n point: true, tick: true, rule: true, circle: true, square: true,\n bar: true, rect: true, line: true, trail: true, area: true, text: true\n };\n case exports.X2:\n case exports.Y2:\n case exports.LATITUDE2:\n case exports.LONGITUDE2:\n return {\n rule: true, bar: true, rect: true, area: true\n };\n case exports.SIZE:\n return {\n point: true, tick: true, rule: true, circle: true, square: true,\n bar: true, text: true, line: true, trail: true\n };\n case exports.SHAPE:\n return { point: true, geoshape: true };\n case exports.TEXT:\n return { text: true };\n }\n}\nexports.getSupportedMark = getSupportedMark;\nfunction rangeType(channel) {\n switch (channel) {\n case exports.X:\n case exports.Y:\n case exports.SIZE:\n case exports.OPACITY:\n // X2 and Y2 use X and Y scales, so they similarly have continuous range.\n case exports.X2:\n case exports.Y2:\n return 'continuous';\n case exports.ROW:\n case exports.COLUMN:\n case exports.SHAPE:\n // TEXT, TOOLTIP, and HREF have no scale but have discrete output\n case exports.TEXT:\n case exports.TOOLTIP:\n case exports.HREF:\n return 'discrete';\n // Color can be either continuous or discrete, depending on scale type.\n case exports.COLOR:\n case exports.FILL:\n case exports.STROKE:\n return 'flexible';\n // No scale, no range type.\n case exports.LATITUDE:\n case exports.LONGITUDE:\n case exports.LATITUDE2:\n case exports.LONGITUDE2:\n case exports.DETAIL:\n case exports.KEY:\n case exports.ORDER:\n return undefined;\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('rangeType not implemented for ' + channel);\n}\nexports.rangeType = rangeType;\n//# sourceMappingURL=channel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar axis_1 = require(\"../../axis\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar util_1 = require(\"../../util\");\nfunction assembleTitle(title, config) {\n if (vega_util_1.isArray(title)) {\n return title.map(function (fieldDef) { return fielddef_1.title(fieldDef, config); }).join(', ');\n }\n return title;\n}\nfunction assembleAxis(axisCmpt, kind, config, opt) {\n if (opt === void 0) { opt = { header: false }; }\n var _a = axisCmpt.combine(), orient = _a.orient, scale = _a.scale, title = _a.title, zindex = _a.zindex, axis = tslib_1.__rest(_a, [\"orient\", \"scale\", \"title\", \"zindex\"]);\n // Remove properties that are not valid for this kind of axis\n util_1.keys(axis).forEach(function (key) {\n var propType = axis_1.AXIS_PROPERTY_TYPE[key];\n if (propType && propType !== kind && propType !== 'both') {\n delete axis[key];\n }\n });\n if (kind === 'grid') {\n if (!axis.grid) {\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n // Only need to keep encode block for grid\n var grid = axis.encode.grid;\n axis.encode = tslib_1.__assign({}, (grid ? { grid: grid } : {}));\n if (util_1.keys(axis.encode).length === 0) {\n delete axis.encode;\n }\n }\n return tslib_1.__assign({ scale: scale,\n orient: orient }, axis, { domain: false, labels: false, \n // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n // would not affect gridAxis\n maxExtent: 0, minExtent: 0, ticks: false, zindex: zindex !== undefined ? zindex : 0 // put grid behind marks by default\n });\n }\n else { // kind === 'main'\n if (!opt.header && axisCmpt.mainExtracted) {\n // if mainExtracted has been extracted to a separate facet\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n for (var _i = 0, AXIS_PARTS_1 = axis_1.AXIS_PARTS; _i < AXIS_PARTS_1.length; _i++) {\n var part = AXIS_PARTS_1[_i];\n if (!axisCmpt.hasAxisPart(part)) {\n delete axis.encode[part];\n }\n }\n if (util_1.keys(axis.encode).length === 0) {\n delete axis.encode;\n }\n }\n var titleString = assembleTitle(title, config);\n return tslib_1.__assign({ scale: scale,\n orient: orient, grid: false }, (titleString ? { title: titleString } : {}), axis, { zindex: zindex !== undefined ? zindex : 1 // put axis line above marks by default\n });\n }\n}\nexports.assembleAxis = assembleAxis;\nfunction assembleAxes(axisComponents, config) {\n var _a = axisComponents.x, x = _a === void 0 ? [] : _a, _b = axisComponents.y, y = _b === void 0 ? [] : _b;\n return x.map(function (a) { return assembleAxis(a, 'main', config); }).concat(x.map(function (a) { return assembleAxis(a, 'grid', config); }), y.map(function (a) { return assembleAxis(a, 'main', config); }), y.map(function (a) { return assembleAxis(a, 'grid', config); })).filter(function (a) { return a; }); // filter undefined\n}\nexports.assembleAxes = assembleAxes;\n//# sourceMappingURL=assemble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"../../util\");\nvar split_1 = require(\"../split\");\nfunction isFalseOrNull(v) {\n return v === false || v === null;\n}\nvar AxisComponent = /** @class */ (function (_super) {\n tslib_1.__extends(AxisComponent, _super);\n function AxisComponent(explicit, implicit, mainExtracted) {\n if (explicit === void 0) { explicit = {}; }\n if (implicit === void 0) { implicit = {}; }\n if (mainExtracted === void 0) { mainExtracted = false; }\n var _this = _super.call(this) || this;\n _this.explicit = explicit;\n _this.implicit = implicit;\n _this.mainExtracted = mainExtracted;\n return _this;\n }\n AxisComponent.prototype.clone = function () {\n return new AxisComponent(util_1.duplicate(this.explicit), util_1.duplicate(this.implicit), this.mainExtracted);\n };\n AxisComponent.prototype.hasAxisPart = function (part) {\n // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n if (part === 'axis') { // always has the axis container part\n return true;\n }\n if (part === 'grid' || part === 'title') {\n return !!this.get(part);\n }\n // Other parts are enabled by default, so they should not be false or null.\n return !isFalseOrNull(this.get(part));\n };\n return AxisComponent;\n}(split_1.Split));\nexports.AxisComponent = AxisComponent;\n//# sourceMappingURL=component.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getAxisConfig(property, config, channel, orient, scaleType) {\n if (orient === void 0) { orient = ''; }\n // configTypes to loop, starting from higher precedence\n var configTypes = (scaleType === 'band' ? ['axisBand'] : []).concat([\n channel === 'x' ? 'axisX' : 'axisY',\n 'axis' + orient.substr(0, 1).toUpperCase() + orient.substr(1),\n 'axis'\n ]);\n for (var _i = 0, configTypes_1 = configTypes; _i < configTypes_1.length; _i++) {\n var configType = configTypes_1[_i];\n if (config[configType] && config[configType][property] !== undefined) {\n return config[configType][property];\n }\n }\n return undefined;\n}\nexports.getAxisConfig = getAxisConfig;\n//# sourceMappingURL=config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar scale_1 = require(\"../../scale\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar config_1 = require(\"./config\");\nfunction labels(model, channel, specifiedLabelsSpec, orient) {\n var fieldDef = model.fieldDef(channel) ||\n (channel === 'x' ? model.fieldDef('x2') :\n channel === 'y' ? model.fieldDef('y2') :\n undefined);\n var axis = model.axis(channel);\n var config = model.config;\n var labelsSpec = {};\n // Text\n if (fielddef_1.isTimeFieldDef(fieldDef)) {\n var isUTCScale = model.getScaleComponent(channel).get('type') === scale_1.ScaleType.UTC;\n var expr = common_1.timeFormatExpression('datum.value', fieldDef.timeUnit, axis.format, config.axis.shortTimeLabels, config.timeFormat, isUTCScale);\n if (expr) {\n labelsSpec.text = { signal: expr };\n }\n }\n // Label Angle\n var angle = config_1.getAxisConfig('labelAngle', model.config, channel, orient, model.getScaleComponent(channel).get('type'));\n if (angle === undefined) {\n angle = labelAngle(axis, channel, fieldDef);\n if (angle) {\n labelsSpec.angle = { value: angle };\n }\n }\n if (angle !== undefined) {\n var align = labelAlign(angle, orient);\n if (align) {\n labelsSpec.align = { value: align };\n }\n labelsSpec.baseline = labelBaseline(angle, orient);\n }\n labelsSpec = tslib_1.__assign({}, labelsSpec, specifiedLabelsSpec);\n return util_1.keys(labelsSpec).length === 0 ? undefined : labelsSpec;\n}\nexports.labels = labels;\nfunction labelBaseline(angle, orient) {\n if (orient === 'top' || orient === 'bottom') {\n if (angle <= 45 || 315 <= angle) {\n return { value: orient === 'top' ? 'bottom' : 'top' };\n }\n else if (135 <= angle && angle <= 225) {\n return { value: orient === 'top' ? 'top' : 'bottom' };\n }\n else {\n return { value: 'middle' };\n }\n }\n else {\n if ((angle <= 45 || 315 <= angle) || (135 <= angle && angle <= 225)) {\n return { value: 'middle' };\n }\n else if (45 <= angle && angle <= 135) {\n return { value: orient === 'left' ? 'top' : 'bottom' };\n }\n else {\n return { value: orient === 'left' ? 'bottom' : 'top' };\n }\n }\n}\nexports.labelBaseline = labelBaseline;\nfunction labelAngle(axis, channel, fieldDef) {\n if (axis.labelAngle !== undefined) {\n // Make angle within [0,360)\n return ((axis.labelAngle % 360) + 360) % 360;\n }\n else {\n if (channel === channel_1.X && util_1.contains([type_1.NOMINAL, type_1.ORDINAL], fieldDef.type)) {\n return 270;\n }\n }\n return undefined;\n}\nexports.labelAngle = labelAngle;\nfunction labelAlign(angle, orient) {\n angle = ((angle % 360) + 360) % 360;\n if (orient === 'top' || orient === 'bottom') {\n if (angle % 180 === 0) {\n return 'center';\n }\n else if (0 < angle && angle < 180) {\n return orient === 'top' ? 'right' : 'left';\n }\n else {\n return orient === 'top' ? 'left' : 'right';\n }\n }\n else {\n if ((angle + 90) % 180 === 0) {\n return 'center';\n }\n else if (90 <= angle && angle < 270) {\n return orient === 'left' ? 'left' : 'right';\n }\n else {\n return orient === 'left' ? 'right' : 'left';\n }\n }\n}\nexports.labelAlign = labelAlign;\n//# sourceMappingURL=encode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar axis_1 = require(\"../../axis\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar resolve_1 = require(\"../resolve\");\nvar split_1 = require(\"../split\");\nvar component_1 = require(\"./component\");\nvar config_1 = require(\"./config\");\nvar encode = tslib_1.__importStar(require(\"./encode\"));\nvar properties = tslib_1.__importStar(require(\"./properties\"));\nfunction parseUnitAxis(model) {\n return channel_1.POSITION_SCALE_CHANNELS.reduce(function (axis, channel) {\n if (model.component.scales[channel] && model.axis(channel)) {\n axis[channel] = [parseAxis(channel, model)];\n }\n return axis;\n }, {});\n}\nexports.parseUnitAxis = parseUnitAxis;\nvar OPPOSITE_ORIENT = {\n bottom: 'top',\n top: 'bottom',\n left: 'right',\n right: 'left'\n};\nfunction parseLayerAxis(model) {\n var _a = model.component, axes = _a.axes, resolve = _a.resolve;\n var axisCount = { top: 0, bottom: 0, right: 0, left: 0 };\n for (var _i = 0, _b = model.children; _i < _b.length; _i++) {\n var child = _b[_i];\n child.parseAxisAndHeader();\n for (var _c = 0, _d = util_1.keys(child.component.axes); _c < _d.length; _c++) {\n var channel = _d[_c];\n resolve.axis[channel] = resolve_1.parseGuideResolve(model.component.resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n if (!axes[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n // Thus, mark axis as independent and remove the axis component.\n resolve.axis[channel] = 'independent';\n delete axes[channel];\n }\n }\n }\n }\n // Move axes to layer's axis component and merge shared axes\n for (var _e = 0, _f = [channel_1.X, channel_1.Y]; _e < _f.length; _e++) {\n var channel = _f[_e];\n for (var _g = 0, _h = model.children; _g < _h.length; _g++) {\n var child = _h[_g];\n if (!child.component.axes[channel]) {\n // skip if the child does not have a particular axis\n continue;\n }\n if (resolve.axis[channel] === 'independent') {\n // If axes are independent, concat the axisComponent array.\n axes[channel] = (axes[channel] || []).concat(child.component.axes[channel]);\n // Automatically adjust orient\n for (var _j = 0, _k = child.component.axes[channel]; _j < _k.length; _j++) {\n var axisComponent = _k[_j];\n var _l = axisComponent.getWithExplicit('orient'), orient = _l.value, explicit = _l.explicit;\n if (axisCount[orient] > 0 && !explicit) {\n // Change axis orient if the number do not match\n var oppositeOrient = OPPOSITE_ORIENT[orient];\n if (axisCount[orient] > axisCount[oppositeOrient]) {\n axisComponent.set('orient', oppositeOrient, false);\n }\n }\n axisCount[orient]++;\n // TODO(https://github.com/vega/vega-lite/issues/2634): automaticaly add extra offset?\n }\n }\n // After merging, make sure to remove axes from child\n delete child.component.axes[channel];\n }\n }\n}\nexports.parseLayerAxis = parseLayerAxis;\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n if (mergedAxisCmpts) {\n // FIXME: this is a bit wrong once we support multiple axes\n if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n return undefined; // Cannot merge axis component with different number of axes.\n }\n var length_1 = mergedAxisCmpts.length;\n for (var i = 0; i < length_1; i++) {\n var merged = mergedAxisCmpts[i];\n var child = childAxisCmpts[i];\n if ((!!merged) !== (!!child)) {\n return undefined;\n }\n else if (merged && child) {\n var mergedOrient = merged.getWithExplicit('orient');\n var childOrient = child.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n else {\n mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n }\n }\n }\n }\n else {\n // For first one, return a copy of the child\n return childAxisCmpts.map(function (axisComponent) { return axisComponent.clone(); });\n }\n return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n var _loop_1 = function (prop) {\n var mergedValueWithExplicit = split_1.mergeValuesWithExplicit(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis', \n // Tie breaker function\n function (v1, v2) {\n switch (prop) {\n case 'title':\n return common_1.mergeTitleComponent(v1, v2);\n case 'gridScale':\n return {\n explicit: v1.explicit,\n value: v1.value || v2.value\n };\n }\n return split_1.defaultTieBreaker(v1, v2, prop, 'axis');\n });\n merged.setWithExplicit(prop, mergedValueWithExplicit);\n };\n for (var _i = 0, VG_AXIS_PROPERTIES_1 = axis_1.VG_AXIS_PROPERTIES; _i < VG_AXIS_PROPERTIES_1.length; _i++) {\n var prop = VG_AXIS_PROPERTIES_1[_i];\n _loop_1(prop);\n }\n return merged;\n}\nfunction getFieldDefTitle(model, channel) {\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef = model.fieldDef(channel);\n var fieldDef2 = model.fieldDef(channel2);\n var title1 = fieldDef ? fieldDef.title : undefined;\n var title2 = fieldDef2 ? fieldDef2.title : undefined;\n if (title1 && title2) {\n return common_1.mergeTitle(title1, title2);\n }\n else if (title1) {\n return title1;\n }\n else if (title2) {\n return title2;\n }\n else if (title1 !== undefined) { // falsy value to disable config\n return title1;\n }\n else if (title2 !== undefined) { // falsy value to disable config\n return title2;\n }\n return undefined;\n}\nfunction parseAxis(channel, model) {\n var axis = model.axis(channel);\n var axisComponent = new component_1.AxisComponent();\n // 1.2. Add properties\n axis_1.VG_AXIS_PROPERTIES.forEach(function (property) {\n var value = getProperty(property, axis, channel, model);\n if (value !== undefined) {\n var explicit = \n // specified axis.values is already respected, but may get transformed.\n property === 'values' ? !!axis.values :\n // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n property === 'encode' ? !!axis.encoding || !!axis.labelAngle :\n // title can be explicit if fieldDef.title is set\n property === 'title' && value === getFieldDefTitle(model, channel) ? true :\n // Otherwise, things are explicit if the returned value matches the specified property\n value === axis[property];\n var configValue = config_1.getAxisConfig(property, model.config, channel, axisComponent.get('orient'), model.getScaleComponent(channel).get('type'));\n // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n if (explicit || configValue === undefined) {\n // Do not apply implicit rule if there is a config value\n axisComponent.set(property, value, explicit);\n }\n else if (property === 'grid' && configValue) {\n // Grid is an exception because we need to set grid = true to generate another grid axis\n axisComponent.set(property, configValue, false);\n }\n }\n });\n // 2) Add guide encode definition groups\n var axisEncoding = axis.encoding || {};\n var axisEncode = axis_1.AXIS_PARTS.reduce(function (e, part) {\n if (!axisComponent.hasAxisPart(part)) {\n // No need to create encode for a disabled part.\n return e;\n }\n var axisEncodingPart = common_1.guideEncodeEntry(axisEncoding[part] || {}, model);\n var value = part === 'labels' ?\n encode.labels(model, channel, axisEncodingPart, axisComponent.get('orient')) :\n axisEncodingPart;\n if (value !== undefined && util_1.keys(value).length > 0) {\n e[part] = { update: value };\n }\n return e;\n }, {});\n // FIXME: By having encode as one property, we won't have fine grained encode merging.\n if (util_1.keys(axisEncode).length > 0) {\n axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n }\n return axisComponent;\n}\nfunction getProperty(property, specifiedAxis, channel, model) {\n var fieldDef = model.fieldDef(channel);\n switch (property) {\n case 'scale':\n return model.scaleName(channel);\n case 'gridScale':\n return properties.gridScale(model, channel);\n case 'format':\n // We don't include temporal field here as we apply format in encode block\n return common_1.numberFormat(fieldDef, specifiedAxis.format, model.config);\n case 'grid': {\n var scaleType = model.getScaleComponent(channel).get('type');\n return common_1.getSpecifiedOrDefaultValue(specifiedAxis.grid, properties.grid(scaleType, fieldDef));\n }\n case 'labelFlush':\n return properties.labelFlush(fieldDef, channel, specifiedAxis);\n case 'labelOverlap': {\n var scaleType = model.getScaleComponent(channel).get('type');\n return properties.labelOverlap(fieldDef, specifiedAxis, channel, scaleType);\n }\n case 'orient':\n return common_1.getSpecifiedOrDefaultValue(specifiedAxis.orient, properties.orient(channel));\n case 'tickCount': {\n var scaleType = model.getScaleComponent(channel).get('type');\n var sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n var size = sizeType ? model.getSizeSignalRef(sizeType)\n : undefined;\n return common_1.getSpecifiedOrDefaultValue(specifiedAxis.tickCount, properties.tickCount(channel, fieldDef, scaleType, size));\n }\n case 'title':\n var channel2 = channel === 'x' ? 'x2' : 'y2';\n var fieldDef2 = model.fieldDef(channel2);\n // Keep undefined so we use default if title is unspecified.\n // For other falsy value, keep them so we will hide the title.\n var fieldDefTitle = getFieldDefTitle(model, channel);\n var specifiedTitle = fieldDefTitle !== undefined ? fieldDefTitle :\n specifiedAxis.title === undefined ? undefined : specifiedAxis.title;\n return common_1.getSpecifiedOrDefaultValue(specifiedTitle, \n // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n common_1.mergeTitleFieldDefs([fielddef_1.toFieldDefBase(fieldDef)], fieldDef2 ? [fielddef_1.toFieldDefBase(fieldDef2)] : []));\n case 'values':\n return properties.values(specifiedAxis, model, fieldDef, channel);\n }\n // Otherwise, return specified property.\n return axis_1.isAxisProperty(property) ? specifiedAxis[property] : undefined;\n}\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar bin_1 = require(\"../../bin\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nfunction grid(scaleType, fieldDef) {\n return !scale_1.hasDiscreteDomain(scaleType) && !fieldDef.bin;\n}\nexports.grid = grid;\nfunction gridScale(model, channel) {\n var gridChannel = channel === 'x' ? 'y' : 'x';\n if (model.getScaleComponent(gridChannel)) {\n return model.scaleName(gridChannel);\n }\n return undefined;\n}\nexports.gridScale = gridScale;\nfunction labelFlush(fieldDef, channel, specifiedAxis) {\n if (specifiedAxis.labelFlush !== undefined) {\n return specifiedAxis.labelFlush;\n }\n if (channel === 'x' && util_1.contains(['quantitative', 'temporal'], fieldDef.type)) {\n return true;\n }\n return undefined;\n}\nexports.labelFlush = labelFlush;\nfunction labelOverlap(fieldDef, specifiedAxis, channel, scaleType) {\n if (specifiedAxis.labelOverlap !== undefined) {\n return specifiedAxis.labelOverlap;\n }\n // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n if (fieldDef.type !== 'nominal') {\n if (scaleType === 'log') {\n return 'greedy';\n }\n return true;\n }\n return undefined;\n}\nexports.labelOverlap = labelOverlap;\nfunction orient(channel) {\n switch (channel) {\n case channel_1.X:\n return 'bottom';\n case channel_1.Y:\n return 'left';\n }\n /* istanbul ignore next: This should never happen. */\n throw new Error(log.message.INVALID_CHANNEL_FOR_AXIS);\n}\nexports.orient = orient;\nfunction tickCount(channel, fieldDef, scaleType, size) {\n if (!scale_1.hasDiscreteDomain(scaleType) && scaleType !== 'log' && !util_1.contains(['month', 'hours', 'day', 'quarter'], fieldDef.timeUnit)) {\n if (fieldDef.bin) {\n // for binned data, we don't want more ticks than maxbins\n return { signal: \"ceil(\" + size.signal + \"/20)\" };\n }\n return { signal: \"ceil(\" + size.signal + \"/40)\" };\n }\n return undefined;\n}\nexports.tickCount = tickCount;\nfunction title(maxLength, fieldDef, config) {\n // if not defined, automatically determine axis title from field def\n var fieldTitle = fielddef_1.title(fieldDef, config);\n return maxLength ? vega_util_1.truncate(fieldTitle, maxLength) : fieldTitle;\n}\nexports.title = title;\nfunction values(specifiedAxis, model, fieldDef, channel) {\n var vals = specifiedAxis.values;\n if (vals) {\n return fielddef_1.valueArray(fieldDef, vals);\n }\n if (fieldDef.bin && fieldDef.type === type_1.QUANTITATIVE) {\n var domain = model.scaleDomain(channel);\n if (domain && domain !== 'unaggregated' && !scale_1.isSelectionDomain(domain)) { // explicit value\n return undefined;\n }\n var signal = model.getName(bin_1.binToString(fieldDef.bin) + \"_\" + fieldDef.field + \"_bins\");\n return { signal: \"sequence(\" + signal + \".start, \" + signal + \".stop + \" + signal + \".step, \" + signal + \".step)\" };\n }\n return undefined;\n}\nexports.values = values;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"../util\");\nvar parse_1 = require(\"./data/parse\");\nvar assemble_1 = require(\"./layoutsize/assemble\");\nvar model_1 = require(\"./model\");\nvar BaseConcatModel = /** @class */ (function (_super) {\n tslib_1.__extends(BaseConcatModel, _super);\n function BaseConcatModel(spec, parent, parentGivenName, config, repeater, resolve) {\n return _super.call(this, spec, parent, parentGivenName, config, repeater, resolve) || this;\n }\n BaseConcatModel.prototype.parseData = function () {\n this.component.data = parse_1.parseData(this);\n this.children.forEach(function (child) {\n child.parseData();\n });\n };\n BaseConcatModel.prototype.parseSelection = function () {\n var _this = this;\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n var _loop_1 = function (child) {\n child.parseSelection();\n util_1.keys(child.component.selection).forEach(function (key) {\n _this.component.selection[key] = child.component.selection[key];\n });\n };\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n _loop_1(child);\n }\n };\n BaseConcatModel.prototype.parseMarkGroup = function () {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parseMarkGroup();\n }\n };\n BaseConcatModel.prototype.parseAxisAndHeader = function () {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parseAxisAndHeader();\n }\n // TODO(#2415): support shared axes\n };\n BaseConcatModel.prototype.assembleSelectionTopLevelSignals = function (signals) {\n return this.children.reduce(function (sg, child) { return child.assembleSelectionTopLevelSignals(sg); }, signals);\n };\n BaseConcatModel.prototype.assembleSelectionSignals = function () {\n this.children.forEach(function (child) { return child.assembleSelectionSignals(); });\n return [];\n };\n BaseConcatModel.prototype.assembleLayoutSignals = function () {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleLayoutSignals());\n }, assemble_1.assembleLayoutSignals(this));\n };\n BaseConcatModel.prototype.assembleSelectionData = function (data) {\n return this.children.reduce(function (db, child) { return child.assembleSelectionData(db); }, data);\n };\n BaseConcatModel.prototype.assembleMarks = function () {\n // only children have marks\n return this.children.map(function (child) {\n var title = child.assembleTitle();\n var style = child.assembleGroupStyle();\n var layoutSizeEncodeEntry = child.assembleLayoutSize();\n return tslib_1.__assign({ type: 'group', name: child.getName('group') }, (title ? { title: title } : {}), (style ? { style: style } : {}), (layoutSizeEncodeEntry ? {\n encode: {\n update: layoutSizeEncodeEntry\n }\n } : {}), child.assembleGroup());\n });\n };\n return BaseConcatModel;\n}(model_1.Model));\nexports.BaseConcatModel = BaseConcatModel;\n//# sourceMappingURL=baseconcat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar spec_1 = require(\"../spec\");\nvar concat_1 = require(\"./concat\");\nvar facet_1 = require(\"./facet\");\nvar layer_1 = require(\"./layer\");\nvar repeat_1 = require(\"./repeat\");\nvar unit_1 = require(\"./unit\");\nfunction buildModel(spec, parent, parentGivenName, unitSize, repeater, config, fit) {\n if (spec_1.isFacetSpec(spec)) {\n return new facet_1.FacetModel(spec, parent, parentGivenName, repeater, config);\n }\n if (spec_1.isLayerSpec(spec)) {\n return new layer_1.LayerModel(spec, parent, parentGivenName, unitSize, repeater, config, fit);\n }\n if (spec_1.isUnitSpec(spec)) {\n return new unit_1.UnitModel(spec, parent, parentGivenName, unitSize, repeater, config, fit);\n }\n if (spec_1.isRepeatSpec(spec)) {\n return new repeat_1.RepeatModel(spec, parent, parentGivenName, repeater, config);\n }\n if (spec_1.isConcatSpec(spec)) {\n return new concat_1.ConcatModel(spec, parent, parentGivenName, repeater, config);\n }\n throw new Error(log.message.INVALID_SPEC);\n}\nexports.buildModel = buildModel;\n//# sourceMappingURL=buildmodel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../channel\");\nvar fielddef_1 = require(\"../fielddef\");\nvar scale_1 = require(\"../scale\");\nvar timeunit_1 = require(\"../timeunit\");\nvar type_1 = require(\"../type\");\nvar util_1 = require(\"../util\");\nvar mixins_1 = require(\"./mark/mixins\");\nfunction applyConfig(e, config, // TODO(#1842): consolidate MarkConfig | TextConfig?\npropsList) {\n for (var _i = 0, propsList_1 = propsList; _i < propsList_1.length; _i++) {\n var property = propsList_1[_i];\n var value = config[property];\n if (value !== undefined) {\n e[property] = { value: value };\n }\n }\n return e;\n}\nexports.applyConfig = applyConfig;\nfunction applyMarkConfig(e, model, propsList) {\n for (var _i = 0, propsList_2 = propsList; _i < propsList_2.length; _i++) {\n var property = propsList_2[_i];\n var value = getMarkConfig(property, model.markDef, model.config);\n if (value !== undefined) {\n e[property] = { value: value };\n }\n }\n return e;\n}\nexports.applyMarkConfig = applyMarkConfig;\nfunction getStyles(mark) {\n return [].concat(mark.type, mark.style || []);\n}\nexports.getStyles = getStyles;\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nfunction getMarkConfig(prop, mark, config) {\n // By default, read from mark config first!\n var value = config.mark[prop];\n // Then read mark specific config, which has higher precedence\n var markSpecificConfig = config[mark.type];\n if (markSpecificConfig[prop] !== undefined) {\n value = markSpecificConfig[prop];\n }\n // Then read style config, which has even higher precedence.\n var styles = getStyles(mark);\n for (var _i = 0, styles_1 = styles; _i < styles_1.length; _i++) {\n var style = styles_1[_i];\n var styleConfig = config.style[style];\n // MarkConfig extends VgMarkConfig so a prop may not be a valid property for style\n // However here we also check if it is defined, so it is okay to cast here\n var p = prop;\n if (styleConfig && styleConfig[p] !== undefined) {\n value = styleConfig[p];\n }\n }\n return value;\n}\nexports.getMarkConfig = getMarkConfig;\nfunction formatSignalRef(fieldDef, specifiedFormat, expr, config) {\n var format = numberFormat(fieldDef, specifiedFormat, config);\n if (fieldDef.bin) {\n var startField = fielddef_1.vgField(fieldDef, { expr: expr });\n var endField = fielddef_1.vgField(fieldDef, { expr: expr, binSuffix: 'end' });\n return {\n signal: binFormatExpression(startField, endField, format, config)\n };\n }\n else if (fieldDef.type === 'quantitative') {\n return {\n signal: \"\" + formatExpr(fielddef_1.vgField(fieldDef, { expr: expr, binSuffix: 'range' }), format)\n };\n }\n else if (fielddef_1.isTimeFieldDef(fieldDef)) {\n var isUTCScale = fielddef_1.isScaleFieldDef(fieldDef) && fieldDef['scale'] && fieldDef['scale'].type === scale_1.ScaleType.UTC;\n return {\n signal: timeFormatExpression(fielddef_1.vgField(fieldDef, { expr: expr }), fieldDef.timeUnit, specifiedFormat, config.text.shortTimeLabels, config.timeFormat, isUTCScale, true)\n };\n }\n else {\n return {\n signal: \"''+\" + fielddef_1.vgField(fieldDef, { expr: expr })\n };\n }\n}\nexports.formatSignalRef = formatSignalRef;\nfunction getSpecifiedOrDefaultValue(specifiedValue, defaultValue) {\n if (specifiedValue !== undefined) {\n return specifiedValue;\n }\n return defaultValue;\n}\nexports.getSpecifiedOrDefaultValue = getSpecifiedOrDefaultValue;\n/**\n * Returns number format for a fieldDef\n *\n * @param format explicitly specified format\n */\nfunction numberFormat(fieldDef, specifiedFormat, config) {\n if (fieldDef.type === type_1.QUANTITATIVE) {\n // add number format for quantitative type only\n // Specified format in axis/legend has higher precedence than fieldDef.format\n if (specifiedFormat) {\n return specifiedFormat;\n }\n // TODO: need to make this work correctly for numeric ordinal / nominal type\n return config.numberFormat;\n }\n return undefined;\n}\nexports.numberFormat = numberFormat;\nfunction formatExpr(field, format) {\n return \"format(\" + field + \", \\\"\" + (format || '') + \"\\\")\";\n}\nfunction numberFormatExpr(field, specifiedFormat, config) {\n return formatExpr(field, specifiedFormat || config.numberFormat);\n}\nexports.numberFormatExpr = numberFormatExpr;\nfunction binFormatExpression(startField, endField, format, config) {\n return startField + \" === null || isNaN(\" + startField + \") ? \\\"null\\\" : \" + numberFormatExpr(startField, format, config) + \" + \\\" - \\\" + \" + numberFormatExpr(endField, format, config);\n}\nexports.binFormatExpression = binFormatExpression;\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nfunction timeFormatExpression(field, timeUnit, format, shortTimeLabels, timeFormatConfig, isUTCScale, alwaysReturn) {\n if (alwaysReturn === void 0) { alwaysReturn = false; }\n if (!timeUnit || format) {\n // If there is not time unit, or if user explicitly specify format for axis/legend/text.\n format = format || timeFormatConfig; // only use config.timeFormat if there is no timeUnit.\n if (format || alwaysReturn) {\n return (isUTCScale ? 'utc' : 'time') + \"Format(\" + field + \", '\" + format + \"')\";\n }\n else {\n return undefined;\n }\n }\n else {\n return timeunit_1.formatExpression(timeUnit, field, shortTimeLabels, isUTCScale);\n }\n}\nexports.timeFormatExpression = timeFormatExpression;\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nfunction sortParams(orderDef, fieldRefOption) {\n return (vega_util_1.isArray(orderDef) ? orderDef : [orderDef]).reduce(function (s, orderChannelDef) {\n s.field.push(fielddef_1.vgField(orderChannelDef, fieldRefOption));\n s.order.push(orderChannelDef.sort || 'ascending');\n return s;\n }, { field: [], order: [] });\n}\nexports.sortParams = sortParams;\nfunction mergeTitleFieldDefs(f1, f2) {\n var merged = f1.slice();\n f2.forEach(function (fdToMerge) {\n for (var _i = 0, merged_1 = merged; _i < merged_1.length; _i++) {\n var fieldDef1 = merged_1[_i];\n // If already exists, no need to append to merged array\n if (util_1.stringify(fieldDef1) === util_1.stringify(fdToMerge)) {\n return;\n }\n }\n merged.push(fdToMerge);\n });\n return merged;\n}\nexports.mergeTitleFieldDefs = mergeTitleFieldDefs;\nfunction mergeTitle(title1, title2) {\n return title1 === title2 ?\n title1 : // if title is the same just use one of them\n title1 + ', ' + title2; // join title with comma if different\n}\nexports.mergeTitle = mergeTitle;\nfunction mergeTitleComponent(v1, v2) {\n if (vega_util_1.isArray(v1.value) && vega_util_1.isArray(v2.value)) {\n return {\n explicit: v1.explicit,\n value: mergeTitleFieldDefs(v1.value, v2.value)\n };\n }\n else if (!vega_util_1.isArray(v1.value) && !vega_util_1.isArray(v2.value)) {\n return {\n explicit: v1.explicit,\n value: mergeTitle(v1.value, v2.value)\n };\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('It should never reach here');\n}\nexports.mergeTitleComponent = mergeTitleComponent;\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nfunction binRequiresRange(fieldDef, channel) {\n if (!fieldDef.bin) {\n console.warn('Only use this method with binned field defs');\n return false;\n }\n // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n return channel_1.isScaleChannel(channel) && util_1.contains(['ordinal', 'nominal'], fieldDef.type);\n}\nexports.binRequiresRange = binRequiresRange;\nfunction guideEncodeEntry(encoding, model) {\n return util_1.keys(encoding).reduce(function (encode, channel) {\n var valueDef = encoding[channel];\n return tslib_1.__assign({}, encode, mixins_1.wrapCondition(model, valueDef, channel, function (x) { return ({ value: x.value }); }));\n }, {});\n}\nexports.guideEncodeEntry = guideEncodeEntry;\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar config_1 = require(\"../config\");\nvar vlFieldDef = tslib_1.__importStar(require(\"../fielddef\"));\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar spec_1 = require(\"../spec\");\nvar toplevelprops_1 = require(\"../toplevelprops\");\nvar util_1 = require(\"../util\");\nvar buildmodel_1 = require(\"./buildmodel\");\nvar assemble_1 = require(\"./data/assemble\");\nvar optimize_1 = require(\"./data/optimize\");\n/**\n * Vega-Lite's main function, for compiling Vega-lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n * |\n * | (Normalization)\n * v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n * |\n * | (Build Model)\n * v\n * A model tree of the spec\n * |\n * | (Parse)\n * v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n * |\n * | (Optimize)\n * v\n * A model tree with parsed components with the data component optimized\n * |\n * | (Assemble)\n * v\n * Vega spec\n */\nfunction compile(inputSpec, opt) {\n if (opt === void 0) { opt = {}; }\n // 0. Augment opt with default opts\n if (opt.logger) {\n // set the singleton logger to the provided logger\n log.set(opt.logger);\n }\n if (opt.fieldTitle) {\n // set the singleton field title formatter\n vlFieldDef.setTitleFormatter(opt.fieldTitle);\n }\n try {\n // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n var config = config_1.initConfig(util_1.mergeDeep({}, opt.config, inputSpec.config));\n // 2. Normalize: Convert input spec -> normalized spec\n // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n var spec = spec_1.normalize(inputSpec, config);\n // - Normalize autosize to be a autosize properties object.\n var autosize = toplevelprops_1.normalizeAutoSize(inputSpec.autosize, config.autosize, spec_1.isLayerSpec(spec) || spec_1.isUnitSpec(spec));\n // 3. Build Model: normalized spec -> Model (a tree structure)\n // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, RepeatModel, ConcatModel) for different types of models.\n var model = buildmodel_1.buildModel(spec, null, '', undefined, undefined, config, autosize.type === 'fit');\n // 4 Parse: Model --> Model with components\n // Note that components = intermediate representations that are equivalent to Vega specs.\n // We need these intermediate representation because we need to merge many visualizaiton \"components\" like projections, scales, axes, and legends.\n // We will later convert these components into actual Vega specs in the assemble phase.\n // In this phase, we do a bottom-up traversal over the whole tree to\n // parse for each type of components once (e.g., data, layout, mark, scale).\n // By doing bottom-up traversal, we start parsing components of unit specs and\n // then merge child components of parent composite specs.\n //\n // Please see inside model.parse() for order of different components parsed.\n model.parse();\n // 5. Optimize the dataflow. This will modify the data component of the model.\n optimize_1.optimizeDataflow(model.component.data);\n // 6. Assemble: convert model components --> Vega Spec.\n return assembleTopLevelModel(model, getTopLevelProperties(inputSpec, config, autosize));\n }\n finally {\n // Reset the singleton logger if a logger is provided\n if (opt.logger) {\n log.reset();\n }\n // Reset the singleton field title formatter if provided\n if (opt.fieldTitle) {\n vlFieldDef.resetTitleFormatter();\n }\n }\n}\nexports.compile = compile;\nfunction getTopLevelProperties(topLevelSpec, config, autosize) {\n return tslib_1.__assign({ autosize: util_1.keys(autosize).length === 1 && autosize.type ? autosize.type : autosize }, toplevelprops_1.extractTopLevelProperties(config), toplevelprops_1.extractTopLevelProperties(topLevelSpec));\n}\n/*\n * Assemble the top-level model.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties) {\n // TODO: change type to become VgSpec\n // Config with Vega-Lite only config removed.\n var vgConfig = model.config ? config_1.stripAndRedirectConfig(model.config) : undefined;\n var data = [].concat(model.assembleSelectionData([]), \n // only assemble data in the root\n assemble_1.assembleRootData(model.component.data, topLevelProperties.datasets || {}));\n delete topLevelProperties.datasets;\n var projections = model.assembleProjections();\n var title = model.assembleTitle();\n var style = model.assembleGroupStyle();\n var layoutSignals = model.assembleLayoutSignals();\n // move width and height signals with values to top level\n layoutSignals = layoutSignals.filter(function (signal) {\n if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n topLevelProperties[signal.name] = +signal.value;\n return false;\n }\n return true;\n });\n var output = tslib_1.__assign({ $schema: 'https://vega.github.io/schema/vega/v4.json' }, (model.description ? { description: model.description } : {}), topLevelProperties, (title ? { title: title } : {}), (style ? { style: style } : {}), { data: data }, (projections.length > 0 ? { projections: projections } : {}), model.assembleGroup(layoutSignals.concat(model.assembleSelectionTopLevelSignals([]))), (vgConfig ? { config: vgConfig } : {}));\n return {\n spec: output\n // TODO: add warning / errors here\n };\n}\n//# sourceMappingURL=compile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar spec_1 = require(\"../spec\");\nvar baseconcat_1 = require(\"./baseconcat\");\nvar buildmodel_1 = require(\"./buildmodel\");\nvar parse_1 = require(\"./layoutsize/parse\");\nvar ConcatModel = /** @class */ (function (_super) {\n tslib_1.__extends(ConcatModel, _super);\n function ConcatModel(spec, parent, parentGivenName, repeater, config) {\n var _this = _super.call(this, spec, parent, parentGivenName, config, repeater, spec.resolve) || this;\n _this.type = 'concat';\n if (spec.resolve && spec.resolve.axis && (spec.resolve.axis.x === 'shared' || spec.resolve.axis.y === 'shared')) {\n log.warn(log.message.CONCAT_CANNOT_SHARE_AXIS);\n }\n _this.isVConcat = spec_1.isVConcatSpec(spec);\n _this.children = (spec_1.isVConcatSpec(spec) ? spec.vconcat : spec.hconcat).map(function (child, i) {\n return buildmodel_1.buildModel(child, _this, _this.getName('concat_' + i), undefined, repeater, config, false);\n });\n return _this;\n }\n ConcatModel.prototype.parseLayoutSize = function () {\n parse_1.parseConcatLayoutSize(this);\n };\n ConcatModel.prototype.parseAxisGroup = function () {\n return null;\n };\n ConcatModel.prototype.assembleDefaultLayout = function () {\n return tslib_1.__assign({}, (this.isVConcat ? { columns: 1 } : {}), { bounds: 'full', \n // Use align each so it can work with multiple plots with different size\n align: 'each' });\n };\n return ConcatModel;\n}(baseconcat_1.BaseConcatModel));\nexports.ConcatModel = ConcatModel;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar dataflow_1 = require(\"./dataflow\");\nfunction addDimension(dims, channel, fieldDef) {\n if (fieldDef.bin) {\n dims[fielddef_1.vgField(fieldDef, {})] = true;\n dims[fielddef_1.vgField(fieldDef, { binSuffix: 'end' })] = true;\n if (common_1.binRequiresRange(fieldDef, channel)) {\n dims[fielddef_1.vgField(fieldDef, { binSuffix: 'range' })] = true;\n }\n }\n else {\n dims[fielddef_1.vgField(fieldDef)] = true;\n }\n return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n for (var f in childMeasures) {\n if (childMeasures.hasOwnProperty(f)) {\n // when we merge a measure, we either have to add an aggregation operator or even a new field\n var ops = childMeasures[f];\n for (var op in ops) {\n if (ops.hasOwnProperty(op)) {\n if (f in parentMeasures) {\n // add operator to existing measure field\n parentMeasures[f][op] = ops[op];\n }\n else {\n parentMeasures[f] = { op: ops[op] };\n }\n }\n }\n }\n }\n}\nvar AggregateNode = /** @class */ (function (_super) {\n tslib_1.__extends(AggregateNode, _super);\n /**\n * @param dimensions string set for dimensions\n * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n */\n function AggregateNode(parent, dimensions, measures) {\n var _this = _super.call(this, parent) || this;\n _this.dimensions = dimensions;\n _this.measures = measures;\n return _this;\n }\n AggregateNode.prototype.clone = function () {\n return new AggregateNode(null, tslib_1.__assign({}, this.dimensions), util_1.duplicate(this.measures));\n };\n AggregateNode.makeFromEncoding = function (parent, model) {\n var isAggregate = false;\n model.forEachFieldDef(function (fd) {\n if (fd.aggregate) {\n isAggregate = true;\n }\n });\n var meas = {};\n var dims = {};\n if (!isAggregate) {\n // no need to create this node if the model has no aggregation\n return null;\n }\n model.forEachFieldDef(function (fieldDef, channel) {\n var aggregate = fieldDef.aggregate, field = fieldDef.field;\n if (aggregate) {\n if (aggregate === 'count') {\n meas['*'] = meas['*'] || {};\n meas['*']['count'] = fielddef_1.vgField(fieldDef);\n }\n else {\n meas[field] = meas[field] || {};\n meas[field][aggregate] = fielddef_1.vgField(fieldDef);\n // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n if (channel_1.isScaleChannel(channel) && model.scaleDomain(channel) === 'unaggregated') {\n meas[field]['min'] = fielddef_1.vgField({ field: field, aggregate: 'min' });\n meas[field]['max'] = fielddef_1.vgField({ field: field, aggregate: 'max' });\n }\n }\n }\n else {\n addDimension(dims, channel, fieldDef);\n }\n });\n if ((util_1.keys(dims).length + util_1.keys(meas).length) === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n };\n AggregateNode.makeFromTransform = function (parent, t) {\n var dims = {};\n var meas = {};\n for (var _i = 0, _a = t.aggregate; _i < _a.length; _i++) {\n var s = _a[_i];\n var op = s.op, field = s.field, as = s.as;\n if (op) {\n if (op === 'count') {\n meas['*'] = meas['*'] || {};\n meas['*']['count'] = as || fielddef_1.vgField(s);\n }\n else {\n meas[field] = meas[field] || {};\n meas[field][op] = as || fielddef_1.vgField(s);\n }\n }\n }\n for (var _b = 0, _c = t.groupby || []; _b < _c.length; _b++) {\n var s = _c[_b];\n dims[s] = true;\n }\n if ((util_1.keys(dims).length + util_1.keys(meas).length) === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n };\n AggregateNode.prototype.merge = function (other) {\n if (!util_1.differ(this.dimensions, other.dimensions)) {\n mergeMeasures(this.measures, other.measures);\n other.remove();\n }\n else {\n log.debug('different dimensions, cannot merge');\n }\n };\n AggregateNode.prototype.addDimensions = function (fields) {\n var _this = this;\n fields.forEach(function (f) { return _this.dimensions[f] = true; });\n };\n AggregateNode.prototype.dependentFields = function () {\n var out = {};\n util_1.keys(this.dimensions).forEach(function (f) { return out[f] = true; });\n util_1.keys(this.measures).forEach(function (m) { return out[m] = true; });\n return out;\n };\n AggregateNode.prototype.producedFields = function () {\n var _this = this;\n var out = {};\n util_1.keys(this.measures).forEach(function (field) {\n util_1.keys(_this.measures[field]).forEach(function (op) {\n out[op + \"_\" + field] = true;\n });\n });\n return out;\n };\n AggregateNode.prototype.assemble = function () {\n var ops = [];\n var fields = [];\n var as = [];\n for (var _i = 0, _a = util_1.keys(this.measures); _i < _a.length; _i++) {\n var field = _a[_i];\n for (var _b = 0, _c = util_1.keys(this.measures[field]); _b < _c.length; _b++) {\n var op = _c[_b];\n as.push(this.measures[field][op]);\n ops.push(op);\n fields.push(field);\n }\n }\n var result = {\n type: 'aggregate',\n groupby: util_1.keys(this.dimensions),\n ops: ops,\n fields: fields,\n as: as\n };\n return result;\n };\n return AggregateNode;\n}(dataflow_1.DataFlowNode));\nexports.AggregateNode = AggregateNode;\n//# sourceMappingURL=aggregate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar data_1 = require(\"../../data\");\nvar util_1 = require(\"../../util\");\nvar aggregate_1 = require(\"./aggregate\");\nvar bin_1 = require(\"./bin\");\nvar calculate_1 = require(\"./calculate\");\nvar dataflow_1 = require(\"./dataflow\");\nvar facet_1 = require(\"./facet\");\nvar filter_1 = require(\"./filter\");\nvar filterinvalid_1 = require(\"./filterinvalid\");\nvar formatparse_1 = require(\"./formatparse\");\nvar geojson_1 = require(\"./geojson\");\nvar geopoint_1 = require(\"./geopoint\");\nvar identifier_1 = require(\"./identifier\");\nvar lookup_1 = require(\"./lookup\");\nvar source_1 = require(\"./source\");\nvar stack_1 = require(\"./stack\");\nvar timeunit_1 = require(\"./timeunit\");\nvar window_1 = require(\"./window\");\n/**\n * Print debug information for dataflow tree.\n */\n// tslint:disable-next-line\nfunction debug(node) {\n console.log(\"\" + node.constructor.name + (node.debugName ? \" (\" + node.debugName + \")\" : '') + \" -> \" + (node.children.map(function (c) {\n return \"\" + c.constructor.name + (c.debugName ? \" (\" + c.debugName + \")\" : '');\n })));\n console.log(node);\n node.children.forEach(debug);\n}\nfunction makeWalkTree(data) {\n // to name datasources\n var datasetIndex = 0;\n /**\n * Recursively walk down the tree.\n */\n function walkTree(node, dataSource) {\n if (node instanceof source_1.SourceNode) {\n // If the source is a named data source or a data source with values, we need\n // to put it in a different data source. Otherwise, Vega may override the data.\n if (!data_1.isUrlData(node.data)) {\n data.push(dataSource);\n var newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n if (node instanceof formatparse_1.ParseNode) {\n if (node.parent instanceof source_1.SourceNode && !dataSource.source) {\n // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n dataSource.format = tslib_1.__assign({}, dataSource.format || {}, { parse: node.assembleFormatParse() });\n // add calculates for all nested fields\n dataSource.transform = dataSource.transform.concat(node.assembleTransforms(true));\n }\n else {\n // Otherwise use Vega expression to parse\n dataSource.transform = dataSource.transform.concat(node.assembleTransforms());\n }\n }\n if (node instanceof facet_1.FacetNode) {\n if (!dataSource.name) {\n dataSource.name = \"data_\" + datasetIndex++;\n }\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n node.data = dataSource.name;\n }\n else {\n node.data = dataSource.source;\n }\n node.assemble().forEach(function (d) { return data.push(d); });\n // break here because the rest of the tree has to be taken care of by the facet.\n return;\n }\n if (node instanceof filter_1.FilterNode ||\n node instanceof calculate_1.CalculateNode ||\n node instanceof geopoint_1.GeoPointNode ||\n node instanceof geojson_1.GeoJSONNode ||\n node instanceof aggregate_1.AggregateNode ||\n node instanceof lookup_1.LookupNode ||\n node instanceof window_1.WindowTransformNode ||\n node instanceof identifier_1.IdentifierNode) {\n dataSource.transform.push(node.assemble());\n }\n if (node instanceof filterinvalid_1.FilterInvalidNode ||\n node instanceof bin_1.BinNode ||\n node instanceof timeunit_1.TimeUnitNode ||\n node instanceof stack_1.StackNode) {\n dataSource.transform = dataSource.transform.concat(node.assemble());\n }\n if (node instanceof aggregate_1.AggregateNode) {\n if (!dataSource.name) {\n dataSource.name = \"data_\" + datasetIndex++;\n }\n }\n if (node instanceof dataflow_1.OutputNode) {\n if (dataSource.source && dataSource.transform.length === 0) {\n node.setSource(dataSource.source);\n }\n else if (node.parent instanceof dataflow_1.OutputNode) {\n // Note that an output node may be required but we still do not assemble a\n // separate data source for it.\n node.setSource(dataSource.name);\n }\n else {\n if (!dataSource.name) {\n dataSource.name = \"data_\" + datasetIndex++;\n }\n // Here we set the name of the datasource we generated. From now on\n // other assemblers can use it.\n node.setSource(dataSource.name);\n // if this node has more than one child, we will add a datasource automatically\n if (node.numChildren() === 1) {\n data.push(dataSource);\n var newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n }\n switch (node.numChildren()) {\n case 0:\n // done\n if (node instanceof dataflow_1.OutputNode && (!dataSource.source || dataSource.transform.length > 0)) {\n // do not push empty datasources that are simply references\n data.push(dataSource);\n }\n break;\n case 1:\n walkTree(node.children[0], dataSource);\n break;\n default:\n if (!dataSource.name) {\n dataSource.name = \"data_\" + datasetIndex++;\n }\n var source_2 = dataSource.name;\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n }\n else {\n source_2 = dataSource.source;\n }\n node.children.forEach(function (child) {\n var newData = {\n name: null,\n source: source_2,\n transform: []\n };\n walkTree(child, newData);\n });\n break;\n }\n }\n return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nfunction assembleFacetData(root) {\n var data = [];\n var walkTree = makeWalkTree(data);\n root.children.forEach(function (child) { return walkTree(child, {\n source: root.name,\n name: null,\n transform: []\n }); });\n return data;\n}\nexports.assembleFacetData = assembleFacetData;\n/**\n * Create Vega Data array from a given compiled model and append all of them to the given array\n *\n * @param model\n * @param data array\n * @return modified data array\n */\nfunction assembleRootData(dataComponent, datasets) {\n var roots = util_1.vals(dataComponent.sources);\n var data = [];\n // roots.forEach(debug);\n var walkTree = makeWalkTree(data);\n var sourceIndex = 0;\n roots.forEach(function (root) {\n // assign a name if the source does not have a name yet\n if (!root.hasName()) {\n root.dataName = \"source_\" + sourceIndex++;\n }\n var newData = root.assemble();\n walkTree(root, newData);\n });\n // remove empty transform arrays for cleaner output\n data.forEach(function (d) {\n if (d.transform.length === 0) {\n delete d.transform;\n }\n });\n // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n var whereTo = 0;\n for (var i = 0; i < data.length; i++) {\n var d = data[i];\n if ((d.transform || []).length === 0 && !d.source) {\n data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n }\n }\n // now fix the from references in lookup transforms\n for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {\n var d = data_2[_i];\n for (var _a = 0, _b = d.transform || []; _a < _b.length; _a++) {\n var t = _b[_a];\n if (t.type === 'lookup') {\n t.from = dataComponent.outputNodes[t.from].getSource();\n }\n }\n }\n // inline values for datasets that are in the datastore\n for (var _c = 0, data_3 = data; _c < data_3.length; _c++) {\n var d = data_3[_c];\n if (d.name in datasets) {\n d.values = datasets[d.name];\n }\n }\n return data;\n}\nexports.assembleRootData = assembleRootData;\n//# sourceMappingURL=assemble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar bin_1 = require(\"../../bin\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar model_1 = require(\"../model\");\nvar dataflow_1 = require(\"./dataflow\");\nfunction rangeFormula(model, fieldDef, channel, config) {\n if (common_1.binRequiresRange(fieldDef, channel)) {\n // read format from axis or legend, if there is no format then use config.numberFormat\n var guide = model_1.isUnitModel(model) ? (model.axis(channel) || model.legend(channel) || {}) : {};\n var startField = fielddef_1.vgField(fieldDef, { expr: 'datum', });\n var endField = fielddef_1.vgField(fieldDef, { expr: 'datum', binSuffix: 'end' });\n return {\n formulaAs: fielddef_1.vgField(fieldDef, { binSuffix: 'range' }),\n formula: common_1.binFormatExpression(startField, endField, guide.format, config)\n };\n }\n return {};\n}\nfunction binKey(bin, field) {\n return bin_1.binToString(bin) + \"_\" + field;\n}\nfunction getSignalsFromModel(model, key) {\n return {\n signal: model.getName(key + \"_bins\"),\n extentSignal: model.getName(key + \"_extent\")\n };\n}\nfunction isBinTransform(t) {\n return 'as' in t;\n}\nfunction createBinComponent(t, model) {\n var as;\n if (isBinTransform(t)) {\n as = vega_util_1.isString(t.as) ? [t.as, t.as + \"_end\"] : [t.as[0], t.as[1]];\n }\n else {\n as = [fielddef_1.vgField(t, {}), fielddef_1.vgField(t, { binSuffix: 'end' })];\n }\n var bin = fielddef_1.normalizeBin(t.bin, undefined) || {};\n var key = binKey(bin, t.field);\n var _a = getSignalsFromModel(model, key), signal = _a.signal, extentSignal = _a.extentSignal;\n var binComponent = tslib_1.__assign({ bin: bin, field: t.field, as: as }, signal ? { signal: signal } : {}, extentSignal ? { extentSignal: extentSignal } : {});\n return { key: key, binComponent: binComponent };\n}\nvar BinNode = /** @class */ (function (_super) {\n tslib_1.__extends(BinNode, _super);\n function BinNode(parent, bins) {\n var _this = _super.call(this, parent) || this;\n _this.bins = bins;\n return _this;\n }\n BinNode.prototype.clone = function () {\n return new BinNode(null, util_1.duplicate(this.bins));\n };\n BinNode.makeFromEncoding = function (parent, model) {\n var bins = model.reduceFieldDef(function (binComponentIndex, fieldDef, channel) {\n if (fieldDef.bin) {\n var _a = createBinComponent(fieldDef, model), key = _a.key, binComponent = _a.binComponent;\n binComponentIndex[key] = tslib_1.__assign({}, binComponent, binComponentIndex[key], rangeFormula(model, fieldDef, channel, model.config));\n }\n return binComponentIndex;\n }, {});\n if (util_1.keys(bins).length === 0) {\n return null;\n }\n return new BinNode(parent, bins);\n };\n /**\n * Creates a bin node from BinTransform.\n * The optional parameter should provide\n */\n BinNode.makeFromTransform = function (parent, t, model) {\n var _a;\n var _b = createBinComponent(t, model), key = _b.key, binComponent = _b.binComponent;\n return new BinNode(parent, (_a = {},\n _a[key] = binComponent,\n _a));\n };\n BinNode.prototype.merge = function (other) {\n this.bins = tslib_1.__assign({}, this.bins, other.bins);\n other.remove();\n };\n BinNode.prototype.producedFields = function () {\n var out = {};\n util_1.vals(this.bins).forEach(function (c) {\n c.as.forEach(function (f) { return out[f] = true; });\n });\n return out;\n };\n BinNode.prototype.dependentFields = function () {\n var out = {};\n util_1.vals(this.bins).forEach(function (c) {\n out[c.field] = true;\n });\n return out;\n };\n BinNode.prototype.assemble = function () {\n return util_1.flatten(util_1.vals(this.bins).map(function (bin) {\n var transform = [];\n var binTrans = tslib_1.__assign({ type: 'bin', field: bin.field, as: bin.as, signal: bin.signal }, bin.bin);\n if (!bin.bin.extent && bin.extentSignal) {\n transform.push({\n type: 'extent',\n field: bin.field,\n signal: bin.extentSignal\n });\n binTrans.extent = { signal: bin.extentSignal };\n }\n transform.push(binTrans);\n if (bin.formula) {\n transform.push({\n type: 'formula',\n expr: bin.formula,\n as: bin.formulaAs\n });\n }\n return transform;\n }));\n };\n return BinNode;\n}(dataflow_1.DataFlowNode));\nexports.BinNode = BinNode;\n//# sourceMappingURL=bin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar predicate_1 = require(\"../../predicate\");\nvar sort_1 = require(\"../../sort\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\n/**\n * We don't know what a calculate node depends on so we should never move it beyond anything that produces fields.\n */\nvar CalculateNode = /** @class */ (function (_super) {\n tslib_1.__extends(CalculateNode, _super);\n function CalculateNode(parent, transform) {\n var _this = _super.call(this, parent) || this;\n _this.transform = transform;\n return _this;\n }\n CalculateNode.prototype.clone = function () {\n return new CalculateNode(null, util_1.duplicate(this.transform));\n };\n CalculateNode.parseAllForSortIndex = function (parent, model) {\n // get all the encoding with sort fields from model\n model.forEachFieldDef(function (fieldDef, channel) {\n if (!fielddef_1.isScaleFieldDef(fieldDef)) {\n return;\n }\n if (sort_1.isSortArray(fieldDef.sort)) {\n var field_1 = fieldDef.field, timeUnit_1 = fieldDef.timeUnit;\n var sort = fieldDef.sort;\n // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n var calculate = sort.map(function (sortValue, i) {\n return predicate_1.fieldFilterExpression({ field: field_1, timeUnit: timeUnit_1, equal: sortValue }) + \" ? \" + i + \" : \";\n }).join('') + sort.length;\n parent = new CalculateNode(parent, {\n calculate: calculate,\n as: sortArrayIndexField(fieldDef, channel)\n });\n }\n });\n return parent;\n };\n CalculateNode.prototype.producedFields = function () {\n var out = {};\n out[this.transform.as] = true;\n return out;\n };\n CalculateNode.prototype.assemble = function () {\n return {\n type: 'formula',\n expr: this.transform.calculate,\n as: this.transform.as\n };\n };\n return CalculateNode;\n}(dataflow_1.DataFlowNode));\nexports.CalculateNode = CalculateNode;\nfunction sortArrayIndexField(fieldDef, channel, expr) {\n return fielddef_1.vgField(fieldDef, { prefix: channel, suffix: 'sort_index', expr: expr });\n}\nexports.sortArrayIndexField = sortArrayIndexField;\n//# sourceMappingURL=calculate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\n/**\n * A node in the dataflow tree.\n */\nvar DataFlowNode = /** @class */ (function () {\n function DataFlowNode(parent, debugName) {\n this.debugName = debugName;\n this._children = [];\n this._parent = null;\n if (parent) {\n this.parent = parent;\n }\n }\n /**\n * Clone this node with a deep copy but don't clone links to children or parents.\n */\n DataFlowNode.prototype.clone = function () {\n throw new Error('Cannot clone node');\n };\n /**\n * Set of fields that are being created by this node.\n */\n DataFlowNode.prototype.producedFields = function () {\n return {};\n };\n DataFlowNode.prototype.dependentFields = function () {\n return {};\n };\n Object.defineProperty(DataFlowNode.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n /**\n * Set the parent of the node and also add this not to the parent's children.\n */\n set: function (parent) {\n this._parent = parent;\n parent.addChild(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataFlowNode.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n DataFlowNode.prototype.numChildren = function () {\n return this._children.length;\n };\n DataFlowNode.prototype.addChild = function (child) {\n this._children.push(child);\n };\n DataFlowNode.prototype.removeChild = function (oldChild) {\n this._children.splice(this._children.indexOf(oldChild), 1);\n };\n /**\n * Remove node from the dataflow.\n */\n DataFlowNode.prototype.remove = function () {\n for (var _i = 0, _a = this._children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parent = this._parent;\n }\n this._parent.removeChild(this);\n };\n /**\n * Insert another node as a parent of this node.\n */\n DataFlowNode.prototype.insertAsParentOf = function (other) {\n var parent = other.parent;\n parent.removeChild(this);\n this.parent = parent;\n other.parent = this;\n };\n DataFlowNode.prototype.swapWithParent = function () {\n var parent = this._parent;\n var newParent = parent.parent;\n // reconnect the children\n for (var _i = 0, _a = this._children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parent = parent;\n }\n // remove old links\n this._children = []; // equivalent to removing every child link one by one\n parent.removeChild(this);\n parent.parent.removeChild(parent);\n // swap two nodes\n this.parent = newParent;\n parent.parent = this;\n };\n return DataFlowNode;\n}());\nexports.DataFlowNode = DataFlowNode;\nvar OutputNode = /** @class */ (function (_super) {\n tslib_1.__extends(OutputNode, _super);\n /**\n * @param source The name of the source. Will change in assemble.\n * @param type The type of the output node.\n * @param refCounts A global ref counter map.\n */\n function OutputNode(parent, source, type, refCounts) {\n var _this = _super.call(this, parent, source) || this;\n _this.type = type;\n _this.refCounts = refCounts;\n _this._source = _this._name = source;\n if (_this.refCounts && !(_this._name in _this.refCounts)) {\n _this.refCounts[_this._name] = 0;\n }\n return _this;\n }\n OutputNode.prototype.clone = function () {\n var cloneObj = new this.constructor;\n cloneObj.debugName = 'clone_' + this.debugName;\n cloneObj._source = this._source;\n cloneObj._name = 'clone_' + this._name;\n cloneObj.type = this.type;\n cloneObj.refCounts = this.refCounts;\n cloneObj.refCounts[cloneObj._name] = 0;\n return cloneObj;\n };\n /**\n * Request the datasource name and increase the ref counter.\n *\n * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n * It is crucial to request the name from an output node to mark it as a required node.\n * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n *\n * In the assemble phase, this will return the correct name.\n */\n OutputNode.prototype.getSource = function () {\n this.refCounts[this._name]++;\n return this._source;\n };\n OutputNode.prototype.isRequired = function () {\n return !!this.refCounts[this._name];\n };\n OutputNode.prototype.setSource = function (source) {\n this._source = source;\n };\n return OutputNode;\n}(DataFlowNode));\nexports.OutputNode = OutputNode;\n//# sourceMappingURL=dataflow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar sort_1 = require(\"../../sort\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar domain_1 = require(\"../scale/domain\");\nvar calculate_1 = require(\"./calculate\");\nvar dataflow_1 = require(\"./dataflow\");\n/**\n * A node that helps us track what fields we are faceting by.\n */\nvar FacetNode = /** @class */ (function (_super) {\n tslib_1.__extends(FacetNode, _super);\n /**\n * @param model The facet model.\n * @param name The name that this facet source will have.\n * @param data The source data for this facet data.\n */\n function FacetNode(parent, model, name, data) {\n var _this = _super.call(this, parent) || this;\n _this.model = model;\n _this.name = name;\n _this.data = data;\n for (var _i = 0, _a = [channel_1.COLUMN, channel_1.ROW]; _i < _a.length; _i++) {\n var channel = _a[_i];\n var fieldDef = model.facet[channel];\n if (fieldDef) {\n var bin = fieldDef.bin, sort = fieldDef.sort;\n _this[channel] = tslib_1.__assign({ name: model.getName(channel + \"_domain\"), fields: [\n fielddef_1.vgField(fieldDef)\n ].concat((bin ? [fielddef_1.vgField(fieldDef, { binSuffix: 'end' })] : [])) }, (sort_1.isSortField(sort) ? { sortField: sort } :\n vega_util_1.isArray(sort) ? { sortIndexField: calculate_1.sortArrayIndexField(fieldDef, channel) } :\n {}));\n }\n }\n _this.childModel = model.child;\n return _this;\n }\n Object.defineProperty(FacetNode.prototype, \"fields\", {\n get: function () {\n return ((this.column && this.column.fields) || []).concat((this.row && this.row.fields) || []);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * The name to reference this source is its name.\n */\n FacetNode.prototype.getSource = function () {\n return this.name;\n };\n FacetNode.prototype.getChildIndependentFieldsWithStep = function () {\n var childIndependentFieldsWithStep = {};\n for (var _i = 0, _a = ['x', 'y']; _i < _a.length; _i++) {\n var channel = _a[_i];\n var childScaleComponent = this.childModel.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n var type = childScaleComponent.get('type');\n var range = childScaleComponent.get('range');\n if (scale_1.hasDiscreteDomain(type) && vega_schema_1.isVgRangeStep(range)) {\n var domain = domain_1.assembleDomain(this.childModel, channel);\n var field = domain_1.getFieldFromDomain(domain);\n if (field) {\n childIndependentFieldsWithStep[channel] = field;\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n }\n }\n }\n }\n return childIndependentFieldsWithStep;\n };\n FacetNode.prototype.assembleRowColumnData = function (channel, crossedDataName, childIndependentFieldsWithStep) {\n var childChannel = channel === 'row' ? 'y' : 'x';\n var fields = [];\n var ops = [];\n var as = [];\n if (childIndependentFieldsWithStep[childChannel]) {\n if (crossedDataName) {\n // If there is a crossed data, calculate max\n fields.push(\"distinct_\" + childIndependentFieldsWithStep[childChannel]);\n ops.push('max');\n }\n else {\n // If there is no crossed data, just calculate distinct\n fields.push(childIndependentFieldsWithStep[childChannel]);\n ops.push('distinct');\n }\n // Although it is technically a max, just name it distinct so it's easier to refer to it\n as.push(\"distinct_\" + childIndependentFieldsWithStep[childChannel]);\n }\n var _a = this[channel], sortField = _a.sortField, sortIndexField = _a.sortIndexField;\n if (sortField) {\n var op = sortField.op, field = sortField.field;\n fields.push(field);\n ops.push(op);\n as.push(fielddef_1.vgField(sortField));\n }\n else if (sortIndexField) {\n fields.push(sortIndexField);\n ops.push('max');\n as.push(sortIndexField);\n }\n return {\n name: this[channel].name,\n // Use data from the crossed one if it exist\n source: crossedDataName || this.data,\n transform: [tslib_1.__assign({ type: 'aggregate', groupby: this[channel].fields }, (fields.length ? {\n fields: fields, ops: ops, as: as\n } : {}))]\n };\n };\n FacetNode.prototype.assemble = function () {\n var data = [];\n var crossedDataName = null;\n var childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n if (this.column && this.row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n // Need to create a cross dataset to correctly calculate cardinality\n crossedDataName = \"cross_\" + this.column.name + \"_\" + this.row.name;\n var fields = [].concat(childIndependentFieldsWithStep.x ? [childIndependentFieldsWithStep.x] : [], childIndependentFieldsWithStep.y ? [childIndependentFieldsWithStep.y] : []);\n var ops = fields.map(function () { return 'distinct'; });\n data.push({\n name: crossedDataName,\n source: this.data,\n transform: [{\n type: 'aggregate',\n groupby: this.column.fields.concat(this.row.fields),\n fields: fields,\n ops: ops\n }]\n });\n }\n for (var _i = 0, _a = [channel_1.COLUMN, channel_1.ROW]; _i < _a.length; _i++) {\n var channel = _a[_i];\n if (this[channel]) {\n data.push(this.assembleRowColumnData(channel, crossedDataName, childIndependentFieldsWithStep));\n }\n }\n return data;\n };\n return FacetNode;\n}(dataflow_1.DataFlowNode));\nexports.FacetNode = FacetNode;\n//# sourceMappingURL=facet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar predicate_1 = require(\"../../predicate\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar FilterNode = /** @class */ (function (_super) {\n tslib_1.__extends(FilterNode, _super);\n function FilterNode(parent, model, filter) {\n var _this = _super.call(this, parent) || this;\n _this.model = model;\n _this.filter = filter;\n _this.expr = predicate_1.expression(_this.model, _this.filter, _this);\n return _this;\n }\n FilterNode.prototype.clone = function () {\n return new FilterNode(null, this.model, util_1.duplicate(this.filter));\n };\n FilterNode.prototype.assemble = function () {\n return {\n type: 'filter',\n expr: this.expr\n };\n };\n return FilterNode;\n}(dataflow_1.DataFlowNode));\nexports.FilterNode = FilterNode;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar mark_1 = require(\"../../mark\");\nvar scale_1 = require(\"../../scale\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar FilterInvalidNode = /** @class */ (function (_super) {\n tslib_1.__extends(FilterInvalidNode, _super);\n function FilterInvalidNode(parent, fieldDefs) {\n var _this = _super.call(this, parent) || this;\n _this.fieldDefs = fieldDefs;\n return _this;\n }\n FilterInvalidNode.prototype.clone = function () {\n return new FilterInvalidNode(null, tslib_1.__assign({}, this.fieldDefs));\n };\n FilterInvalidNode.make = function (parent, model) {\n var config = model.config, mark = model.mark;\n if (config.invalidValues !== 'filter') {\n return null;\n }\n var filter = model.reduceFieldDef(function (aggregator, fieldDef, channel) {\n var scaleComponent = channel_1.isScaleChannel(channel) && model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n // While discrete domain scales can handle invalid values, continuous scales can't.\n // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n // (For path marks, we will use \"defined\" property and skip these values instead.)\n if (scale_1.hasContinuousDomain(scaleType) && !fieldDef.aggregate && !mark_1.isPathMark(mark)) {\n aggregator[fieldDef.field] = fieldDef;\n }\n }\n return aggregator;\n }, {});\n if (!util_1.keys(filter).length) {\n return null;\n }\n return new FilterInvalidNode(parent, filter);\n };\n Object.defineProperty(FilterInvalidNode.prototype, \"filter\", {\n get: function () {\n return this.fieldDefs;\n },\n enumerable: true,\n configurable: true\n });\n // create the VgTransforms for each of the filtered fields\n FilterInvalidNode.prototype.assemble = function () {\n var _this = this;\n var filters = util_1.keys(this.filter).reduce(function (vegaFilters, field) {\n var fieldDef = _this.fieldDefs[field];\n var ref = fielddef_1.vgField(fieldDef, { expr: 'datum' });\n if (fieldDef !== null) {\n vegaFilters.push(ref + \" !== null\");\n vegaFilters.push(\"!isNaN(\" + ref + \")\");\n }\n return vegaFilters;\n }, []);\n return filters.length > 0 ?\n {\n type: 'filter',\n expr: filters.join(' && ')\n } : null;\n };\n return FilterInvalidNode;\n}(dataflow_1.DataFlowNode));\nexports.FilterInvalidNode = FilterInvalidNode;\n//# sourceMappingURL=filterinvalid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar aggregate_1 = require(\"../../aggregate\");\nvar datetime_1 = require(\"../../datetime\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar logical_1 = require(\"../../logical\");\nvar predicate_1 = require(\"../../predicate\");\nvar sort_1 = require(\"../../sort\");\nvar util_1 = require(\"../../util\");\nvar model_1 = require(\"../model\");\nvar split_1 = require(\"../split\");\nvar dataflow_1 = require(\"./dataflow\");\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n var f = util_1.accessPathWithDatum(field);\n if (parse === 'number') {\n return \"toNumber(\" + f + \")\";\n }\n else if (parse === 'boolean') {\n return \"toBoolean(\" + f + \")\";\n }\n else if (parse === 'string') {\n return \"toString(\" + f + \")\";\n }\n else if (parse === 'date') {\n return \"toDate(\" + f + \")\";\n }\n else if (parse === 'flatten') {\n return f;\n }\n else if (parse.indexOf('date:') === 0) {\n var specifier = parse.slice(5, parse.length);\n return \"timeParse(\" + f + \",\" + specifier + \")\";\n }\n else if (parse.indexOf('utc:') === 0) {\n var specifier = parse.slice(4, parse.length);\n return \"utcParse(\" + f + \",\" + specifier + \")\";\n }\n else {\n log.warn(log.message.unrecognizedParse(parse));\n return null;\n }\n}\nvar ParseNode = /** @class */ (function (_super) {\n tslib_1.__extends(ParseNode, _super);\n function ParseNode(parent, parse) {\n var _this = _super.call(this, parent) || this;\n _this._parse = parse;\n return _this;\n }\n ParseNode.prototype.clone = function () {\n return new ParseNode(null, util_1.duplicate(this._parse));\n };\n /**\n * Creates a parse node from a data.format.parse and updates ancestorParse.\n */\n ParseNode.makeExplicit = function (parent, model, ancestorParse) {\n // Custom parse\n var explicit = {};\n var data = model.data;\n if (data && data.format && data.format.parse) {\n explicit = data.format.parse;\n }\n return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n };\n ParseNode.makeImplicitFromFilterTransform = function (parent, transform, ancestorParse) {\n var parse = {};\n logical_1.forEachLeaf(transform.filter, function (filter) {\n if (predicate_1.isFieldPredicate(filter)) {\n // Automatically add a parse node for filters with filter objects\n var val = null;\n // For EqualFilter, just use the equal property.\n // For RangeFilter and OneOfFilter, all array members should have\n // the same type, so we only use the first one.\n if (predicate_1.isFieldEqualPredicate(filter)) {\n val = filter.equal;\n }\n else if (predicate_1.isFieldRangePredicate(filter)) {\n val = filter.range[0];\n }\n else if (predicate_1.isFieldOneOfPredicate(filter)) {\n val = (filter.oneOf || filter['in'])[0];\n } // else -- for filter expression, we can't infer anything\n if (val) {\n if (datetime_1.isDateTime(val)) {\n parse[filter.field] = 'date';\n }\n else if (vega_util_1.isNumber(val)) {\n parse[filter.field] = 'number';\n }\n else if (vega_util_1.isString(val)) {\n parse[filter.field] = 'string';\n }\n }\n if (filter.timeUnit) {\n parse[filter.field] = 'date';\n }\n }\n });\n if (util_1.keys(parse).length === 0) {\n return null;\n }\n return this.makeWithAncestors(parent, {}, parse, ancestorParse);\n };\n /**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\n ParseNode.makeImplicitFromEncoding = function (parent, model, ancestorParse) {\n var implicit = {};\n if (model_1.isUnitModel(model) || model_1.isFacetModel(model)) {\n // Parse encoded fields\n model.forEachFieldDef(function (fieldDef) {\n if (fielddef_1.isTimeFieldDef(fieldDef)) {\n implicit[fieldDef.field] = 'date';\n }\n else if (fielddef_1.isNumberFieldDef(fieldDef)) {\n if (!aggregate_1.isCountingAggregateOp(fieldDef.aggregate)) {\n implicit[fieldDef.field] = 'number';\n }\n }\n else if (util_1.accessPathDepth(fieldDef.field) > 1) {\n // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n // (Parsing numbers / dates already flattens numeric and temporal fields.)\n if (!(fieldDef.field in implicit)) {\n implicit[fieldDef.field] = 'flatten';\n }\n }\n else if (fielddef_1.isScaleFieldDef(fieldDef) && sort_1.isSortField(fieldDef.sort) && util_1.accessPathDepth(fieldDef.sort.field) > 1) {\n // Flatten fields that we sort by but that are not otherwise flattened.\n if (!(fieldDef.sort.field in implicit)) {\n implicit[fieldDef.sort.field] = 'flatten';\n }\n }\n });\n }\n return this.makeWithAncestors(parent, {}, implicit, ancestorParse);\n };\n /**\n * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n */\n ParseNode.makeWithAncestors = function (parent, explicit, implicit, ancestorParse) {\n // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n for (var _i = 0, _a = util_1.keys(implicit); _i < _a.length; _i++) {\n var field = _a[_i];\n var parsedAs = ancestorParse.getWithExplicit(field);\n if (parsedAs.value !== undefined) {\n // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n if (parsedAs.explicit || parsedAs.value === implicit[field] || parsedAs.value === 'derived' || implicit[field] === 'flatten') {\n delete implicit[field];\n }\n else {\n log.warn(log.message.differentParse(field, implicit[field], parsedAs.value));\n }\n }\n }\n for (var _b = 0, _c = util_1.keys(explicit); _b < _c.length; _b++) {\n var field = _c[_b];\n var parsedAs = ancestorParse.get(field);\n if (parsedAs !== undefined) {\n // Don't parse a field again if it has been parsed with the same type already.\n if (parsedAs === explicit[field]) {\n delete explicit[field];\n }\n else {\n log.warn(log.message.differentParse(field, explicit[field], parsedAs));\n }\n }\n }\n var parse = new split_1.Split(explicit, implicit);\n // add the format parse from this model so that children don't parse the same field again\n ancestorParse.copyAll(parse);\n // copy only non-null parses\n var p = {};\n for (var _d = 0, _e = util_1.keys(parse.combine()); _d < _e.length; _d++) {\n var key = _e[_d];\n var val = parse.get(key);\n if (val !== null) {\n p[key] = val;\n }\n }\n if (util_1.keys(p).length === 0 || ancestorParse.parseNothing) {\n return null;\n }\n return new ParseNode(parent, p);\n };\n Object.defineProperty(ParseNode.prototype, \"parse\", {\n get: function () {\n return this._parse;\n },\n enumerable: true,\n configurable: true\n });\n ParseNode.prototype.merge = function (other) {\n this._parse = tslib_1.__assign({}, this._parse, other.parse);\n other.remove();\n };\n /**\n * Assemble an object for Vega's format.parse property.\n */\n ParseNode.prototype.assembleFormatParse = function () {\n var formatParse = {};\n for (var _i = 0, _a = util_1.keys(this._parse); _i < _a.length; _i++) {\n var field = _a[_i];\n var p = this._parse[field];\n if (util_1.accessPathDepth(field) === 1) {\n formatParse[field] = p;\n }\n }\n return formatParse;\n };\n // format parse depends and produces all fields in its parse\n ParseNode.prototype.producedFields = function () {\n return vega_util_1.toSet(util_1.keys(this._parse));\n };\n ParseNode.prototype.dependentFields = function () {\n return vega_util_1.toSet(util_1.keys(this._parse));\n };\n ParseNode.prototype.assembleTransforms = function (onlyNested) {\n var _this = this;\n if (onlyNested === void 0) { onlyNested = false; }\n return util_1.keys(this._parse)\n .filter(function (field) { return onlyNested ? util_1.accessPathDepth(field) > 1 : true; })\n .map(function (field) {\n var expr = parseExpression(field, _this._parse[field]);\n if (!expr) {\n return null;\n }\n var formula = {\n type: 'formula',\n expr: expr,\n as: util_1.removePathFromField(field) // Vega output is always flattened\n };\n return formula;\n }).filter(function (t) { return t !== null; });\n };\n return ParseNode;\n}(dataflow_1.DataFlowNode));\nexports.ParseNode = ParseNode;\n//# sourceMappingURL=formatparse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar GeoJSONNode = /** @class */ (function (_super) {\n tslib_1.__extends(GeoJSONNode, _super);\n function GeoJSONNode(parent, fields, geojson, signal) {\n var _this = _super.call(this, parent) || this;\n _this.fields = fields;\n _this.geojson = geojson;\n _this.signal = signal;\n return _this;\n }\n GeoJSONNode.prototype.clone = function () {\n return new GeoJSONNode(null, util_1.duplicate(this.fields), this.geojson, this.signal);\n };\n GeoJSONNode.parseAll = function (parent, model) {\n var geoJsonCounter = 0;\n [[channel_1.LONGITUDE, channel_1.LATITUDE], [channel_1.LONGITUDE2, channel_1.LATITUDE2]].forEach(function (coordinates) {\n var pair = coordinates.map(function (channel) { return model.channelHasField(channel) ? model.fieldDef(channel).field : undefined; });\n if (pair[0] || pair[1]) {\n parent = new GeoJSONNode(parent, pair, null, model.getName(\"geojson_\" + geoJsonCounter++));\n }\n });\n if (model.channelHasField(channel_1.SHAPE)) {\n var fieldDef = model.fieldDef(channel_1.SHAPE);\n if (fieldDef.type === type_1.GEOJSON) {\n parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(\"geojson_\" + geoJsonCounter++));\n }\n }\n return parent;\n };\n GeoJSONNode.prototype.assemble = function () {\n return tslib_1.__assign({ type: 'geojson' }, (this.fields ? { fields: this.fields } : {}), (this.geojson ? { geojson: this.geojson } : {}), { signal: this.signal });\n };\n return GeoJSONNode;\n}(dataflow_1.DataFlowNode));\nexports.GeoJSONNode = GeoJSONNode;\n//# sourceMappingURL=geojson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar GeoPointNode = /** @class */ (function (_super) {\n tslib_1.__extends(GeoPointNode, _super);\n function GeoPointNode(parent, projection, fields, as) {\n var _this = _super.call(this, parent) || this;\n _this.projection = projection;\n _this.fields = fields;\n _this.as = as;\n return _this;\n }\n GeoPointNode.prototype.clone = function () {\n return new GeoPointNode(null, this.projection, util_1.duplicate(this.fields), util_1.duplicate(this.as));\n };\n GeoPointNode.parseAll = function (parent, model) {\n if (!model.projectionName()) {\n return parent;\n }\n [[channel_1.LONGITUDE, channel_1.LATITUDE], [channel_1.LONGITUDE2, channel_1.LATITUDE2]].forEach(function (coordinates) {\n var pair = coordinates.map(function (channel) { return model.channelHasField(channel) ? model.fieldDef(channel).field : undefined; });\n var suffix = coordinates[0] === channel_1.LONGITUDE2 ? '2' : '';\n if (pair[0] || pair[1]) {\n parent = new GeoPointNode(parent, model.projectionName(), pair, [model.getName('x' + suffix), model.getName('y' + suffix)]);\n }\n });\n return parent;\n };\n GeoPointNode.prototype.assemble = function () {\n return {\n type: 'geopoint',\n projection: this.projection,\n fields: this.fields,\n as: this.as\n };\n };\n return GeoPointNode;\n}(dataflow_1.DataFlowNode));\nexports.GeoPointNode = GeoPointNode;\n//# sourceMappingURL=geopoint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar selection_1 = require(\"../../selection\");\nvar dataflow_1 = require(\"./dataflow\");\nvar IdentifierNode = /** @class */ (function (_super) {\n tslib_1.__extends(IdentifierNode, _super);\n function IdentifierNode(parent) {\n return _super.call(this, parent) || this;\n }\n IdentifierNode.prototype.clone = function () {\n return new IdentifierNode(null);\n };\n IdentifierNode.prototype.producedFields = function () {\n var _a;\n return _a = {}, _a[selection_1.SELECTION_ID] = true, _a;\n };\n IdentifierNode.prototype.assemble = function () {\n return { type: 'identifier', as: selection_1.SELECTION_ID };\n };\n return IdentifierNode;\n}(dataflow_1.DataFlowNode));\nexports.IdentifierNode = IdentifierNode;\n//# sourceMappingURL=identifier.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar split_1 = require(\"../split\");\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transforms. We use this to not parse the\n * same field again (or differently).\n */\nvar AncestorParse = /** @class */ (function (_super) {\n tslib_1.__extends(AncestorParse, _super);\n function AncestorParse(explicit, implicit, parseNothing) {\n if (explicit === void 0) { explicit = {}; }\n if (implicit === void 0) { implicit = {}; }\n if (parseNothing === void 0) { parseNothing = false; }\n var _this = _super.call(this, explicit, implicit) || this;\n _this.explicit = explicit;\n _this.implicit = implicit;\n _this.parseNothing = parseNothing;\n return _this;\n }\n AncestorParse.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n clone.parseNothing = this.parseNothing;\n return clone;\n };\n return AncestorParse;\n}(split_1.Split));\nexports.AncestorParse = AncestorParse;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar dataflow_1 = require(\"./dataflow\");\nvar source_1 = require(\"./source\");\nvar LookupNode = /** @class */ (function (_super) {\n tslib_1.__extends(LookupNode, _super);\n function LookupNode(parent, transform, secondary) {\n var _this = _super.call(this, parent) || this;\n _this.transform = transform;\n _this.secondary = secondary;\n return _this;\n }\n LookupNode.make = function (parent, model, transform, counter) {\n var sources = model.component.data.sources;\n var s = new source_1.SourceNode(transform.from.data);\n var fromSource = sources[s.hash()];\n if (!fromSource) {\n sources[s.hash()] = s;\n fromSource = s;\n }\n var fromOutputName = model.getName(\"lookup_\" + counter);\n var fromOutputNode = new dataflow_1.OutputNode(fromSource, fromOutputName, 'lookup', model.component.data.outputNodeRefCounts);\n model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n return new LookupNode(parent, transform, fromOutputNode.getSource());\n };\n LookupNode.prototype.producedFields = function () {\n return vega_util_1.toSet(this.transform.from.fields || ((this.transform.as instanceof Array) ? this.transform.as : [this.transform.as]));\n };\n LookupNode.prototype.assemble = function () {\n var foreign;\n if (this.transform.from.fields) {\n // lookup a few fields and add create a flat output\n foreign = tslib_1.__assign({ values: this.transform.from.fields }, this.transform.as ? { as: ((this.transform.as instanceof Array) ? this.transform.as : [this.transform.as]) } : {});\n }\n else {\n // lookup full record and nest it\n var asName = this.transform.as;\n if (!vega_util_1.isString(asName)) {\n log.warn(log.message.NO_FIELDS_NEEDS_AS);\n asName = '_lookup';\n }\n foreign = {\n as: [asName]\n };\n }\n return tslib_1.__assign({ type: 'lookup', from: this.secondary, key: this.transform.from.key, fields: [this.transform.lookup] }, foreign, (this.transform.default ? { default: this.transform.default } : {}));\n };\n return LookupNode;\n}(dataflow_1.DataFlowNode));\nexports.LookupNode = LookupNode;\n//# sourceMappingURL=lookup.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar data_1 = require(\"../../data\");\nvar util_1 = require(\"../../util\");\nvar aggregate_1 = require(\"./aggregate\");\nvar dataflow_1 = require(\"./dataflow\");\nvar facet_1 = require(\"./facet\");\nvar filterinvalid_1 = require(\"./filterinvalid\");\nvar optimizers = tslib_1.__importStar(require(\"./optimizers\"));\nvar stack_1 = require(\"./stack\");\nexports.FACET_SCALE_PREFIX = 'scale_';\n/**\n * Clones the subtree and ignores output nodes except for the leafs, which are renamed.\n */\nfunction cloneSubtree(facet) {\n function clone(node) {\n if (!(node instanceof facet_1.FacetNode)) {\n var copy_1 = node.clone();\n if (copy_1 instanceof dataflow_1.OutputNode) {\n var newName = exports.FACET_SCALE_PREFIX + copy_1.getSource();\n copy_1.setSource(newName);\n facet.model.component.data.outputNodes[newName] = copy_1;\n }\n else if (copy_1 instanceof aggregate_1.AggregateNode || copy_1 instanceof stack_1.StackNode) {\n copy_1.addDimensions(facet.fields);\n }\n util_1.flatten(node.children.map(clone)).forEach(function (n) { return n.parent = copy_1; });\n return [copy_1];\n }\n return util_1.flatten(node.children.map(clone));\n }\n return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nfunction moveFacetDown(node) {\n if (node instanceof facet_1.FacetNode) {\n if (node.numChildren() === 1 && !(node.children[0] instanceof dataflow_1.OutputNode)) {\n // move down until we hit a fork or output node\n var child = node.children[0];\n if (child instanceof aggregate_1.AggregateNode || child instanceof stack_1.StackNode) {\n child.addDimensions(node.fields);\n }\n child.swapWithParent();\n moveFacetDown(node);\n }\n else {\n // move main to facet\n moveMainDownToFacet(node.model.component.data.main);\n // replicate the subtree and place it before the facet's main node\n var copy = util_1.flatten(node.children.map(cloneSubtree(node)));\n copy.forEach(function (c) { return c.parent = node.model.component.data.main; });\n }\n }\n else {\n node.children.forEach(moveFacetDown);\n }\n}\nfunction moveMainDownToFacet(node) {\n if (node instanceof dataflow_1.OutputNode && node.type === data_1.MAIN) {\n if (node.numChildren() === 1) {\n var child = node.children[0];\n if (!(child instanceof facet_1.FacetNode)) {\n child.swapWithParent();\n moveMainDownToFacet(node);\n }\n }\n }\n}\n/**\n * Remove nodes that are not required starting from a root.\n */\nfunction removeUnnecessaryNodes(node) {\n // remove empty null filter nodes\n if (node instanceof filterinvalid_1.FilterInvalidNode && util_1.every(util_1.vals(node.filter), function (f) { return f === null; })) {\n node.remove();\n }\n // remove output nodes that are not required\n if (node instanceof dataflow_1.OutputNode && !node.isRequired()) {\n node.remove();\n }\n node.children.forEach(removeUnnecessaryNodes);\n}\n/**\n * Return all leaf nodes.\n */\nfunction getLeaves(roots) {\n var leaves = [];\n function append(node) {\n if (node.numChildren() === 0) {\n leaves.push(node);\n }\n else {\n node.children.forEach(append);\n }\n }\n roots.forEach(append);\n return leaves;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nfunction optimizeDataflow(dataComponent) {\n var roots = util_1.vals(dataComponent.sources);\n roots.forEach(removeUnnecessaryNodes);\n // remove source nodes that don't have any children because they also don't have output nodes\n roots = roots.filter(function (r) { return r.numChildren() > 0; });\n getLeaves(roots).forEach(optimizers.iterateFromLeaves(optimizers.removeUnusedSubtrees));\n roots = roots.filter(function (r) { return r.numChildren() > 0; });\n getLeaves(roots).forEach(optimizers.iterateFromLeaves(optimizers.moveParseUp));\n getLeaves(roots).forEach(optimizers.removeDuplicateTimeUnits);\n roots.forEach(moveFacetDown);\n util_1.keys(dataComponent.sources).forEach(function (s) {\n if (dataComponent.sources[s].numChildren() === 0) {\n delete dataComponent.sources[s];\n }\n });\n}\nexports.optimizeDataflow = optimizeDataflow;\n//# sourceMappingURL=optimize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar facet_1 = require(\"./facet\");\nvar formatparse_1 = require(\"./formatparse\");\nvar source_1 = require(\"./source\");\nvar timeunit_1 = require(\"./timeunit\");\n/**\n * Start optimization path at the leaves. Useful for merging up or removing things.\n *\n * If the callback returns true, the recursion continues.\n */\nfunction iterateFromLeaves(f) {\n function optimizeNextFromLeaves(node) {\n if (node instanceof source_1.SourceNode) {\n return;\n }\n var next = node.parent;\n if (f(node)) {\n optimizeNextFromLeaves(next);\n }\n }\n return optimizeNextFromLeaves;\n}\nexports.iterateFromLeaves = iterateFromLeaves;\n/**\n * Move parse nodes up to forks.\n */\nfunction moveParseUp(node) {\n var parent = node.parent;\n // move parse up by merging or swapping\n if (node instanceof formatparse_1.ParseNode) {\n if (parent instanceof source_1.SourceNode) {\n return false;\n }\n if (parent.numChildren() > 1) {\n // don't move parse further up but continue with parent.\n return true;\n }\n if (parent instanceof formatparse_1.ParseNode) {\n parent.merge(node);\n }\n else {\n // don't swap with nodes that produce something that the parse node depends on (e.g. lookup)\n if (util_1.hasIntersection(parent.producedFields(), node.dependentFields())) {\n return true;\n }\n node.swapWithParent();\n }\n }\n return true;\n}\nexports.moveParseUp = moveParseUp;\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nfunction removeUnusedSubtrees(node) {\n if (node instanceof dataflow_1.OutputNode || node.numChildren() > 0 || node instanceof facet_1.FacetNode) {\n // no need to continue with parent because it is output node or will have children (there was a fork)\n return false;\n }\n else {\n node.remove();\n }\n return true;\n}\nexports.removeUnusedSubtrees = removeUnusedSubtrees;\n/**\n * Removes duplicate time unit nodes (as determined by the name of the\n * output field) that may be generated due to selections projected over\n * time units.\n */\nfunction removeDuplicateTimeUnits(leaf) {\n var fields = {};\n return iterateFromLeaves(function (node) {\n if (node instanceof timeunit_1.TimeUnitNode) {\n var pfields = node.producedFields();\n var dupe = util_1.keys(pfields).every(function (k) { return !!fields[k]; });\n if (dupe) {\n node.remove();\n }\n else {\n fields = tslib_1.__assign({}, fields, pfields);\n }\n }\n return true;\n })(leaf);\n}\nexports.removeDuplicateTimeUnits = removeDuplicateTimeUnits;\n//# sourceMappingURL=optimizers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar data_1 = require(\"../../data\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar transform_1 = require(\"../../transform\");\nvar util_1 = require(\"../../util\");\nvar model_1 = require(\"../model\");\nvar selection_1 = require(\"../selection/selection\");\nvar aggregate_1 = require(\"./aggregate\");\nvar bin_1 = require(\"./bin\");\nvar calculate_1 = require(\"./calculate\");\nvar dataflow_1 = require(\"./dataflow\");\nvar facet_1 = require(\"./facet\");\nvar filter_1 = require(\"./filter\");\nvar filterinvalid_1 = require(\"./filterinvalid\");\nvar formatparse_1 = require(\"./formatparse\");\nvar geojson_1 = require(\"./geojson\");\nvar geopoint_1 = require(\"./geopoint\");\nvar identifier_1 = require(\"./identifier\");\nvar index_1 = require(\"./index\");\nvar lookup_1 = require(\"./lookup\");\nvar source_1 = require(\"./source\");\nvar stack_1 = require(\"./stack\");\nvar timeunit_1 = require(\"./timeunit\");\nvar window_1 = require(\"./window\");\nfunction parseRoot(model, sources) {\n if (model.data || !model.parent) {\n // if the model defines a data source or is the root, create a source node\n var source = new source_1.SourceNode(model.data);\n var hash = source.hash();\n if (hash in sources) {\n // use a reference if we already have a source\n return sources[hash];\n }\n else {\n // otherwise add a new one\n sources[hash] = source;\n return source;\n }\n }\n else {\n // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n return model.parent.component.data.facetRoot ? model.parent.component.data.facetRoot : model.parent.component.data.main;\n }\n}\n/**\n * Parses a transforms array into a chain of connected dataflow nodes.\n */\nfunction parseTransformArray(head, model, ancestorParse) {\n var lookupCounter = 0;\n model.transforms.forEach(function (t) {\n if (transform_1.isCalculate(t)) {\n head = new calculate_1.CalculateNode(head, t);\n ancestorParse.set(t.as, 'derived', false);\n }\n else if (transform_1.isFilter(t)) {\n head = formatparse_1.ParseNode.makeImplicitFromFilterTransform(head, t, ancestorParse) || head;\n head = new filter_1.FilterNode(head, model, t.filter);\n }\n else if (transform_1.isBin(t)) {\n var bin = head = bin_1.BinNode.makeFromTransform(head, t, model);\n for (var _i = 0, _a = util_1.keys(bin.producedFields()); _i < _a.length; _i++) {\n var field = _a[_i];\n ancestorParse.set(field, 'number', false);\n }\n }\n else if (transform_1.isTimeUnit(t)) {\n head = timeunit_1.TimeUnitNode.makeFromTransform(head, t);\n ancestorParse.set(t.as, 'date', false);\n }\n else if (transform_1.isAggregate(t)) {\n var agg = head = aggregate_1.AggregateNode.makeFromTransform(head, t);\n if (selection_1.requiresSelectionId(model)) {\n head = new identifier_1.IdentifierNode(head);\n }\n for (var _b = 0, _c = util_1.keys(agg.producedFields()); _b < _c.length; _b++) {\n var field = _c[_b];\n ancestorParse.set(field, 'derived', false);\n }\n }\n else if (transform_1.isLookup(t)) {\n var lookup = head = lookup_1.LookupNode.make(head, model, t, lookupCounter++);\n for (var _d = 0, _e = util_1.keys(lookup.producedFields()); _d < _e.length; _d++) {\n var field = _e[_d];\n ancestorParse.set(field, 'derived', false);\n }\n }\n else if (transform_1.isWindow(t)) {\n var window_2 = head = new window_1.WindowTransformNode(head, t);\n for (var _f = 0, _g = util_1.keys(window_2.producedFields()); _f < _g.length; _f++) {\n var field = _g[_f];\n ancestorParse.set(field, 'derived', false);\n }\n }\n else if (transform_1.isStack(t)) {\n var stack = head = stack_1.StackNode.makeFromTransform(head, t);\n for (var _h = 0, _j = util_1.keys(stack.producedFields()); _h < _j.length; _h++) {\n var field = _j[_h];\n ancestorParse.set(field, 'derived', false);\n }\n }\n else {\n log.warn(log.message.invalidTransformIgnored(t));\n return;\n }\n });\n return head;\n}\nexports.parseTransformArray = parseTransformArray;\n/*\nDescription of the dataflow (http://asciiflow.com/):\n +--------+\n | Source |\n +---+----+\n |\n v\n FormatParse\n (explicit)\n |\n v\n Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n |\n v\n FormatParse\n (implicit)\n |\n v\n Binning (in `encoding`)\n |\n v\n Timeunit (in `encoding`)\n |\n v\nFormula From Sort Array\n |\n v\n +--+--+\n | Raw |\n +-----+\n |\n v\n Aggregate (in `encoding`)\n |\n v\n Stack (in `encoding`)\n |\n v\n Invalid Filter\n |\n v\n +----------+\n | Main |\n +----------+\n |\n v\n +-------+\n | Facet |----> \"column\", \"column-layout\", and \"row\"\n +-------+\n |\n v\n ...Child data...\n*/\nfunction parseData(model) {\n var head = parseRoot(model, model.component.data.sources);\n var _a = model.component.data, outputNodes = _a.outputNodes, outputNodeRefCounts = _a.outputNodeRefCounts;\n var ancestorParse = model.parent ? model.parent.component.data.ancestorParse.clone() : new index_1.AncestorParse();\n // format.parse: null means disable parsing\n if (model.data && model.data.format && model.data.format.parse === null) {\n ancestorParse.parseNothing = true;\n }\n head = formatparse_1.ParseNode.makeExplicit(head, model, ancestorParse) || head;\n // Default discrete selections require an identifier transform to\n // uniquely identify data points as the _id field is volatile. Add\n // this transform at the head of our pipeline such that the identifier\n // field is available for all subsequent datasets. Additional identifier\n // transforms will be necessary when new tuples are constructed\n // (e.g., post-aggregation).\n if (selection_1.requiresSelectionId(model) && (model_1.isUnitModel(model) || model_1.isLayerModel(model))) {\n head = new identifier_1.IdentifierNode(head);\n }\n // HACK: This is equivalent for merging bin extent for union scale.\n // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n var parentIsLayer = model.parent && model_1.isLayerModel(model.parent);\n if (model_1.isUnitModel(model) || model_1.isFacetModel(model)) {\n if (parentIsLayer) {\n head = bin_1.BinNode.makeFromEncoding(head, model) || head;\n }\n }\n if (model.transforms.length > 0) {\n head = parseTransformArray(head, model, ancestorParse);\n }\n head = formatparse_1.ParseNode.makeImplicitFromEncoding(head, model, ancestorParse) || head;\n if (model_1.isUnitModel(model)) {\n head = geojson_1.GeoJSONNode.parseAll(head, model);\n head = geopoint_1.GeoPointNode.parseAll(head, model);\n }\n if (model_1.isUnitModel(model) || model_1.isFacetModel(model)) {\n if (!parentIsLayer) {\n head = bin_1.BinNode.makeFromEncoding(head, model) || head;\n }\n head = timeunit_1.TimeUnitNode.makeFromEncoding(head, model) || head;\n head = calculate_1.CalculateNode.parseAllForSortIndex(head, model);\n }\n // add an output node pre aggregation\n var rawName = model.getName(data_1.RAW);\n var raw = new dataflow_1.OutputNode(head, rawName, data_1.RAW, outputNodeRefCounts);\n outputNodes[rawName] = raw;\n head = raw;\n if (model_1.isUnitModel(model)) {\n var agg = aggregate_1.AggregateNode.makeFromEncoding(head, model);\n if (agg) {\n head = agg;\n if (selection_1.requiresSelectionId(model)) {\n head = new identifier_1.IdentifierNode(head);\n }\n }\n head = stack_1.StackNode.makeFromEncoding(head, model) || head;\n }\n if (model_1.isUnitModel(model)) {\n head = filterinvalid_1.FilterInvalidNode.make(head, model) || head;\n }\n // output node for marks\n var mainName = model.getName(data_1.MAIN);\n var main = new dataflow_1.OutputNode(head, mainName, data_1.MAIN, outputNodeRefCounts);\n outputNodes[mainName] = main;\n head = main;\n // add facet marker\n var facetRoot = null;\n if (model_1.isFacetModel(model)) {\n var facetName = model.getName('facet');\n // Derive new sort index field for facet's sort array\n head = calculate_1.CalculateNode.parseAllForSortIndex(head, model);\n // Derive new aggregate (via window) for facet's sort field\n // TODO: use JoinAggregate once we have it\n // augment data source with new fields for crossed facet\n head = window_1.WindowTransformNode.makeFromFacet(head, model.facet) || head;\n facetRoot = new facet_1.FacetNode(head, model, facetName, main.getSource());\n outputNodes[facetName] = facetRoot;\n head = facetRoot;\n }\n return tslib_1.__assign({}, model.component.data, { outputNodes: outputNodes,\n outputNodeRefCounts: outputNodeRefCounts,\n raw: raw,\n main: main,\n facetRoot: facetRoot,\n ancestorParse: ancestorParse });\n}\nexports.parseData = parseData;\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar data_1 = require(\"../../data\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar SourceNode = /** @class */ (function (_super) {\n tslib_1.__extends(SourceNode, _super);\n function SourceNode(data) {\n var _this = _super.call(this, null) || this;\n data = data || { name: 'source' };\n if (data_1.isInlineData(data)) {\n _this._data = { values: data.values };\n }\n else if (data_1.isUrlData(data)) {\n _this._data = { url: data.url };\n if (!data.format) {\n data.format = {};\n }\n if (!data.format || !data.format.type) {\n // Extract extension from URL using snippet from\n // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-filename-string-in-javascript\n var defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n if (!util_1.contains(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n defaultExtension = 'json';\n }\n // defaultExtension has type string but we ensure that it is DataFormatType above\n data.format.type = defaultExtension;\n }\n }\n else if (data_1.isNamedData(data)) {\n _this._data = {};\n }\n // any dataset can be named\n if (data.name) {\n _this._name = data.name;\n }\n if (data.format) {\n var _a = data.format, _b = _a.parse, parse = _b === void 0 ? null : _b, format = tslib_1.__rest(_a, [\"parse\"]);\n _this._data.format = format;\n }\n return _this;\n }\n Object.defineProperty(SourceNode.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n enumerable: true,\n configurable: true\n });\n SourceNode.prototype.hasName = function () {\n return !!this._name;\n };\n Object.defineProperty(SourceNode.prototype, \"dataName\", {\n get: function () {\n return this._name;\n },\n set: function (name) {\n this._name = name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SourceNode.prototype, \"parent\", {\n set: function (parent) {\n throw new Error('Source nodes have to be roots.');\n },\n enumerable: true,\n configurable: true\n });\n SourceNode.prototype.remove = function () {\n throw new Error('Source nodes are roots and cannot be removed.');\n };\n /**\n * Return a unique identifier for this data source.\n */\n SourceNode.prototype.hash = function () {\n if (data_1.isInlineData(this._data)) {\n if (!this._hash) {\n // Hashing can be expensive for large inline datasets.\n this._hash = util_1.hash(this._data);\n }\n return this._hash;\n }\n else if (data_1.isUrlData(this._data)) {\n return util_1.hash([this._data.url, this._data.format]);\n }\n else {\n return this._name;\n }\n };\n SourceNode.prototype.assemble = function () {\n return tslib_1.__assign({ name: this._name }, this._data, { transform: [] });\n };\n return SourceNode;\n}(dataflow_1.DataFlowNode));\nexports.SourceNode = SourceNode;\n//# sourceMappingURL=source.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar dataflow_1 = require(\"./dataflow\");\nfunction getStackByFields(model) {\n return model.stack.stackBy.reduce(function (fields, by) {\n var fieldDef = by.fieldDef;\n var _field = fielddef_1.vgField(fieldDef);\n if (_field) {\n fields.push(_field);\n }\n return fields;\n }, []);\n}\nfunction isValidAsArray(as) {\n return vega_util_1.isArray(as) && as.every(function (s) { return vega_util_1.isString(s); }) && as.length > 1;\n}\nvar StackNode = /** @class */ (function (_super) {\n tslib_1.__extends(StackNode, _super);\n function StackNode(parent, stack) {\n var _this = _super.call(this, parent) || this;\n _this._stack = stack;\n return _this;\n }\n StackNode.prototype.clone = function () {\n return new StackNode(null, util_1.duplicate(this._stack));\n };\n StackNode.makeFromTransform = function (parent, stackTransform) {\n var stack = stackTransform.stack, groupby = stackTransform.groupby, as = stackTransform.as, _a = stackTransform.offset, offset = _a === void 0 ? 'zero' : _a;\n var sortFields = [];\n var sortOrder = [];\n if (stackTransform.sort !== undefined) {\n for (var _i = 0, _b = stackTransform.sort; _i < _b.length; _i++) {\n var sortField = _b[_i];\n sortFields.push(sortField.field);\n sortOrder.push(sortField.order === undefined ? 'ascending' : sortField.order);\n }\n }\n var sort = {\n field: sortFields,\n order: sortOrder,\n };\n var normalizedAs;\n if (isValidAsArray(as)) {\n normalizedAs = as;\n }\n else if (vega_util_1.isString(as)) {\n normalizedAs = [as, as + '_end'];\n }\n else {\n normalizedAs = [stackTransform.stack + '_start', stackTransform.stack + '_end'];\n }\n return new StackNode(parent, {\n stackField: stack,\n groupby: groupby,\n offset: offset,\n sort: sort,\n facetby: [],\n as: normalizedAs\n });\n };\n StackNode.makeFromEncoding = function (parent, model) {\n var stackProperties = model.stack;\n if (!stackProperties) {\n return null;\n }\n var dimensionFieldDef;\n if (stackProperties.groupbyChannel) {\n dimensionFieldDef = model.fieldDef(stackProperties.groupbyChannel);\n }\n var stackby = getStackByFields(model);\n var orderDef = model.encoding.order;\n var sort;\n if (vega_util_1.isArray(orderDef) || fielddef_1.isFieldDef(orderDef)) {\n sort = common_1.sortParams(orderDef);\n }\n else {\n // default = descending by stackFields\n // FIXME is the default here correct for binned fields?\n sort = stackby.reduce(function (s, field) {\n s.field.push(field);\n s.order.push('descending');\n return s;\n }, { field: [], order: [] });\n }\n // Refactored to add \"as\" in the make phase so that we can get producedFields\n // from the as property\n var field = model.vgField(stackProperties.fieldChannel);\n return new StackNode(parent, {\n dimensionFieldDef: dimensionFieldDef,\n stackField: field,\n facetby: [],\n stackby: stackby,\n sort: sort,\n offset: stackProperties.offset,\n impute: stackProperties.impute,\n as: [field + '_start', field + '_end']\n });\n };\n Object.defineProperty(StackNode.prototype, \"stack\", {\n get: function () {\n return this._stack;\n },\n enumerable: true,\n configurable: true\n });\n StackNode.prototype.addDimensions = function (fields) {\n this._stack.facetby = this._stack.facetby.concat(fields);\n };\n StackNode.prototype.dependentFields = function () {\n var out = {};\n out[this._stack.stackField] = true;\n this.getGroupbyFields().forEach(function (f) { return out[f] = true; });\n this._stack.facetby.forEach(function (f) { return out[f] = true; });\n var field = this._stack.sort.field;\n vega_util_1.isArray(field) ? field.forEach(function (f) { return out[f] = true; }) : out[field] = true;\n return out;\n };\n StackNode.prototype.producedFields = function () {\n return this._stack.as.reduce(function (result, item) {\n result[item] = true;\n return result;\n }, {});\n };\n StackNode.prototype.getGroupbyFields = function () {\n var _a = this._stack, dimensionFieldDef = _a.dimensionFieldDef, impute = _a.impute, groupby = _a.groupby;\n if (dimensionFieldDef) {\n if (dimensionFieldDef.bin) {\n if (impute) {\n // For binned group by field with impute, we calculate bin_mid\n // as we cannot impute two fields simultaneously\n return [fielddef_1.vgField(dimensionFieldDef, { binSuffix: 'mid' })];\n }\n return [\n // For binned group by field without impute, we need both bin (start) and bin_end\n fielddef_1.vgField(dimensionFieldDef, {}),\n fielddef_1.vgField(dimensionFieldDef, { binSuffix: 'end' })\n ];\n }\n return [fielddef_1.vgField(dimensionFieldDef)];\n }\n return groupby || [];\n };\n StackNode.prototype.assemble = function () {\n var transform = [];\n var _a = this._stack, facetby = _a.facetby, dimensionFieldDef = _a.dimensionFieldDef, field = _a.stackField, stackby = _a.stackby, sort = _a.sort, offset = _a.offset, impute = _a.impute, as = _a.as;\n // Impute\n if (impute && dimensionFieldDef) {\n var dimensionField = dimensionFieldDef ? fielddef_1.vgField(dimensionFieldDef, { binSuffix: 'mid' }) : undefined;\n if (dimensionFieldDef.bin) {\n // As we can only impute one field at a time, we need to calculate\n // mid point for a binned field\n transform.push({\n type: 'formula',\n expr: '(' +\n fielddef_1.vgField(dimensionFieldDef, { expr: 'datum' }) +\n '+' +\n fielddef_1.vgField(dimensionFieldDef, { expr: 'datum', binSuffix: 'end' }) +\n ')/2',\n as: dimensionField\n });\n }\n transform.push({\n type: 'impute',\n field: field,\n groupby: stackby,\n key: dimensionField,\n method: 'value',\n value: 0\n });\n }\n // Stack\n transform.push({\n type: 'stack',\n groupby: this.getGroupbyFields().concat(facetby),\n field: field,\n sort: sort,\n as: as,\n offset: offset\n });\n return transform;\n };\n return StackNode;\n}(dataflow_1.DataFlowNode));\nexports.StackNode = StackNode;\n//# sourceMappingURL=stack.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar timeunit_1 = require(\"../../timeunit\");\nvar util_1 = require(\"../../util\");\nvar dataflow_1 = require(\"./dataflow\");\nvar TimeUnitNode = /** @class */ (function (_super) {\n tslib_1.__extends(TimeUnitNode, _super);\n function TimeUnitNode(parent, formula) {\n var _this = _super.call(this, parent) || this;\n _this.formula = formula;\n return _this;\n }\n TimeUnitNode.prototype.clone = function () {\n return new TimeUnitNode(null, util_1.duplicate(this.formula));\n };\n TimeUnitNode.makeFromEncoding = function (parent, model) {\n var formula = model.reduceFieldDef(function (timeUnitComponent, fieldDef) {\n if (fieldDef.timeUnit) {\n var f = fielddef_1.vgField(fieldDef);\n timeUnitComponent[f] = {\n as: f,\n timeUnit: fieldDef.timeUnit,\n field: fieldDef.field\n };\n }\n return timeUnitComponent;\n }, {});\n if (util_1.keys(formula).length === 0) {\n return null;\n }\n return new TimeUnitNode(parent, formula);\n };\n TimeUnitNode.makeFromTransform = function (parent, t) {\n var _a;\n return new TimeUnitNode(parent, (_a = {},\n _a[t.field] = {\n as: t.as,\n timeUnit: t.timeUnit,\n field: t.field\n },\n _a));\n };\n TimeUnitNode.prototype.merge = function (other) {\n this.formula = tslib_1.__assign({}, this.formula, other.formula);\n other.remove();\n };\n TimeUnitNode.prototype.producedFields = function () {\n var out = {};\n util_1.vals(this.formula).forEach(function (f) {\n out[f.as] = true;\n });\n return out;\n };\n TimeUnitNode.prototype.dependentFields = function () {\n var out = {};\n util_1.vals(this.formula).forEach(function (f) {\n out[f.field] = true;\n });\n return out;\n };\n TimeUnitNode.prototype.assemble = function () {\n return util_1.vals(this.formula).map(function (c) {\n return {\n type: 'formula',\n as: c.as,\n expr: timeunit_1.fieldExpr(c.timeUnit, c.field)\n };\n });\n };\n return TimeUnitNode;\n}(dataflow_1.DataFlowNode));\nexports.TimeUnitNode = TimeUnitNode;\n//# sourceMappingURL=timeunit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar sort_1 = require(\"../../sort\");\nvar util_1 = require(\"../../util\");\nvar facet_1 = require(\"../facet\");\nvar dataflow_1 = require(\"./dataflow\");\n/**\n * A class for the window transform nodes\n */\nvar WindowTransformNode = /** @class */ (function (_super) {\n tslib_1.__extends(WindowTransformNode, _super);\n function WindowTransformNode(parent, transform) {\n var _this = _super.call(this, parent) || this;\n _this.transform = transform;\n return _this;\n }\n WindowTransformNode.makeFromFacet = function (parent, facet) {\n var row = facet.row, column = facet.column;\n if (row && column) {\n var newParent = null;\n // only need to make one for crossed facet\n for (var _i = 0, _a = [row, column]; _i < _a.length; _i++) {\n var fieldDef = _a[_i];\n if (sort_1.isSortField(fieldDef.sort)) {\n var _b = fieldDef.sort, field = _b.field, op = _b.op;\n parent = newParent = new WindowTransformNode(parent, {\n window: [{\n op: op,\n field: field,\n as: facet_1.facetSortFieldName(fieldDef, fieldDef.sort)\n }],\n groupby: [fielddef_1.vgField(fieldDef)],\n frame: [null, null]\n });\n }\n }\n return newParent;\n }\n return null;\n };\n WindowTransformNode.prototype.clone = function () {\n return new WindowTransformNode(this.parent, util_1.duplicate(this.transform));\n };\n WindowTransformNode.prototype.producedFields = function () {\n var _this = this;\n var out = {};\n this.transform.window.forEach(function (windowFieldDef) {\n out[_this.getDefaultName(windowFieldDef)] = true;\n });\n return out;\n };\n WindowTransformNode.prototype.getDefaultName = function (windowFieldDef) {\n return windowFieldDef.as || fielddef_1.vgField(windowFieldDef);\n };\n WindowTransformNode.prototype.assemble = function () {\n var fields = [];\n var ops = [];\n var as = [];\n var params = [];\n for (var _i = 0, _a = this.transform.window; _i < _a.length; _i++) {\n var window_1 = _a[_i];\n ops.push(window_1.op);\n as.push(this.getDefaultName(window_1));\n params.push(window_1.param === undefined ? null : window_1.param);\n fields.push(window_1.field === undefined ? null : window_1.field);\n }\n var frame = this.transform.frame;\n var groupby = this.transform.groupby;\n var sortFields = [];\n var sortOrder = [];\n if (this.transform.sort !== undefined) {\n for (var _b = 0, _c = this.transform.sort; _b < _c.length; _b++) {\n var sortField = _c[_b];\n sortFields.push(sortField.field);\n sortOrder.push(sortField.order || 'ascending');\n }\n }\n var sort = {\n field: sortFields,\n order: sortOrder,\n };\n var ignorePeers = this.transform.ignorePeers;\n var result = {\n type: 'window',\n params: params,\n as: as,\n ops: ops,\n fields: fields,\n sort: sort,\n };\n if (ignorePeers !== undefined) {\n result.ignorePeers = ignorePeers;\n }\n if (groupby !== undefined) {\n result.groupby = groupby;\n }\n if (frame !== undefined) {\n result.frame = frame;\n }\n return result;\n };\n return WindowTransformNode;\n}(dataflow_1.DataFlowNode));\nexports.WindowTransformNode = WindowTransformNode;\n//# sourceMappingURL=window.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../channel\");\nvar encoding_1 = require(\"../encoding\");\nvar fielddef_1 = require(\"../fielddef\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar scale_1 = require(\"../scale\");\nvar sort_1 = require(\"../sort\");\nvar util_1 = require(\"../util\");\nvar vega_schema_1 = require(\"../vega.schema\");\nvar assemble_1 = require(\"./axis/assemble\");\nvar buildmodel_1 = require(\"./buildmodel\");\nvar assemble_2 = require(\"./data/assemble\");\nvar calculate_1 = require(\"./data/calculate\");\nvar parse_1 = require(\"./data/parse\");\nvar index_1 = require(\"./header/index\");\nvar parse_2 = require(\"./layoutsize/parse\");\nvar model_1 = require(\"./model\");\nvar repeater_1 = require(\"./repeater\");\nvar resolve_1 = require(\"./resolve\");\nvar domain_1 = require(\"./scale/domain\");\nfunction facetSortFieldName(fieldDef, sort, expr) {\n return fielddef_1.vgField(sort, { expr: expr, suffix: \"by_\" + fielddef_1.vgField(fieldDef) });\n}\nexports.facetSortFieldName = facetSortFieldName;\nvar FacetModel = /** @class */ (function (_super) {\n tslib_1.__extends(FacetModel, _super);\n function FacetModel(spec, parent, parentGivenName, repeater, config) {\n var _this = _super.call(this, spec, parent, parentGivenName, config, repeater, spec.resolve) || this;\n _this.type = 'facet';\n _this.child = buildmodel_1.buildModel(spec.spec, _this, _this.getName('child'), undefined, repeater, config, false);\n _this.children = [_this.child];\n var facet = repeater_1.replaceRepeaterInFacet(spec.facet, repeater);\n _this.facet = _this.initFacet(facet);\n return _this;\n }\n FacetModel.prototype.initFacet = function (facet) {\n // clone to prevent side effect to the original spec\n return encoding_1.reduce(facet, function (normalizedFacet, fieldDef, channel) {\n if (!util_1.contains([channel_1.ROW, channel_1.COLUMN], channel)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, 'facet'));\n return normalizedFacet;\n }\n if (fieldDef.field === undefined) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n return normalizedFacet;\n }\n // Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n normalizedFacet[channel] = fielddef_1.normalize(fieldDef, channel);\n return normalizedFacet;\n }, {});\n };\n FacetModel.prototype.channelHasField = function (channel) {\n return !!this.facet[channel];\n };\n FacetModel.prototype.fieldDef = function (channel) {\n return this.facet[channel];\n };\n FacetModel.prototype.parseData = function () {\n this.component.data = parse_1.parseData(this);\n this.child.parseData();\n };\n FacetModel.prototype.parseLayoutSize = function () {\n parse_2.parseChildrenLayoutSize(this);\n };\n FacetModel.prototype.parseSelection = function () {\n // As a facet has a single child, the selection components are the same.\n // The child maintains its selections to assemble signals, which remain\n // within its unit.\n this.child.parseSelection();\n this.component.selection = this.child.component.selection;\n };\n FacetModel.prototype.parseMarkGroup = function () {\n this.child.parseMarkGroup();\n };\n FacetModel.prototype.parseAxisAndHeader = function () {\n this.child.parseAxisAndHeader();\n this.parseHeader('column');\n this.parseHeader('row');\n this.mergeChildAxis('x');\n this.mergeChildAxis('y');\n };\n FacetModel.prototype.parseHeader = function (channel) {\n if (this.channelHasField(channel)) {\n var fieldDef = this.facet[channel];\n var header = fieldDef.header || {};\n var title = fieldDef.title !== undefined ? fieldDef.title :\n header.title !== undefined ? header.title : fielddef_1.title(fieldDef, this.config);\n if (this.child.component.layoutHeaders[channel].title) {\n // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n title += ' / ' + this.child.component.layoutHeaders[channel].title;\n this.child.component.layoutHeaders[channel].title = null;\n }\n this.component.layoutHeaders[channel] = {\n title: title,\n facetFieldDef: fieldDef,\n // TODO: support adding label to footer as well\n header: [this.makeHeaderComponent(channel, true)]\n };\n }\n };\n FacetModel.prototype.makeHeaderComponent = function (channel, labels) {\n var sizeType = channel === 'row' ? 'height' : 'width';\n return {\n labels: labels,\n sizeSignal: this.child.component.layoutSize.get(sizeType) ? this.child.getSizeSignalRef(sizeType) : undefined,\n axes: []\n };\n };\n FacetModel.prototype.mergeChildAxis = function (channel) {\n var child = this.child;\n if (child.component.axes[channel]) {\n var _a = this.component, layoutHeaders = _a.layoutHeaders, resolve = _a.resolve;\n resolve.axis[channel] = resolve_1.parseGuideResolve(resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // For shared axis, move the axes to facet's header or footer\n var headerChannel = channel === 'x' ? 'column' : 'row';\n var layoutHeader = layoutHeaders[headerChannel];\n for (var _i = 0, _b = child.component.axes[channel]; _i < _b.length; _i++) {\n var axisComponent = _b[_i];\n var headerType = index_1.getHeaderType(axisComponent.get('orient'));\n layoutHeader[headerType] = layoutHeader[headerType] ||\n [this.makeHeaderComponent(headerChannel, false)];\n var mainAxis = assemble_1.assembleAxis(axisComponent, 'main', this.config, { header: true });\n // LayoutHeader no longer keep track of property precedence, thus let's combine.\n layoutHeader[headerType][0].axes.push(mainAxis);\n axisComponent.mainExtracted = true;\n }\n }\n else {\n // Otherwise do nothing for independent axes\n }\n }\n };\n FacetModel.prototype.assembleSelectionTopLevelSignals = function (signals) {\n return this.child.assembleSelectionTopLevelSignals(signals);\n };\n FacetModel.prototype.assembleSelectionSignals = function () {\n this.child.assembleSelectionSignals();\n return [];\n };\n FacetModel.prototype.assembleSelectionData = function (data) {\n return this.child.assembleSelectionData(data);\n };\n FacetModel.prototype.getHeaderLayoutMixins = function () {\n var _this = this;\n var layoutMixins = {};\n ['row', 'column'].forEach(function (channel) {\n ['header', 'footer'].forEach(function (headerType) {\n var layoutHeaderComponent = _this.component.layoutHeaders[channel];\n var headerComponent = layoutHeaderComponent[headerType];\n if (headerComponent && headerComponent[0]) {\n // set header/footerBand\n var sizeType = channel === 'row' ? 'height' : 'width';\n var bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n if (!_this.child.component.layoutSize.get(sizeType)) {\n // If facet child does not have size signal, then apply headerBand\n layoutMixins[bandType] = layoutMixins[bandType] || {};\n layoutMixins[bandType][channel] = 0.5;\n }\n if (layoutHeaderComponent.title) {\n layoutMixins.offset = layoutMixins.offset || {};\n layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n }\n }\n });\n });\n return layoutMixins;\n };\n FacetModel.prototype.assembleDefaultLayout = function () {\n var columns = this.channelHasField('column') ? this.columnDistinctSignal() : 1;\n // TODO: determine default align based on shared / independent scales\n return tslib_1.__assign({}, this.getHeaderLayoutMixins(), { columns: columns, bounds: 'full', align: 'all' });\n };\n FacetModel.prototype.assembleLayoutSignals = function () {\n // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n return this.child.assembleLayoutSignals();\n };\n FacetModel.prototype.columnDistinctSignal = function () {\n if (this.parent && (this.parent instanceof FacetModel)) {\n // For nested facet, we will add columns to group mark instead\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return undefined;\n }\n else {\n // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n var facetLayoutDataName = this.getName('column_domain');\n return { signal: \"length(data('\" + facetLayoutDataName + \"'))\" };\n }\n };\n FacetModel.prototype.assembleGroup = function (signals) {\n if (this.parent && (this.parent instanceof FacetModel)) {\n // Provide number of columns for layout.\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return tslib_1.__assign({}, (this.channelHasField('column') ? {\n encode: {\n update: {\n // TODO(https://github.com/vega/vega-lite/issues/2759):\n // Correct the signal for facet of concat of facet_column\n columns: { field: fielddef_1.vgField(this.facet.column, { prefix: 'distinct' }) }\n }\n }\n } : {}), _super.prototype.assembleGroup.call(this, signals));\n }\n return _super.prototype.assembleGroup.call(this, signals);\n };\n /**\n * Aggregate cardinality for calculating size\n */\n FacetModel.prototype.getCardinalityAggregateForChild = function () {\n var fields = [];\n var ops = [];\n var as = [];\n if (this.child instanceof FacetModel) {\n if (this.child.channelHasField('column')) {\n var field = fielddef_1.vgField(this.child.facet.column);\n fields.push(field);\n ops.push('distinct');\n as.push(\"distinct_\" + field);\n }\n }\n else {\n for (var _i = 0, _a = ['x', 'y']; _i < _a.length; _i++) {\n var channel = _a[_i];\n var childScaleComponent = this.child.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n var type = childScaleComponent.get('type');\n var range = childScaleComponent.get('range');\n if (scale_1.hasDiscreteDomain(type) && vega_schema_1.isVgRangeStep(range)) {\n var domain = domain_1.assembleDomain(this.child, channel);\n var field = domain_1.getFieldFromDomain(domain);\n if (field) {\n fields.push(field);\n ops.push('distinct');\n as.push(\"distinct_\" + field);\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n }\n }\n }\n }\n }\n return { fields: fields, ops: ops, as: as };\n };\n FacetModel.prototype.assembleFacet = function () {\n var _this = this;\n var _a = this.component.data.facetRoot, name = _a.name, data = _a.data;\n var _b = this.facet, row = _b.row, column = _b.column;\n var _c = this.getCardinalityAggregateForChild(), fields = _c.fields, ops = _c.ops, as = _c.as;\n var groupby = [];\n ['row', 'column'].forEach(function (channel) {\n var fieldDef = _this.facet[channel];\n if (fieldDef) {\n groupby.push(fielddef_1.vgField(fieldDef));\n var sort = fieldDef.sort;\n if (sort_1.isSortField(sort)) {\n var field = sort.field, op = sort.op;\n var outputName = facetSortFieldName(fieldDef, sort);\n if (row && column) {\n // For crossed facet, use pre-calculate field as it requires a different groupby\n // For each calculated field, apply max and assign them to the same name as\n // all values of the same group should be the same anyway.\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n else {\n fields.push(field);\n ops.push(op);\n as.push(outputName);\n }\n }\n else if (vega_util_1.isArray(sort)) {\n var outputName = calculate_1.sortArrayIndexField(fieldDef, channel);\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n }\n });\n var cross = !!row && !!column;\n return tslib_1.__assign({ name: name,\n data: data,\n groupby: groupby }, (cross || fields.length ? {\n aggregate: tslib_1.__assign({}, (cross ? { cross: cross } : {}), (fields.length ? { fields: fields, ops: ops, as: as } : {}))\n } : {}));\n };\n FacetModel.prototype.headerSortFields = function (channel) {\n var facet = this.facet;\n var fieldDef = facet[channel];\n if (fieldDef) {\n if (sort_1.isSortField(fieldDef.sort)) {\n return [facetSortFieldName(fieldDef, fieldDef.sort, 'datum')];\n }\n else if (vega_util_1.isArray(fieldDef.sort)) {\n return [calculate_1.sortArrayIndexField(fieldDef, channel, 'datum')];\n }\n return [fielddef_1.vgField(fieldDef, { expr: 'datum' })];\n }\n return [];\n };\n FacetModel.prototype.headerSortOrder = function (channel) {\n var facet = this.facet;\n var fieldDef = facet[channel];\n if (fieldDef) {\n var sort = fieldDef.sort;\n var order = (sort_1.isSortField(sort) ? sort.order : !vega_util_1.isArray(sort) && sort) || 'ascending';\n return [order];\n }\n return [];\n };\n FacetModel.prototype.assembleMarks = function () {\n var child = this.child;\n var facetRoot = this.component.data.facetRoot;\n var data = assemble_2.assembleFacetData(facetRoot);\n // If we facet by two dimensions, we need to add a cross operator to the aggregation\n // so that we create all groups\n var layoutSizeEncodeEntry = child.assembleLayoutSize();\n var title = child.assembleTitle();\n var style = child.assembleGroupStyle();\n var markGroup = tslib_1.__assign({ name: this.getName('cell'), type: 'group' }, (title ? { title: title } : {}), (style ? { style: style } : {}), { from: {\n facet: this.assembleFacet()\n }, \n // TODO: move this to after data\n sort: {\n field: this.headerSortFields('row').concat(this.headerSortFields('column')),\n order: this.headerSortOrder('row').concat(this.headerSortOrder('column'))\n } }, (data.length > 0 ? { data: data } : {}), (layoutSizeEncodeEntry ? { encode: { update: layoutSizeEncodeEntry } } : {}), child.assembleGroup());\n return [markGroup];\n };\n FacetModel.prototype.getMapping = function () {\n return this.facet;\n };\n return FacetModel;\n}(model_1.ModelWithField));\nexports.FacetModel = FacetModel;\n//# sourceMappingURL=facet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\n/**\n * Utility for generating row / column headers\n */\nvar vega_util_1 = require(\"vega-util\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar header_1 = require(\"../../header\");\nvar sort_1 = require(\"../../sort\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar calculate_1 = require(\"../data/calculate\");\nexports.HEADER_CHANNELS = ['row', 'column'];\nexports.HEADER_TYPES = ['header', 'footer'];\nfunction getHeaderType(orient) {\n if (orient === 'top' || orient === 'left') {\n return 'header';\n }\n return 'footer';\n}\nexports.getHeaderType = getHeaderType;\nfunction getTitleGroup(model, channel) {\n var title = model.component.layoutHeaders[channel].title;\n var textOrient = channel === 'row' ? 'left' : undefined;\n var config = model.config ? model.config : undefined;\n var facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef ? model.component.layoutHeaders[channel].facetFieldDef : undefined;\n return {\n name: channel + \"-title\",\n type: 'group',\n role: channel + \"-title\",\n title: tslib_1.__assign({ text: title, offset: 10, orient: textOrient, style: 'guide-title' }, getHeaderProperties(config, facetFieldDef, header_1.HEADER_TITLE_PROPERTIES, header_1.HEADER_TITLE_PROPERTIES_MAP))\n };\n}\nexports.getTitleGroup = getTitleGroup;\nfunction getHeaderGroups(model, channel) {\n var layoutHeader = model.component.layoutHeaders[channel];\n var groups = [];\n for (var _i = 0, HEADER_TYPES_1 = exports.HEADER_TYPES; _i < HEADER_TYPES_1.length; _i++) {\n var headerType = HEADER_TYPES_1[_i];\n if (layoutHeader[headerType]) {\n for (var _a = 0, _b = layoutHeader[headerType]; _a < _b.length; _a++) {\n var headerCmpt = _b[_a];\n groups.push(getHeaderGroup(model, channel, headerType, layoutHeader, headerCmpt));\n }\n }\n }\n return groups;\n}\nexports.getHeaderGroups = getHeaderGroups;\n// 0, (0,90), 90, (90, 180), 180, (180, 270), 270, (270, 0)\nfunction labelAlign(angle) {\n // to keep angle in [0, 360)\n angle = ((angle % 360) + 360) % 360;\n if ((angle + 90) % 180 === 0) { // for 90 and 270\n return {}; // default center\n }\n else if (angle < 90 || 270 < angle) {\n return { align: { value: 'right' } };\n }\n else if (135 <= angle && angle < 225) {\n return { align: { value: 'left' } };\n }\n return {};\n}\nexports.labelAlign = labelAlign;\nfunction labelBaseline(angle) {\n // to keep angle in [0, 360)\n angle = ((angle % 360) + 360) % 360;\n if (45 <= angle && angle <= 135) {\n return { baseline: 'top' };\n }\n return { baseline: 'middle' };\n}\nexports.labelBaseline = labelBaseline;\nfunction getSort(facetFieldDef, channel) {\n var sort = facetFieldDef.sort;\n if (sort_1.isSortField(sort)) {\n return {\n field: fielddef_1.vgField(sort, { expr: 'datum' }),\n order: sort.order || 'ascending'\n };\n }\n else if (vega_util_1.isArray(sort)) {\n return {\n field: calculate_1.sortArrayIndexField(facetFieldDef, channel, 'datum'),\n order: 'ascending'\n };\n }\n else {\n return {\n field: fielddef_1.vgField(facetFieldDef, { expr: 'datum' }),\n order: sort || 'ascending'\n };\n }\n}\nfunction getHeaderGroup(model, channel, headerType, layoutHeader, headerCmpt) {\n var _a;\n if (headerCmpt) {\n var title = null;\n var facetFieldDef = layoutHeader.facetFieldDef;\n if (facetFieldDef && headerCmpt.labels) {\n var _b = facetFieldDef.header, header = _b === void 0 ? {} : _b;\n var format = header.format, labelAngle = header.labelAngle;\n var config = model.config ? model.config : undefined;\n var update = tslib_1.__assign({}, labelAlign(labelAngle));\n title = tslib_1.__assign({ text: common_1.formatSignalRef(facetFieldDef, format, 'parent', model.config), offset: 10, orient: channel === 'row' ? 'left' : 'top', style: 'guide-label' }, getHeaderProperties(config, facetFieldDef, header_1.HEADER_LABEL_PROPERTIES, header_1.HEADER_LABEL_PROPERTIES_MAP), (util_1.keys(update).length > 0 ? { encode: { update: update } } : {}));\n }\n var axes = headerCmpt.axes;\n var hasAxes = axes && axes.length > 0;\n if (title || hasAxes) {\n var sizeChannel = channel === 'row' ? 'height' : 'width';\n return tslib_1.__assign({ name: model.getName(channel + \"_\" + headerType), type: 'group', role: channel + \"-\" + headerType }, (layoutHeader.facetFieldDef ? {\n from: { data: model.getName(channel + '_domain') },\n sort: getSort(facetFieldDef, channel)\n } : {}), (title ? { title: title } : {}), (headerCmpt.sizeSignal ? {\n encode: {\n update: (_a = {},\n _a[sizeChannel] = headerCmpt.sizeSignal,\n _a)\n }\n } : {}), (hasAxes ? { axes: axes } : {}));\n }\n }\n return null;\n}\nexports.getHeaderGroup = getHeaderGroup;\nfunction getHeaderProperties(config, facetFieldDef, properties, propertiesMap) {\n var props = {};\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n if (config && config.header) {\n if (config.header[prop]) {\n props[propertiesMap[prop]] = config.header[prop];\n }\n }\n if (facetFieldDef && facetFieldDef.header) {\n if (facetFieldDef.header[prop]) {\n props[propertiesMap[prop]] = facetFieldDef.header[prop];\n }\n }\n }\n return props;\n}\nexports.getHeaderProperties = getHeaderProperties;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar spec_1 = require(\"../spec\");\nvar util_1 = require(\"../util\");\nvar parse_1 = require(\"./axis/parse\");\nvar parse_2 = require(\"./data/parse\");\nvar assemble_1 = require(\"./layoutsize/assemble\");\nvar parse_3 = require(\"./layoutsize/parse\");\nvar assemble_2 = require(\"./legend/assemble\");\nvar model_1 = require(\"./model\");\nvar selection_1 = require(\"./selection/selection\");\nvar unit_1 = require(\"./unit\");\nvar LayerModel = /** @class */ (function (_super) {\n tslib_1.__extends(LayerModel, _super);\n function LayerModel(spec, parent, parentGivenName, parentGivenSize, repeater, config, fit) {\n var _this = _super.call(this, spec, parent, parentGivenName, config, repeater, spec.resolve) || this;\n _this.type = 'layer';\n var layoutSize = tslib_1.__assign({}, parentGivenSize, (spec.width ? { width: spec.width } : {}), (spec.height ? { height: spec.height } : {}));\n _this.initSize(layoutSize);\n _this.children = spec.layer.map(function (layer, i) {\n if (spec_1.isLayerSpec(layer)) {\n return new LayerModel(layer, _this, _this.getName('layer_' + i), layoutSize, repeater, config, fit);\n }\n if (spec_1.isUnitSpec(layer)) {\n return new unit_1.UnitModel(layer, _this, _this.getName('layer_' + i), layoutSize, repeater, config, fit);\n }\n throw new Error(log.message.INVALID_SPEC);\n });\n return _this;\n }\n LayerModel.prototype.parseData = function () {\n this.component.data = parse_2.parseData(this);\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parseData();\n }\n };\n LayerModel.prototype.parseLayoutSize = function () {\n parse_3.parseLayerLayoutSize(this);\n };\n LayerModel.prototype.parseSelection = function () {\n var _this = this;\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n var _loop_1 = function (child) {\n child.parseSelection();\n util_1.keys(child.component.selection).forEach(function (key) {\n _this.component.selection[key] = child.component.selection[key];\n });\n };\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n _loop_1(child);\n }\n };\n LayerModel.prototype.parseMarkGroup = function () {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parseMarkGroup();\n }\n };\n LayerModel.prototype.parseAxisAndHeader = function () {\n parse_1.parseLayerAxis(this);\n };\n LayerModel.prototype.assembleSelectionTopLevelSignals = function (signals) {\n return this.children.reduce(function (sg, child) { return child.assembleSelectionTopLevelSignals(sg); }, signals);\n };\n // TODO: Support same named selections across children.\n LayerModel.prototype.assembleSelectionSignals = function () {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleSelectionSignals());\n }, []);\n };\n LayerModel.prototype.assembleLayoutSignals = function () {\n return this.children.reduce(function (signals, child) {\n return signals.concat(child.assembleLayoutSignals());\n }, assemble_1.assembleLayoutSignals(this));\n };\n LayerModel.prototype.assembleSelectionData = function (data) {\n return this.children.reduce(function (db, child) { return child.assembleSelectionData(db); }, data);\n };\n LayerModel.prototype.assembleTitle = function () {\n var title = _super.prototype.assembleTitle.call(this);\n if (title) {\n return title;\n }\n // If title does not provide layer, look into children\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n title = child.assembleTitle();\n if (title) {\n return title;\n }\n }\n return undefined;\n };\n LayerModel.prototype.assembleLayout = function () {\n return null;\n };\n LayerModel.prototype.assembleMarks = function () {\n return selection_1.assembleLayerSelectionMarks(this, util_1.flatten(this.children.map(function (child) {\n return child.assembleMarks();\n })));\n };\n LayerModel.prototype.assembleLegends = function () {\n return this.children.reduce(function (legends, child) {\n return legends.concat(child.assembleLegends());\n }, assemble_2.assembleLegends(this));\n };\n return LayerModel;\n}(model_1.Model));\nexports.LayerModel = LayerModel;\n//# sourceMappingURL=layer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar scale_1 = require(\"../../scale\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar model_1 = require(\"../model\");\nfunction assembleLayoutSignals(model) {\n return [].concat(sizeSignals(model, 'width'), sizeSignals(model, 'height'));\n}\nexports.assembleLayoutSignals = assembleLayoutSignals;\nfunction sizeSignals(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var size = model.component.layoutSize.get(sizeType);\n if (!size || size === 'merged') {\n return [];\n }\n // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n var name = model.getSizeSignalRef(sizeType).signal;\n if (size === 'range-step') {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var type = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (scale_1.hasDiscreteDomain(type) && vega_schema_1.isVgRangeStep(range)) {\n var scaleName = model.scaleName(channel);\n if (model_1.isFacetModel(model.parent)) {\n // If parent is facet and this is an independent scale, return only signal signal\n // as the width/height will be calculated using the cardinality from\n // facet's aggregate rather than reading from scale domain\n var parentResolve = model.parent.component.resolve;\n if (parentResolve.scale[channel] === 'independent') {\n return [stepSignal(scaleName, range)];\n }\n }\n return [\n stepSignal(scaleName, range),\n {\n name: name,\n update: sizeExpr(scaleName, scaleComponent, \"domain('\" + scaleName + \"').length\")\n }\n ];\n }\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('layout size is range step although there is no rangeStep.');\n }\n else {\n return [{\n name: name,\n value: size\n }];\n }\n}\nexports.sizeSignals = sizeSignals;\nfunction stepSignal(scaleName, range) {\n return {\n name: scaleName + '_step',\n value: range.step,\n };\n}\nfunction sizeExpr(scaleName, scaleComponent, cardinality) {\n var type = scaleComponent.get('type');\n var padding = scaleComponent.get('padding');\n var paddingOuter = scaleComponent.get('paddingOuter');\n paddingOuter = paddingOuter !== undefined ? paddingOuter : padding;\n var paddingInner = scaleComponent.get('paddingInner');\n paddingInner = type === 'band' ?\n // only band has real paddingInner\n (paddingInner !== undefined ? paddingInner : padding) :\n // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n 1;\n return \"bandspace(\" + cardinality + \", \" + paddingInner + \", \" + paddingOuter + \") * \" + scaleName + \"_step\";\n}\nexports.sizeExpr = sizeExpr;\n//# sourceMappingURL=assemble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar scale_1 = require(\"../../scale\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar split_1 = require(\"../split\");\nfunction parseLayerLayoutSize(model) {\n parseChildrenLayoutSize(model);\n var layoutSizeCmpt = model.component.layoutSize;\n layoutSizeCmpt.setWithExplicit('width', parseNonUnitLayoutSizeForChannel(model, 'width'));\n layoutSizeCmpt.setWithExplicit('height', parseNonUnitLayoutSizeForChannel(model, 'height'));\n}\nexports.parseLayerLayoutSize = parseLayerLayoutSize;\nexports.parseRepeatLayoutSize = parseLayerLayoutSize;\nfunction parseConcatLayoutSize(model) {\n parseChildrenLayoutSize(model);\n var layoutSizeCmpt = model.component.layoutSize;\n var sizeTypeToMerge = model.isVConcat ? 'width' : 'height';\n layoutSizeCmpt.setWithExplicit(sizeTypeToMerge, parseNonUnitLayoutSizeForChannel(model, sizeTypeToMerge));\n}\nexports.parseConcatLayoutSize = parseConcatLayoutSize;\nfunction parseChildrenLayoutSize(model) {\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.parseLayoutSize();\n }\n}\nexports.parseChildrenLayoutSize = parseChildrenLayoutSize;\nfunction parseNonUnitLayoutSizeForChannel(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var resolve = model.component.resolve;\n var mergedSize;\n // Try to merge layout size\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n var childSize = child.component.layoutSize.getWithExplicit(sizeType);\n var scaleResolve = resolve.scale[channel];\n if (scaleResolve === 'independent' && childSize.value === 'range-step') {\n // Do not merge independent scales with range-step as their size depends\n // on the scale domains, which can be different between scales.\n mergedSize = undefined;\n break;\n }\n if (mergedSize) {\n if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n // For independent scale, only merge if all the sizes are the same.\n // If the values are different, abandon the merge!\n mergedSize = undefined;\n break;\n }\n mergedSize = split_1.mergeValuesWithExplicit(mergedSize, childSize, sizeType, '');\n }\n else {\n mergedSize = childSize;\n }\n }\n if (mergedSize) {\n // If merged, rename size and set size of all children.\n for (var _b = 0, _c = model.children; _b < _c.length; _b++) {\n var child = _c[_b];\n model.renameLayoutSize(child.getName(sizeType), model.getName(sizeType));\n child.component.layoutSize.set(sizeType, 'merged', false);\n }\n return mergedSize;\n }\n else {\n // Otherwise, there is no merged size.\n return {\n explicit: false,\n value: undefined\n };\n }\n}\nfunction parseUnitLayoutSize(model) {\n var layoutSizeComponent = model.component.layoutSize;\n if (!layoutSizeComponent.explicit.width) {\n var width = defaultUnitSize(model, 'width');\n layoutSizeComponent.set('width', width, false);\n }\n if (!layoutSizeComponent.explicit.height) {\n var height = defaultUnitSize(model, 'height');\n layoutSizeComponent.set('height', height, false);\n }\n}\nexports.parseUnitLayoutSize = parseUnitLayoutSize;\nfunction defaultUnitSize(model, sizeType) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var config = model.config;\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (scale_1.hasDiscreteDomain(scaleType) && vega_schema_1.isVgRangeStep(range)) {\n // For discrete domain with range.step, use dynamic width/height\n return 'range-step';\n }\n else {\n return config.view[sizeType];\n }\n }\n else if (model.hasProjection) {\n return config.view[sizeType];\n }\n else {\n // No scale - set default size\n if (sizeType === 'width' && model.mark === 'text') {\n // width for text mark without x-field is a bit wider than typical range step\n return config.scale.textXRangeStep;\n }\n // Set width/height equal to rangeStep config or if rangeStep is null, use value from default scale config.\n return config.scale.rangeStep || scale_1.defaultScaleConfig.rangeStep;\n }\n}\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../../util\");\nvar parse_1 = require(\"./parse\");\nfunction assembleLegends(model) {\n var legendComponentIndex = model.component.legends;\n var legendByDomain = {};\n for (var _i = 0, _a = util_1.keys(legendComponentIndex); _i < _a.length; _i++) {\n var channel = _a[_i];\n var scaleComponent = model.getScaleComponent(channel);\n var domainHash = util_1.stringify(scaleComponent.domains);\n if (legendByDomain[domainHash]) {\n for (var _b = 0, _c = legendByDomain[domainHash]; _b < _c.length; _b++) {\n var mergedLegendComponent = _c[_b];\n var merged = parse_1.mergeLegendComponent(mergedLegendComponent, legendComponentIndex[channel]);\n if (!merged) {\n // If cannot merge, need to add this legend separately\n legendByDomain[domainHash].push(legendComponentIndex[channel]);\n }\n }\n }\n else {\n legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n }\n }\n return util_1.flatten(util_1.vals(legendByDomain)).map(function (legendCmpt) { return legendCmpt.combine(); });\n}\nexports.assembleLegends = assembleLegends;\n//# sourceMappingURL=assemble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar split_1 = require(\"../split\");\nvar LegendComponent = /** @class */ (function (_super) {\n tslib_1.__extends(LegendComponent, _super);\n function LegendComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return LegendComponent;\n}(split_1.Split));\nexports.LegendComponent = LegendComponent;\n//# sourceMappingURL=component.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar mark_1 = require(\"../../mark\");\nvar scale_1 = require(\"../../scale\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar mixins = tslib_1.__importStar(require(\"../mark/mixins\"));\nfunction symbols(fieldDef, symbolsSpec, model, channel, type) {\n if (type === 'gradient') {\n return undefined;\n }\n var out = tslib_1.__assign({}, common_1.applyMarkConfig({}, model, mark_1.FILL_STROKE_CONFIG), mixins.color(model));\n switch (model.mark) {\n case mark_1.BAR:\n case mark_1.TICK:\n case mark_1.TEXT:\n out.shape = { value: 'square' };\n break;\n case mark_1.CIRCLE:\n case mark_1.SQUARE:\n out.shape = { value: model.mark };\n break;\n case mark_1.POINT:\n case mark_1.LINE:\n case mark_1.GEOSHAPE:\n case mark_1.AREA:\n // use default circle\n break;\n }\n var markDef = model.markDef, encoding = model.encoding;\n var filled = markDef.filled;\n if (out.fill) {\n // for fill legend, we don't want any fill in symbol\n if (channel === 'fill' || (filled && channel === channel_1.COLOR)) {\n delete out.fill;\n }\n else {\n if (out.fill['field']) {\n // For others, remove fill field\n delete out.fill;\n }\n else if (vega_util_1.isArray(out.fill)) {\n var fill = getFirstConditionValue(encoding.fill || encoding.color) || markDef.fill || (filled && markDef.color);\n if (fill) {\n out.fill = { value: fill };\n }\n }\n }\n }\n if (out.stroke) {\n if (channel === 'stroke' || (!filled && channel === channel_1.COLOR)) {\n delete out.stroke;\n }\n else {\n if (out.stroke['field']) {\n // For others, remove stroke field\n delete out.stroke;\n }\n else if (vega_util_1.isArray(out.stroke)) {\n var stroke = getFirstConditionValue(encoding.stroke || encoding.color) || markDef.stroke || (!filled && markDef.color);\n if (stroke) {\n out.stroke = { value: stroke };\n }\n }\n }\n }\n if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke) {\n // for non color channel's legend, we need to override symbol stroke config from Vega config\n out.stroke = { value: 'transparent' };\n }\n if (channel !== channel_1.SHAPE) {\n var shape = getFirstConditionValue(encoding.shape) || markDef.shape;\n if (shape) {\n out.shape = { value: shape };\n }\n }\n if (channel !== channel_1.OPACITY) {\n var opacity = getMaxValue(encoding.opacity) || markDef.opacity;\n if (opacity) { // only apply opacity if it is neither zero or undefined\n out.opacity = { value: opacity };\n }\n }\n out = tslib_1.__assign({}, out, symbolsSpec);\n return util_1.keys(out).length > 0 ? out : undefined;\n}\nexports.symbols = symbols;\nfunction gradient(fieldDef, gradientSpec, model, channel, type) {\n var out = {};\n if (type === 'gradient') {\n var opacity = getMaxValue(model.encoding.opacity) || model.markDef.opacity;\n if (opacity) { // only apply opacity if it is neither zero or undefined\n out.opacity = { value: opacity };\n }\n }\n out = tslib_1.__assign({}, out, gradientSpec);\n return util_1.keys(out).length > 0 ? out : undefined;\n}\nexports.gradient = gradient;\nfunction labels(fieldDef, labelsSpec, model, channel, type) {\n var legend = model.legend(channel);\n var config = model.config;\n var out = {};\n if (fielddef_1.isTimeFieldDef(fieldDef)) {\n var isUTCScale = model.getScaleComponent(channel).get('type') === scale_1.ScaleType.UTC;\n var expr = common_1.timeFormatExpression('datum.value', fieldDef.timeUnit, legend.format, config.legend.shortTimeLabels, config.timeFormat, isUTCScale);\n labelsSpec = tslib_1.__assign({}, (expr ? { text: { signal: expr } } : {}), labelsSpec);\n }\n out = tslib_1.__assign({}, out, labelsSpec);\n return util_1.keys(out).length > 0 ? out : undefined;\n}\nexports.labels = labels;\nfunction getMaxValue(channelDef) {\n return getConditionValue(channelDef, function (v, conditionalDef) { return Math.max(v, conditionalDef.value); });\n}\nfunction getFirstConditionValue(channelDef) {\n return getConditionValue(channelDef, function (v, conditionalDef) { return v !== undefined ? v : conditionalDef.value; });\n}\nfunction getConditionValue(channelDef, reducer) {\n if (fielddef_1.hasConditionalValueDef(channelDef)) {\n return (vega_util_1.isArray(channelDef.condition) ? channelDef.condition : [channelDef.condition])\n .reduce(reducer, channelDef.value);\n }\n else if (fielddef_1.isValueDef(channelDef)) {\n return channelDef.value;\n }\n return undefined;\n}\n//# sourceMappingURL=encode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar legend_1 = require(\"../../legend\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar model_1 = require(\"../model\");\nvar resolve_1 = require(\"../resolve\");\nvar split_1 = require(\"../split\");\nvar component_1 = require(\"./component\");\nvar encode = tslib_1.__importStar(require(\"./encode\"));\nvar properties = tslib_1.__importStar(require(\"./properties\"));\nfunction parseLegend(model) {\n if (model_1.isUnitModel(model)) {\n model.component.legends = parseUnitLegend(model);\n }\n else {\n model.component.legends = parseNonUnitLegend(model);\n }\n}\nexports.parseLegend = parseLegend;\nfunction parseUnitLegend(model) {\n var encoding = model.encoding;\n return [channel_1.COLOR, channel_1.FILL, channel_1.STROKE, channel_1.SIZE, channel_1.SHAPE, channel_1.OPACITY].reduce(function (legendComponent, channel) {\n var def = encoding[channel];\n if (model.legend(channel) && model.getScaleComponent(channel) && !(fielddef_1.isFieldDef(def) && (channel === channel_1.SHAPE && def.type === type_1.GEOJSON))) {\n legendComponent[channel] = parseLegendForChannel(model, channel);\n }\n return legendComponent;\n }, {});\n}\nfunction getLegendDefWithScale(model, channel) {\n var _a;\n // For binned field with continuous scale, use a special scale so we can overrride the mark props and labels\n switch (channel) {\n case channel_1.COLOR:\n var scale = model.scaleName(channel_1.COLOR);\n return model.markDef.filled ? { fill: scale } : { stroke: scale };\n case channel_1.FILL:\n case channel_1.STROKE:\n case channel_1.SIZE:\n case channel_1.SHAPE:\n case channel_1.OPACITY:\n return _a = {}, _a[channel] = model.scaleName(channel), _a;\n }\n}\nfunction parseLegendForChannel(model, channel) {\n var fieldDef = model.fieldDef(channel);\n var legend = model.legend(channel);\n var legendCmpt = new component_1.LegendComponent({}, getLegendDefWithScale(model, channel));\n legend_1.LEGEND_PROPERTIES.forEach(function (property) {\n var value = getProperty(property, legend, channel, model);\n if (value !== undefined) {\n var explicit = \n // specified legend.values is already respected, but may get transformed.\n property === 'values' ? !!legend.values :\n // title can be explicit if fieldDef.title is set\n property === 'title' && value === model.fieldDef(channel).title ? true :\n // Otherwise, things are explicit if the returned value matches the specified property\n value === legend[property];\n if (explicit || model.config.legend[property] === undefined) {\n legendCmpt.set(property, value, explicit);\n }\n }\n });\n // 2) Add mark property definition groups\n var legendEncoding = legend.encoding || {};\n var legendEncode = ['labels', 'legend', 'title', 'symbols', 'gradient'].reduce(function (e, part) {\n var legendEncodingPart = common_1.guideEncodeEntry(legendEncoding[part] || {}, model);\n var value = encode[part] ?\n // TODO: replace legendCmpt with type is sufficient\n encode[part](fieldDef, legendEncodingPart, model, channel, legendCmpt.get('type')) : // apply rule\n legendEncodingPart; // no rule -- just default values\n if (value !== undefined && util_1.keys(value).length > 0) {\n e[part] = { update: value };\n }\n return e;\n }, {});\n if (util_1.keys(legendEncode).length > 0) {\n legendCmpt.set('encode', legendEncode, !!legend.encoding);\n }\n return legendCmpt;\n}\nexports.parseLegendForChannel = parseLegendForChannel;\nfunction getProperty(property, specifiedLegend, channel, model) {\n var fieldDef = model.fieldDef(channel);\n switch (property) {\n case 'format':\n // We don't include temporal field here as we apply format in encode block\n return common_1.numberFormat(fieldDef, specifiedLegend.format, model.config);\n case 'title':\n // For falsy value, keep undefined so we use default,\n // but use null for '', null, and false to hide the title\n var specifiedTitle = fieldDef.title !== undefined ? fieldDef.title :\n specifiedLegend.title || (specifiedLegend.title === undefined ? undefined : null);\n return common_1.getSpecifiedOrDefaultValue(specifiedTitle, fielddef_1.title(fieldDef, model.config)) || undefined; // make falsy value undefined so output Vega spec is shorter\n case 'values':\n return properties.values(specifiedLegend, fieldDef);\n case 'type':\n return common_1.getSpecifiedOrDefaultValue(specifiedLegend.type, properties.type(fieldDef.type, channel, model.getScaleComponent(channel).get('type')));\n }\n // Otherwise, return specified property.\n return specifiedLegend[property];\n}\nfunction parseNonUnitLegend(model) {\n var _a = model.component, legends = _a.legends, resolve = _a.resolve;\n var _loop_1 = function (child) {\n parseLegend(child);\n util_1.keys(child.component.legends).forEach(function (channel) {\n resolve.legend[channel] = resolve_1.parseGuideResolve(model.component.resolve, channel);\n if (resolve.legend[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n if (!legends[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n // Thus, mark legend as independent and remove the legend component.\n resolve.legend[channel] = 'independent';\n delete legends[channel];\n }\n }\n });\n };\n for (var _i = 0, _b = model.children; _i < _b.length; _i++) {\n var child = _b[_i];\n _loop_1(child);\n }\n util_1.keys(legends).forEach(function (channel) {\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (!child.component.legends[channel]) {\n // skip if the child does not have a particular legend\n continue;\n }\n if (resolve.legend[channel] === 'shared') {\n // After merging shared legend, make sure to remove legend from child\n delete child.component.legends[channel];\n }\n }\n });\n return legends;\n}\nfunction mergeLegendComponent(mergedLegend, childLegend) {\n if (!mergedLegend) {\n return childLegend.clone();\n }\n var mergedOrient = mergedLegend.getWithExplicit('orient');\n var childOrient = childLegend.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n var typeMerged = false;\n var _loop_2 = function (prop) {\n var mergedValueWithExplicit = split_1.mergeValuesWithExplicit(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend', \n // Tie breaker function\n function (v1, v2) {\n switch (prop) {\n case 'title':\n return common_1.mergeTitleComponent(v1, v2);\n case 'type':\n // There are only two types. If we have different types, then prefer symbol over gradient.\n typeMerged = true;\n return split_1.makeImplicit('symbol');\n }\n return split_1.defaultTieBreaker(v1, v2, prop, 'legend');\n });\n mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n };\n // Otherwise, let's merge\n for (var _i = 0, VG_LEGEND_PROPERTIES_1 = legend_1.VG_LEGEND_PROPERTIES; _i < VG_LEGEND_PROPERTIES_1.length; _i++) {\n var prop = VG_LEGEND_PROPERTIES_1[_i];\n _loop_2(prop);\n }\n if (typeMerged) {\n if (((mergedLegend.implicit || {}).encode || {}).gradient) {\n util_1.deleteNestedProperty(mergedLegend.implicit, ['encode', 'gradient']);\n }\n if (((mergedLegend.explicit || {}).encode || {}).gradient) {\n util_1.deleteNestedProperty(mergedLegend.explicit, ['encode', 'gradient']);\n }\n }\n return mergedLegend;\n}\nexports.mergeLegendComponent = mergeLegendComponent;\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar scale_1 = require(\"../../scale\");\nvar util_1 = require(\"../../util\");\nfunction values(legend, fieldDef) {\n var vals = legend.values;\n if (vals) {\n return fielddef_1.valueArray(fieldDef, vals);\n }\n return undefined;\n}\nexports.values = values;\nfunction type(t, channel, scaleType) {\n if (channel_1.isColorChannel(channel) && ((t === 'quantitative' && !scale_1.isBinScale(scaleType)) ||\n (t === 'temporal' && util_1.contains(['time', 'utc'], scaleType)))) {\n return 'gradient';\n }\n return undefined;\n}\nexports.type = type;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nexports.area = {\n vgMark: 'area',\n encodeEntry: function (model) {\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'include' }), mixins.pointPosition('x', model, 'zeroOrMin'), mixins.pointPosition('y', model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', model.markDef.orient === 'horizontal' ? 'x2' : 'y2'), mixins.defined(model));\n }\n};\n//# sourceMappingURL=area.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nexports.bar = {\n vgMark: 'rect',\n encodeEntry: function (model) {\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), x(model), y(model));\n }\n};\nfunction x(model) {\n var config = model.config, encoding = model.encoding, markDef = model.markDef, width = model.width;\n var orient = markDef.orient;\n var sizeDef = encoding.size;\n var xDef = encoding.x;\n var x2Def = encoding.x2;\n var xScaleName = model.scaleName(channel_1.X);\n var xScale = model.getScaleComponent(channel_1.X);\n // x, x2, and width -- we must specify two of these in all conditions\n if (orient === 'horizontal' || x2Def) {\n return tslib_1.__assign({}, mixins.pointPosition('x', model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', 'x2'));\n }\n else { // vertical\n if (fielddef_1.isFieldDef(xDef)) {\n var xScaleType = xScale.get('type');\n if (xDef.bin && !sizeDef && !scale_1.hasDiscreteDomain(xScaleType)) {\n return mixins.binnedPosition(xDef, 'x', model.scaleName('x'), markDef.binSpacing === undefined ? config.bar.binSpacing : markDef.binSpacing, xScale.get('reverse'));\n }\n else {\n if (xScaleType === scale_1.ScaleType.BAND) {\n return mixins.bandPosition(xDef, 'x', model);\n }\n }\n }\n // sized bin, normal point-ordinal axis, quantitative x-axis, or no x\n return mixins.centeredBandPosition('x', model, tslib_1.__assign({}, ref.mid(width)), defaultSizeRef(markDef, xScaleName, xScale, config));\n }\n}\nfunction y(model) {\n var config = model.config, encoding = model.encoding, height = model.height, markDef = model.markDef;\n var orient = markDef.orient;\n var sizeDef = encoding.size;\n var yDef = encoding.y;\n var y2Def = encoding.y2;\n var yScaleName = model.scaleName(channel_1.Y);\n var yScale = model.getScaleComponent(channel_1.Y);\n // y, y2 & height -- we must specify two of these in all conditions\n if (orient === 'vertical' || y2Def) {\n return tslib_1.__assign({}, mixins.pointPosition('y', model, 'zeroOrMin'), mixins.pointPosition2(model, 'zeroOrMin', 'y2'));\n }\n else {\n if (fielddef_1.isFieldDef(yDef)) {\n var yScaleType = yScale.get('type');\n if (yDef.bin && !sizeDef && !scale_1.hasDiscreteDomain(yScaleType)) {\n return mixins.binnedPosition(yDef, 'y', model.scaleName('y'), markDef.binSpacing === undefined ? config.bar.binSpacing : markDef.binSpacing, yScale.get('reverse'));\n }\n else if (yScaleType === scale_1.ScaleType.BAND) {\n return mixins.bandPosition(yDef, 'y', model);\n }\n }\n return mixins.centeredBandPosition('y', model, ref.mid(height), defaultSizeRef(markDef, yScaleName, yScale, config));\n }\n}\nfunction defaultSizeRef(markDef, scaleName, scale, config) {\n if (markDef.size !== undefined) {\n return { value: markDef.size };\n }\n else if (config.bar.discreteBandSize) {\n return { value: config.bar.discreteBandSize };\n }\n else if (scale) {\n var scaleType = scale.get('type');\n if (scaleType === scale_1.ScaleType.POINT) {\n var scaleRange = scale.get('range');\n if (vega_schema_1.isVgRangeStep(scaleRange) && vega_util_1.isNumber(scaleRange.step)) {\n return { value: scaleRange.step - 1 };\n }\n log.warn(log.message.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL);\n }\n else if (scaleType === scale_1.ScaleType.BAND) {\n return ref.bandRef(scaleName);\n }\n else { // non-ordinal scale\n return { value: config.bar.continuousBandSize };\n }\n }\n else if (config.scale.rangeStep && config.scale.rangeStep !== null) {\n return { value: config.scale.rangeStep - 1 };\n }\n return { value: 20 };\n}\n//# sourceMappingURL=bar.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar fielddef_1 = require(\"../../fielddef\");\nvar type_1 = require(\"../../type\");\nexports.geoshape = {\n vgMark: 'shape',\n encodeEntry: function (model) {\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }));\n },\n postEncodingTransform: function (model) {\n var encoding = model.encoding;\n var shapeDef = encoding.shape;\n var transform = tslib_1.__assign({ type: 'geoshape', projection: model.projectionName() }, (shapeDef && fielddef_1.isFieldDef(shapeDef) && shapeDef.type === type_1.GEOJSON ? { field: fielddef_1.vgField(shapeDef, { expr: 'datum' }) } : {}));\n return [transform];\n }\n};\n//# sourceMappingURL=geoshape.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar encoding_1 = require(\"../../encoding\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar mark_1 = require(\"../../mark\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nfunction normalizeMarkDef(mark, encoding, config) {\n var markDef = mark_1.isMarkDef(mark) ? tslib_1.__assign({}, mark) : { type: mark };\n // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n var specifiedOrient = markDef.orient || common_1.getMarkConfig('orient', markDef, config);\n markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n log.warn(log.message.orientOverridden(markDef.orient, specifiedOrient));\n }\n // set opacity and filled if not specified in mark config\n var specifiedOpacity = markDef.opacity !== undefined ? markDef.opacity : common_1.getMarkConfig('opacity', markDef, config);\n if (specifiedOpacity === undefined) {\n markDef.opacity = opacity(markDef.type, encoding);\n }\n var specifiedFilled = markDef.filled;\n if (specifiedFilled === undefined) {\n markDef.filled = filled(markDef, config);\n }\n // set cursor, which should be pointer if href channel is present unless otherwise specified\n var specifiedCursor = markDef.cursor || common_1.getMarkConfig('cursor', markDef, config);\n if (specifiedCursor === undefined) {\n markDef.cursor = cursor(markDef, encoding, config);\n }\n return markDef;\n}\nexports.normalizeMarkDef = normalizeMarkDef;\nfunction cursor(markDef, encoding, config) {\n if (encoding.href || markDef.href || common_1.getMarkConfig('href', markDef, config)) {\n return 'pointer';\n }\n return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n if (util_1.contains([mark_1.POINT, mark_1.TICK, mark_1.CIRCLE, mark_1.SQUARE], mark)) {\n // point-based marks\n if (!encoding_1.isAggregate(encoding)) {\n return 0.7;\n }\n }\n return undefined;\n}\nfunction filled(markDef, config) {\n var filledConfig = common_1.getMarkConfig('filled', markDef, config);\n var mark = markDef.type;\n return filledConfig !== undefined ? filledConfig : mark !== mark_1.POINT && mark !== mark_1.LINE && mark !== mark_1.RULE;\n}\nfunction orient(mark, encoding, specifiedOrient) {\n switch (mark) {\n case mark_1.POINT:\n case mark_1.CIRCLE:\n case mark_1.SQUARE:\n case mark_1.TEXT:\n case mark_1.RECT:\n // orient is meaningless for these marks.\n return undefined;\n }\n var yIsRange = encoding.y2;\n var xIsRange = encoding.x2;\n switch (mark) {\n case mark_1.BAR:\n if (yIsRange || xIsRange) {\n // Ranged bar does not always have clear orientation, so we allow overriding\n if (specifiedOrient) {\n return specifiedOrient;\n }\n // If y is range and x is non-range, non-bin Q, y is likely a prebinned field\n var xDef = encoding.x;\n if (!xIsRange && fielddef_1.isFieldDef(xDef) && xDef.type === type_1.QUANTITATIVE && !xDef.bin) {\n return 'horizontal';\n }\n // If x is range and y is non-range, non-bin Q, x is likely a prebinned field\n var yDef = encoding.y;\n if (!yIsRange && fielddef_1.isFieldDef(yDef) && yDef.type === type_1.QUANTITATIVE && !yDef.bin) {\n return 'vertical';\n }\n }\n /* tslint:disable */\n case mark_1.RULE: // intentionally fall through\n // return undefined for line segment rule and bar with both axis ranged\n if (xIsRange && yIsRange) {\n return undefined;\n }\n case mark_1.AREA: // intentionally fall through\n // If there are range for both x and y, y (vertical) has higher precedence.\n if (yIsRange) {\n return 'vertical';\n }\n else if (xIsRange) {\n return 'horizontal';\n }\n else if (mark === mark_1.RULE) {\n if (encoding.x && !encoding.y) {\n return 'vertical';\n }\n else if (encoding.y && !encoding.x) {\n return 'horizontal';\n }\n }\n case mark_1.LINE: // intentional fall through\n case mark_1.TICK: // Tick is opposite to bar, line, area and never have ranged mark.\n /* tslint:enable */\n var xIsContinuous = fielddef_1.isFieldDef(encoding.x) && fielddef_1.isContinuous(encoding.x);\n var yIsContinuous = fielddef_1.isFieldDef(encoding.y) && fielddef_1.isContinuous(encoding.y);\n if (xIsContinuous && !yIsContinuous) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n else if (!xIsContinuous && yIsContinuous) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (xIsContinuous && yIsContinuous) {\n var xDef = encoding.x; // we can cast here since they are surely fieldDef\n var yDef = encoding.y;\n var xIsTemporal = xDef.type === type_1.TEMPORAL;\n var yIsTemporal = yDef.type === type_1.TEMPORAL;\n // temporal without timeUnit is considered continuous, but better serves as dimension\n if (xIsTemporal && !yIsTemporal) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (!xIsTemporal && yIsTemporal) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n if (!xDef.aggregate && yDef.aggregate) {\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n }\n else if (xDef.aggregate && !yDef.aggregate) {\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n }\n if (specifiedOrient) {\n // When ambiguous, use user specified one.\n return specifiedOrient;\n }\n return 'vertical';\n }\n else {\n // Discrete x Discrete case\n if (specifiedOrient) {\n // When ambiguous, use user specified one.\n return specifiedOrient;\n }\n return undefined;\n }\n }\n return 'vertical';\n}\n//# sourceMappingURL=init.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nexports.line = {\n vgMark: 'line',\n encodeEntry: function (model) {\n var width = model.width, height = model.height;\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n }), mixins.defined(model));\n }\n};\nexports.trail = {\n vgMark: 'trail',\n encodeEntry: function (model) {\n var width = model.width, height = model.height;\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'include', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model), mixins.defined(model));\n }\n};\n//# sourceMappingURL=line.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar data_1 = require(\"../../data\");\nvar encoding_1 = require(\"../../encoding\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar mark_1 = require(\"../../mark\");\nvar sort_1 = require(\"../../sort\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\nvar area_1 = require(\"./area\");\nvar bar_1 = require(\"./bar\");\nvar geoshape_1 = require(\"./geoshape\");\nvar line_1 = require(\"./line\");\nvar point_1 = require(\"./point\");\nvar rect_1 = require(\"./rect\");\nvar rule_1 = require(\"./rule\");\nvar text_1 = require(\"./text\");\nvar tick_1 = require(\"./tick\");\nvar markCompiler = {\n area: area_1.area,\n bar: bar_1.bar,\n circle: point_1.circle,\n geoshape: geoshape_1.geoshape,\n line: line_1.line,\n point: point_1.point,\n rect: rect_1.rect,\n rule: rule_1.rule,\n square: point_1.square,\n text: text_1.text,\n tick: tick_1.tick,\n trail: line_1.trail\n};\nfunction parseMarkGroup(model) {\n if (util_1.contains([mark_1.LINE, mark_1.AREA, mark_1.TRAIL], model.mark)) {\n return parsePathMark(model);\n }\n else {\n return getMarkGroups(model);\n }\n}\nexports.parseMarkGroup = parseMarkGroup;\nvar FACETED_PATH_PREFIX = 'faceted_path_';\nfunction parsePathMark(model) {\n var details = pathGroupingFields(model.mark, model.encoding);\n var pathMarks = getMarkGroups(model, {\n // If has subfacet for line/area group, need to use faceted data from below.\n fromPrefix: (details.length > 0 ? FACETED_PATH_PREFIX : '')\n });\n if (details.length > 0) { // have level of details - need to facet line into subgroups\n // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n return [{\n name: model.getName('pathgroup'),\n type: 'group',\n from: {\n facet: {\n name: FACETED_PATH_PREFIX + model.requestDataName(data_1.MAIN),\n data: model.requestDataName(data_1.MAIN),\n groupby: details,\n }\n },\n encode: {\n update: {\n width: { field: { group: 'width' } },\n height: { field: { group: 'height' } }\n }\n },\n marks: pathMarks\n }];\n }\n else {\n return pathMarks;\n }\n}\nfunction getSort(model) {\n var encoding = model.encoding, stack = model.stack, mark = model.mark, markDef = model.markDef;\n var order = encoding.order;\n if (!vega_util_1.isArray(order) && fielddef_1.isValueDef(order)) {\n return undefined;\n }\n else if ((vega_util_1.isArray(order) || fielddef_1.isFieldDef(order)) && !stack) {\n // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n return common_1.sortParams(order, { expr: 'datum' });\n }\n else if (mark_1.isPathMark(mark)) {\n // For both line and area, we sort values based on dimension by default\n var dimensionChannelDef = encoding[markDef.orient === 'horizontal' ? 'y' : 'x'];\n if (fielddef_1.isFieldDef(dimensionChannelDef)) {\n var s = dimensionChannelDef.sort;\n var sortField = sort_1.isSortField(s) ?\n fielddef_1.vgField({\n // FIXME: this op might not already exist?\n // FIXME: what if dimensionChannel (x or y) contains custom domain?\n aggregate: encoding_1.isAggregate(model.encoding) ? s.op : undefined,\n field: s.field\n }, { expr: 'datum' }) :\n fielddef_1.vgField(dimensionChannelDef, {\n // For stack with imputation, we only have bin_mid\n binSuffix: model.stack && model.stack.impute ? 'mid' : undefined,\n expr: 'datum'\n });\n return {\n field: sortField,\n order: 'descending'\n };\n }\n return undefined;\n }\n return undefined;\n}\nexports.getSort = getSort;\nfunction getMarkGroups(model, opt) {\n if (opt === void 0) { opt = { fromPrefix: '' }; }\n var mark = model.mark;\n var clip = model.markDef.clip !== undefined ?\n !!model.markDef.clip : scaleClip(model);\n var style = common_1.getStyles(model.markDef);\n var key = model.encoding.key;\n var sort = getSort(model);\n var postEncodingTransform = markCompiler[mark].postEncodingTransform ? markCompiler[mark].postEncodingTransform(model) : null;\n return [tslib_1.__assign({ name: model.getName('marks'), type: markCompiler[mark].vgMark }, (clip ? { clip: true } : {}), (style ? { style: style } : {}), (key ? { key: { field: key.field } } : {}), (sort ? { sort: sort } : {}), { from: { data: opt.fromPrefix + model.requestDataName(data_1.MAIN) }, encode: {\n update: markCompiler[mark].encodeEntry(model)\n } }, (postEncodingTransform ? {\n transform: postEncodingTransform\n } : {}))];\n}\n/**\n * Returns list of path grouping fields\n * that the model's spec contains.\n */\nfunction pathGroupingFields(mark, encoding) {\n return util_1.keys(encoding).reduce(function (details, channel) {\n switch (channel) {\n // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, cursor should not cause lines to group\n case 'x':\n case 'y':\n case 'order':\n case 'tooltip':\n case 'href':\n case 'x2':\n case 'y2':\n case 'latitude':\n case 'longitude':\n case 'latitude2':\n case 'longitude2':\n // TODO: case 'cursor':\n // text, shape, shouldn't be a part of line/trail/area\n case 'text':\n case 'shape':\n return details;\n case 'detail':\n case 'key':\n var channelDef = encoding[channel];\n if (channelDef) {\n (vega_util_1.isArray(channelDef) ? channelDef : [channelDef]).forEach(function (fieldDef) {\n if (!fieldDef.aggregate) {\n details.push(fielddef_1.vgField(fieldDef, {}));\n }\n });\n }\n return details;\n case 'size':\n if (mark === 'trail') {\n // For trail, size should not group trail lines.\n return details;\n }\n // For line, it should group lines.\n /* tslint:disable */\n // intentional fall through\n case 'color':\n case 'fill':\n case 'stroke':\n case 'opacity':\n // TODO strokeDashOffset:\n /* tslint:enable */\n var fieldDef = fielddef_1.getFieldDef(encoding[channel]);\n if (fieldDef && !fieldDef.aggregate) {\n details.push(fielddef_1.vgField(fieldDef, {}));\n }\n return details;\n default:\n throw new Error(\"Bug: Channel \" + channel + \" unimplemented for line mark\");\n }\n }, []);\n}\nexports.pathGroupingFields = pathGroupingFields;\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the domainRaw property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n var xScale = model.getScaleComponent('x');\n var yScale = model.getScaleComponent('y');\n return (xScale && xScale.get('domainRaw')) ||\n (yScale && yScale.get('domainRaw')) ? true : false;\n}\n//# sourceMappingURL=mark.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar predicate_1 = require(\"../../predicate\");\nvar scale_1 = require(\"../../scale\");\nvar util_1 = require(\"../../util\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar common_1 = require(\"../common\");\nvar selection_1 = require(\"../selection/selection\");\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nfunction color(model, opt) {\n if (opt === void 0) { opt = { valueOnly: false }; }\n var _a, _b;\n var markDef = model.markDef, encoding = model.encoding, config = model.config;\n var filled = markDef.filled, markType = markDef.type;\n var configValue = {\n fill: common_1.getMarkConfig('fill', markDef, config),\n stroke: common_1.getMarkConfig('stroke', markDef, config),\n color: common_1.getMarkConfig('color', markDef, config)\n };\n var transparentIfNeeded = util_1.contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType) ? 'transparent' : undefined;\n var defaultValue = {\n fill: markDef.fill || configValue.fill ||\n // If there is no fill, always fill symbols, bar, geoshape\n // with transparent fills https://github.com/vega/vega-lite/issues/1316\n transparentIfNeeded,\n stroke: markDef.stroke || configValue.stroke\n };\n var colorVgChannel = filled ? 'fill' : 'stroke';\n var fillStrokeMarkDefAndConfig = tslib_1.__assign({}, (defaultValue.fill ? {\n fill: { value: defaultValue.fill }\n } : {}), (defaultValue.stroke ? {\n stroke: { value: defaultValue.stroke }\n } : {}));\n if (encoding.fill || encoding.stroke) {\n // ignore encoding.color, markDef.color, config.color\n if (markDef.color) {\n // warn for markDef.color (no need to warn encoding.color as it will be dropped in normalized already)\n log.warn(log.message.droppingColor('property', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n }\n return tslib_1.__assign({}, nonPosition('fill', model, { defaultValue: defaultValue.fill || transparentIfNeeded }), nonPosition('stroke', model, { defaultValue: defaultValue.stroke }));\n }\n else if (encoding.color) {\n return tslib_1.__assign({}, fillStrokeMarkDefAndConfig, nonPosition('color', model, {\n vgChannel: colorVgChannel,\n // apply default fill/stroke first, then color config, then transparent if needed.\n defaultValue: markDef[colorVgChannel] || markDef.color || configValue[colorVgChannel] || configValue.color || (filled ? transparentIfNeeded : undefined)\n }));\n }\n else if (markDef.fill || markDef.stroke) {\n // Ignore markDef.color, config.color\n if (markDef.color) {\n log.warn(log.message.droppingColor('property', { fill: 'fill' in markDef, stroke: 'stroke' in markDef }));\n }\n return fillStrokeMarkDefAndConfig;\n }\n else if (markDef.color) {\n return tslib_1.__assign({}, fillStrokeMarkDefAndConfig, (_a = {}, _a[colorVgChannel] = { value: markDef.color }, _a));\n }\n else if (configValue.fill || configValue.stroke) {\n // ignore config.color\n return fillStrokeMarkDefAndConfig;\n }\n else if (configValue.color) {\n return tslib_1.__assign({}, (transparentIfNeeded ? { fill: { value: 'transparent' } } : {}), (_b = {}, _b[colorVgChannel] = { value: configValue.color }, _b));\n }\n return {};\n}\nexports.color = color;\nfunction baseEncodeEntry(model, ignore) {\n return tslib_1.__assign({}, markDefProperties(model.markDef, ignore), color(model), nonPosition('opacity', model), tooltip(model), text(model, 'href'));\n}\nexports.baseEncodeEntry = baseEncodeEntry;\nfunction markDefProperties(mark, ignore) {\n return vega_schema_1.VG_MARK_CONFIGS.reduce(function (m, prop) {\n if (mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n m[prop] = { value: mark[prop] };\n }\n return m;\n }, {});\n}\nfunction valueIfDefined(prop, value) {\n var _a;\n if (value !== undefined) {\n return _a = {}, _a[prop] = { value: value }, _a;\n }\n return undefined;\n}\nexports.valueIfDefined = valueIfDefined;\nfunction validPredicate(vgRef) {\n return vgRef + \" !== null && !isNaN(\" + vgRef + \")\";\n}\nfunction defined(model) {\n if (model.config.invalidValues === 'filter') {\n var fields = ['x', 'y'].map(function (channel) {\n var scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var scaleType = scaleComponent.get('type');\n // Discrete domain scales can handle invalid values, but continuous scales can't.\n if (scale_1.hasContinuousDomain(scaleType)) {\n return model.vgField(channel, { expr: 'datum' });\n }\n }\n return undefined;\n })\n .filter(function (field) { return !!field; })\n .map(validPredicate);\n if (fields.length > 0) {\n return {\n defined: { signal: fields.join(' && ') }\n };\n }\n }\n return {};\n}\nexports.defined = defined;\n/**\n * Return mixins for non-positional channels with scales. (Text doesn't have scale.)\n */\nfunction nonPosition(channel, model, opt) {\n if (opt === void 0) { opt = {}; }\n var defaultValue = opt.defaultValue, vgChannel = opt.vgChannel;\n var defaultRef = opt.defaultRef || (defaultValue !== undefined ? { value: defaultValue } : undefined);\n var channelDef = model.encoding[channel];\n return wrapCondition(model, channelDef, vgChannel || channel, function (cDef) {\n return ref.midPoint(channel, cDef, model.scaleName(channel), model.getScaleComponent(channel), null, // No need to provide stack for non-position as it does not affect mid point\n defaultRef);\n });\n}\nexports.nonPosition = nonPosition;\n/**\n * Return a mixin that include a Vega production rule for a Vega-Lite conditional channel definition.\n * or a simple mixin if channel def has no condition.\n */\nfunction wrapCondition(model, channelDef, vgChannel, refFn) {\n var _a, _b;\n var condition = channelDef && channelDef.condition;\n var valueRef = refFn(channelDef);\n if (condition) {\n var conditions = vega_util_1.isArray(condition) ? condition : [condition];\n var vgConditions = conditions.map(function (c) {\n var conditionValueRef = refFn(c);\n var test = fielddef_1.isConditionalSelection(c) ? selection_1.selectionPredicate(model, c.selection) : predicate_1.expression(model, c.test);\n return tslib_1.__assign({ test: test }, conditionValueRef);\n });\n return _a = {},\n _a[vgChannel] = vgConditions.concat((valueRef !== undefined ? [valueRef] : [])),\n _a;\n }\n else {\n return valueRef !== undefined ? (_b = {}, _b[vgChannel] = valueRef, _b) : {};\n }\n}\nexports.wrapCondition = wrapCondition;\nfunction tooltip(model) {\n var channel = 'tooltip';\n var channelDef = model.encoding[channel];\n if (vega_util_1.isArray(channelDef)) {\n var keyValues = channelDef.map(function (fieldDef) {\n var key = fieldDef.title !== undefined ? fieldDef.title : fielddef_1.vgField(fieldDef, { binSuffix: 'range' });\n var value = ref.text(fieldDef, model.config).signal;\n return \"\\\"\" + key + \"\\\": \" + value;\n });\n return { tooltip: { signal: \"{\" + keyValues.join(', ') + \"}\" } };\n }\n else {\n // if not an array, behave just like text\n return textCommon(model, channel, channelDef);\n }\n}\nexports.tooltip = tooltip;\nfunction text(model, channel) {\n if (channel === void 0) { channel = 'text'; }\n var channelDef = model.encoding[channel];\n return textCommon(model, channel, channelDef);\n}\nexports.text = text;\nfunction textCommon(model, channel, channelDef) {\n return wrapCondition(model, channelDef, channel, function (cDef) { return ref.text(cDef, model.config); });\n}\nfunction bandPosition(fieldDef, channel, model) {\n var _a, _b, _c;\n var scaleName = model.scaleName(channel);\n var sizeChannel = channel === 'x' ? 'width' : 'height';\n if (model.encoding.size || model.markDef.size !== undefined) {\n var orient = model.markDef.orient;\n if (orient) {\n var centeredBandPositionMixins = (_a = {},\n // Use xc/yc and place the mark at the middle of the band\n // This way we never have to deal with size's condition for x/y position.\n _a[channel + 'c'] = ref.fieldRef(fieldDef, scaleName, {}, { band: 0.5 }),\n _a);\n if (fielddef_1.getFieldDef(model.encoding.size)) {\n return tslib_1.__assign({}, centeredBandPositionMixins, nonPosition('size', model, { vgChannel: sizeChannel }));\n }\n else if (fielddef_1.isValueDef(model.encoding.size)) {\n return tslib_1.__assign({}, centeredBandPositionMixins, nonPosition('size', model, { vgChannel: sizeChannel }));\n }\n else if (model.markDef.size !== undefined) {\n return tslib_1.__assign({}, centeredBandPositionMixins, (_b = {}, _b[sizeChannel] = { value: model.markDef.size }, _b));\n }\n }\n else {\n log.warn(log.message.cannotApplySizeToNonOrientedMark(model.markDef.type));\n }\n }\n return _c = {},\n _c[channel] = ref.fieldRef(fieldDef, scaleName, { binSuffix: 'range' }),\n _c[sizeChannel] = ref.bandRef(scaleName),\n _c;\n}\nexports.bandPosition = bandPosition;\nfunction centeredBandPosition(channel, model, defaultPosRef, defaultSizeRef) {\n var centerChannel = channel === 'x' ? 'xc' : 'yc';\n var sizeChannel = channel === 'x' ? 'width' : 'height';\n return tslib_1.__assign({}, pointPosition(channel, model, defaultPosRef, centerChannel), nonPosition('size', model, { defaultRef: defaultSizeRef, vgChannel: sizeChannel }));\n}\nexports.centeredBandPosition = centeredBandPosition;\nfunction binnedPosition(fieldDef, channel, scaleName, spacing, reverse) {\n if (channel === 'x') {\n return {\n x2: ref.bin(fieldDef, scaleName, 'start', reverse ? 0 : spacing),\n x: ref.bin(fieldDef, scaleName, 'end', reverse ? spacing : 0)\n };\n }\n else {\n return {\n y2: ref.bin(fieldDef, scaleName, 'start', reverse ? spacing : 0),\n y: ref.bin(fieldDef, scaleName, 'end', reverse ? 0 : spacing)\n };\n }\n}\nexports.binnedPosition = binnedPosition;\n/**\n * Return mixins for point (non-band) position channels.\n */\nfunction pointPosition(channel, model, defaultRef, vgChannel) {\n // TODO: refactor how refer to scale as discussed in https://github.com/vega/vega-lite/pull/1613\n var _a;\n var encoding = model.encoding, mark = model.mark, stack = model.stack;\n var channelDef = encoding[channel];\n var scaleName = model.scaleName(channel);\n var scale = model.getScaleComponent(channel);\n var offset = ref.getOffset(channel, model.markDef);\n var valueRef = !channelDef && (encoding.latitude || encoding.longitude) ?\n // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n { field: model.getName(channel) } : tslib_1.__assign({}, ref.position(channel, encoding[channel], scaleName, scale, stack, ref.getDefaultRef(defaultRef, channel, scaleName, scale, mark)), (offset ? { offset: offset } : {}));\n return _a = {},\n _a[vgChannel || channel] = valueRef,\n _a;\n}\nexports.pointPosition = pointPosition;\n/**\n * Return mixins for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nfunction pointPosition2(model, defaultRef, channel) {\n var _a;\n var encoding = model.encoding, mark = model.mark, stack = model.stack;\n var baseChannel = channel === 'x2' ? 'x' : 'y';\n var channelDef = encoding[baseChannel];\n var scaleName = model.scaleName(baseChannel);\n var scale = model.getScaleComponent(baseChannel);\n var offset = ref.getOffset(channel, model.markDef);\n var valueRef = !channelDef && (encoding.latitude || encoding.longitude) ?\n // use geopoint output if there are lat2/long2 and there is no point position2 overriding lat2/long2.\n { field: model.getName(channel) } : tslib_1.__assign({}, ref.position2(channel, channelDef, encoding[channel], scaleName, scale, stack, ref.getDefaultRef(defaultRef, baseChannel, scaleName, scale, mark)), (offset ? { offset: offset } : {}));\n return _a = {}, _a[channel] = valueRef, _a;\n}\nexports.pointPosition2 = pointPosition2;\n//# sourceMappingURL=mixins.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar common_1 = require(\"../common\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nfunction encodeEntry(model, fixedShape) {\n var config = model.config, width = model.width, height = model.height;\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'include', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.nonPosition('size', model), shapeMixins(model, config, fixedShape));\n}\nfunction shapeMixins(model, config, fixedShape) {\n if (fixedShape) {\n return { shape: { value: fixedShape } };\n }\n return mixins.nonPosition('shape', model, { defaultValue: common_1.getMarkConfig('shape', model.markDef, config) });\n}\nexports.shapeMixins = shapeMixins;\nexports.point = {\n vgMark: 'symbol',\n encodeEntry: function (model) {\n return encodeEntry(model);\n }\n};\nexports.circle = {\n vgMark: 'symbol',\n encodeEntry: function (model) {\n return encodeEntry(model, 'circle');\n }\n};\nexports.square = {\n vgMark: 'symbol',\n encodeEntry: function (model) {\n return encodeEntry(model, 'square');\n }\n};\n//# sourceMappingURL=point.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar mark_1 = require(\"../../mark\");\nvar scale_1 = require(\"../../scale\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nexports.rect = {\n vgMark: 'rect',\n encodeEntry: function (model) {\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), x(model), y(model));\n }\n};\nfunction x(model) {\n var xDef = model.encoding.x;\n var x2Def = model.encoding.x2;\n var xScale = model.getScaleComponent(channel_1.X);\n var xScaleType = xScale ? xScale.get('type') : undefined;\n if (fielddef_1.isFieldDef(xDef) && xDef.bin && !x2Def) {\n return mixins.binnedPosition(xDef, 'x', model.scaleName('x'), 0, xScale.get('reverse'));\n }\n else if (fielddef_1.isFieldDef(xDef) && xScale && scale_1.hasDiscreteDomain(xScaleType)) {\n /* istanbul ignore else */\n if (xScaleType === scale_1.ScaleType.BAND) {\n return mixins.bandPosition(xDef, 'x', model);\n }\n else {\n // We don't support rect mark with point/ordinal scale\n throw new Error(log.message.scaleTypeNotWorkWithMark(mark_1.RECT, xScaleType));\n }\n }\n else { // continuous scale or no scale\n return tslib_1.__assign({}, mixins.pointPosition('x', model, 'zeroOrMax'), mixins.pointPosition2(model, 'zeroOrMin', 'x2'));\n }\n}\nexports.x = x;\nfunction y(model) {\n var yDef = model.encoding.y;\n var y2Def = model.encoding.y2;\n var yScale = model.getScaleComponent(channel_1.Y);\n var yScaleType = yScale ? yScale.get('type') : undefined;\n if (fielddef_1.isFieldDef(yDef) && yDef.bin && !y2Def) {\n return mixins.binnedPosition(yDef, 'y', model.scaleName('y'), 0, yScale.get('reverse'));\n }\n else if (fielddef_1.isFieldDef(yDef) && yScale && scale_1.hasDiscreteDomain(yScaleType)) {\n /* istanbul ignore else */\n if (yScaleType === scale_1.ScaleType.BAND) {\n return mixins.bandPosition(yDef, 'y', model);\n }\n else {\n // We don't support rect mark with point/ordinal scale\n throw new Error(log.message.scaleTypeNotWorkWithMark(mark_1.RECT, yScaleType));\n }\n }\n else { // continuous scale or no scale\n return tslib_1.__assign({}, mixins.pointPosition('y', model, 'zeroOrMax'), mixins.pointPosition2(model, 'zeroOrMin', 'y2'));\n }\n}\nexports.y = y;\n//# sourceMappingURL=rect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nexports.rule = {\n vgMark: 'rule',\n encodeEntry: function (model) {\n var _config = model.config, markDef = model.markDef, width = model.width, height = model.height;\n var orient = markDef.orient;\n if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n // Show nothing if we have none of x, y, lat, and long.\n return {};\n }\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, orient === 'horizontal' ? 'zeroOrMin' : ref.mid(width)), mixins.pointPosition('y', model, orient === 'vertical' ? 'zeroOrMin' : ref.mid(height)), (orient !== 'vertical' ? mixins.pointPosition2(model, 'zeroOrMax', 'x2') : {}), (orient !== 'horizontal' ? mixins.pointPosition2(model, 'zeroOrMax', 'y2') : {}), mixins.nonPosition('size', model, {\n vgChannel: 'strokeWidth',\n defaultValue: markDef.size\n }));\n }\n};\n//# sourceMappingURL=rule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar common_1 = require(\"../common\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nexports.text = {\n vgMark: 'text',\n encodeEntry: function (model) {\n var config = model.config, encoding = model.encoding, width = model.width, height = model.height, markDef = model.markDef;\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width)), mixins.pointPosition('y', model, ref.mid(height)), mixins.text(model), mixins.nonPosition('size', model, tslib_1.__assign({}, (markDef.size ? { defaultValue: markDef.size } : {}), { vgChannel: 'fontSize' // VL's text size is fontSize\n })), mixins.valueIfDefined('align', align(model.markDef, encoding, config)));\n }\n};\nfunction align(markDef, encoding, config) {\n var a = markDef.align || common_1.getMarkConfig('align', markDef, config);\n if (a === undefined) {\n return 'center';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\n//# sourceMappingURL=text.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar mixins = tslib_1.__importStar(require(\"./mixins\"));\nvar ref = tslib_1.__importStar(require(\"./valueref\"));\nexports.tick = {\n vgMark: 'rect',\n encodeEntry: function (model) {\n var _a;\n var config = model.config, markDef = model.markDef, width = model.width, height = model.height;\n var orient = markDef.orient;\n var vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n var vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n return tslib_1.__assign({}, mixins.baseEncodeEntry(model, { size: 'ignore', orient: 'ignore' }), mixins.pointPosition('x', model, ref.mid(width), 'xc'), mixins.pointPosition('y', model, ref.mid(height), 'yc'), mixins.nonPosition('size', model, {\n defaultValue: defaultSize(model),\n vgChannel: vgSizeChannel\n }), (_a = {}, _a[vgThicknessChannel] = { value: markDef.thickness || config.tick.thickness }, _a));\n }\n};\nfunction defaultSize(model) {\n var config = model.config, markDef = model.markDef;\n var orient = markDef.orient;\n var scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n if (markDef.size !== undefined) {\n return markDef.size;\n }\n else if (config.tick.bandSize !== undefined) {\n return config.tick.bandSize;\n }\n else {\n var scaleRange = scale ? scale.get('range') : undefined;\n var rangeStep = scaleRange && vega_schema_1.isVgRangeStep(scaleRange) ?\n scaleRange.step :\n config.scale.rangeStep;\n if (typeof rangeStep !== 'number') {\n // FIXME consolidate this log\n throw new Error('Function does not handle non-numeric rangeStep');\n }\n return rangeStep / 1.5;\n }\n}\n//# sourceMappingURL=tick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\n/**\n * Utility files for producing Vega ValueRef for marks\n */\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar common_1 = require(\"../common\");\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nfunction position(channel, channelDef, scaleName, scale, stack, defaultRef) {\n if (fielddef_1.isFieldDef(channelDef) && stack && channel === stack.fieldChannel) {\n // x or y use stack_end so that stacked line's point mark use stack_end too.\n return fieldRef(channelDef, scaleName, { suffix: 'end' });\n }\n return midPoint(channel, channelDef, scaleName, scale, stack, defaultRef);\n}\nexports.position = position;\n/**\n * @return Vega ValueRef for normal x2- or y2-position without projection\n */\nfunction position2(channel, aFieldDef, a2fieldDef, scaleName, scale, stack, defaultRef) {\n if (fielddef_1.isFieldDef(aFieldDef) && stack &&\n // If fieldChannel is X and channel is X2 (or Y and Y2)\n channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n return fieldRef(aFieldDef, scaleName, { suffix: 'start' });\n }\n return midPoint(channel, a2fieldDef, scaleName, scale, stack, defaultRef);\n}\nexports.position2 = position2;\nfunction getOffset(channel, markDef) {\n var offsetChannel = channel + 'Offset';\n // TODO: in the future read from encoding channel too\n var markDefOffsetValue = markDef[offsetChannel];\n if (markDefOffsetValue) {\n return markDefOffsetValue;\n }\n return undefined;\n}\nexports.getOffset = getOffset;\n/**\n * Value Ref for binned fields\n */\nfunction bin(fieldDef, scaleName, side, offset) {\n var binSuffix = side === 'start' ? undefined : 'end';\n return fieldRef(fieldDef, scaleName, { binSuffix: binSuffix }, offset ? { offset: offset } : {});\n}\nexports.bin = bin;\nfunction fieldRef(fieldDef, scaleName, opt, mixins) {\n var ref = tslib_1.__assign({}, (scaleName ? { scale: scaleName } : {}), { field: fielddef_1.vgField(fieldDef, opt) });\n if (mixins) {\n return tslib_1.__assign({}, ref, mixins);\n }\n return ref;\n}\nexports.fieldRef = fieldRef;\nfunction bandRef(scaleName, band) {\n if (band === void 0) { band = true; }\n return {\n scale: scaleName,\n band: band\n };\n}\nexports.bandRef = bandRef;\n/**\n * Signal that returns the middle of a bin. Should only be used with x and y.\n */\nfunction binMidSignal(fieldDef, scaleName) {\n return {\n signal: \"(\" +\n (\"scale(\\\"\" + scaleName + \"\\\", \" + fielddef_1.vgField(fieldDef, { expr: 'datum' }) + \")\") +\n \" + \" +\n (\"scale(\\\"\" + scaleName + \"\\\", \" + fielddef_1.vgField(fieldDef, { binSuffix: 'end', expr: 'datum' }) + \")\") +\n \")/2\"\n };\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nfunction midPoint(channel, channelDef, scaleName, scale, stack, defaultRef) {\n // TODO: datum support\n if (channelDef) {\n /* istanbul ignore else */\n if (fielddef_1.isFieldDef(channelDef)) {\n if (channelDef.bin) {\n // Use middle only for x an y to place marks in the center between start and end of the bin range.\n // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n if (util_1.contains([channel_1.X, channel_1.Y], channel) && channelDef.type === type_1.QUANTITATIVE) {\n if (stack && stack.impute) {\n // For stack, we computed bin_mid so we can impute.\n return fieldRef(channelDef, scaleName, { binSuffix: 'mid' });\n }\n // For non-stack, we can just calculate bin mid on the fly using signal.\n return binMidSignal(channelDef, scaleName);\n }\n return fieldRef(channelDef, scaleName, common_1.binRequiresRange(channelDef, channel) ? { binSuffix: 'range' } : {});\n }\n if (scale) {\n var scaleType = scale.get('type');\n if (scale_1.hasDiscreteDomain(scaleType)) {\n if (scaleType === 'band') {\n // For band, to get mid point, need to offset by half of the band\n return fieldRef(channelDef, scaleName, { binSuffix: 'range' }, { band: 0.5 });\n }\n return fieldRef(channelDef, scaleName, { binSuffix: 'range' });\n }\n }\n return fieldRef(channelDef, scaleName, {}); // no need for bin suffix\n }\n else if (fielddef_1.isValueDef(channelDef)) {\n var value = channelDef.value;\n if (util_1.contains(['x', 'x2'], channel) && value === 'width') {\n return { field: { group: 'width' } };\n }\n else if (util_1.contains(['y', 'y2'], channel) && value === 'height') {\n return { field: { group: 'height' } };\n }\n return { value: value };\n }\n // If channelDef is neither field def or value def, it's a condition-only def.\n // In such case, we will use default ref.\n }\n return vega_util_1.isFunction(defaultRef) ? defaultRef() : defaultRef;\n}\nexports.midPoint = midPoint;\nfunction text(textDef, config) {\n // text\n if (textDef) {\n if (fielddef_1.isFieldDef(textDef)) {\n return common_1.formatSignalRef(textDef, textDef.format, 'datum', config);\n }\n else if (fielddef_1.isValueDef(textDef)) {\n return { value: textDef.value };\n }\n }\n return undefined;\n}\nexports.text = text;\nfunction mid(sizeRef) {\n return tslib_1.__assign({}, sizeRef, { mult: 0.5 });\n}\nexports.mid = mid;\n/**\n * Whether the scale definitely includes zero in the domain\n */\nfunction domainDefinitelyIncludeZero(scale) {\n if (scale.get('zero') !== false) {\n return true;\n }\n var domains = scale.domains;\n if (vega_util_1.isArray(domains)) {\n return util_1.some(domains, function (d) { return vega_util_1.isArray(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0; });\n }\n return false;\n}\nfunction getDefaultRef(defaultRef, channel, scaleName, scale, mark) {\n return function () {\n if (vega_util_1.isString(defaultRef)) {\n if (scaleName) {\n var scaleType = scale.get('type');\n if (util_1.contains([scale_1.ScaleType.LOG, scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n // Log scales cannot have zero.\n // Zero in time scale is arbitrary, and does not affect ratio.\n // (Time is an interval level of measurement, not ratio).\n // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n if (mark === 'bar' || mark === 'area') {\n log.warn(log.message.nonZeroScaleUsedWithLengthMark(mark, channel, { scaleType: scaleType }));\n }\n }\n else {\n if (domainDefinitelyIncludeZero(scale)) {\n return {\n scale: scaleName,\n value: 0\n };\n }\n if (mark === 'bar' || mark === 'area') {\n log.warn(log.message.nonZeroScaleUsedWithLengthMark(mark, channel, { zeroFalse: scale.explicit.zero === false }));\n }\n }\n }\n if (defaultRef === 'zeroOrMin') {\n return channel === 'x' ? { value: 0 } : { field: { group: 'height' } };\n }\n else { // zeroOrMax\n return channel === 'x' ? { field: { group: 'width' } } : { value: 0 };\n }\n }\n return defaultRef;\n };\n}\nexports.getDefaultRef = getDefaultRef;\n//# sourceMappingURL=valueref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../channel\");\nvar encoding_1 = require(\"../encoding\");\nvar fielddef_1 = require(\"../fielddef\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar scale_1 = require(\"../scale\");\nvar spec_1 = require(\"../spec\");\nvar title_1 = require(\"../title\");\nvar toplevelprops_1 = require(\"../toplevelprops\");\nvar transform_1 = require(\"../transform\");\nvar util_1 = require(\"../util\");\nvar vega_schema_1 = require(\"../vega.schema\");\nvar assemble_1 = require(\"./axis/assemble\");\nvar index_1 = require(\"./header/index\");\nvar assemble_2 = require(\"./layoutsize/assemble\");\nvar assemble_3 = require(\"./legend/assemble\");\nvar parse_1 = require(\"./legend/parse\");\nvar assemble_4 = require(\"./projection/assemble\");\nvar parse_2 = require(\"./projection/parse\");\nvar assemble_5 = require(\"./scale/assemble\");\nvar domain_1 = require(\"./scale/domain\");\nvar parse_3 = require(\"./scale/parse\");\nvar split_1 = require(\"./split\");\nvar NameMap = /** @class */ (function () {\n function NameMap() {\n this.nameMap = {};\n }\n NameMap.prototype.rename = function (oldName, newName) {\n this.nameMap[oldName] = newName;\n };\n NameMap.prototype.has = function (name) {\n return this.nameMap[name] !== undefined;\n };\n NameMap.prototype.get = function (name) {\n // If the name appears in the _nameMap, we need to read its new name.\n // We have to loop over the dict just in case the new name also gets renamed.\n while (this.nameMap[name] && name !== this.nameMap[name]) {\n name = this.nameMap[name];\n }\n return name;\n };\n return NameMap;\n}());\nexports.NameMap = NameMap;\n/*\n We use type guards instead of `instanceof` as `instanceof` makes\n different parts of the compiler depend on the actual implementation of\n the model classes, which in turn depend on different parts of the compiler.\n Thus, `instanceof` leads to circular dependency problems.\n\n On the other hand, type guards only make different parts of the compiler\n depend on the type of the model classes, but not the actual implementation.\n*/\nfunction isUnitModel(model) {\n return model && model.type === 'unit';\n}\nexports.isUnitModel = isUnitModel;\nfunction isFacetModel(model) {\n return model && model.type === 'facet';\n}\nexports.isFacetModel = isFacetModel;\nfunction isRepeatModel(model) {\n return model && model.type === 'repeat';\n}\nexports.isRepeatModel = isRepeatModel;\nfunction isConcatModel(model) {\n return model && model.type === 'concat';\n}\nexports.isConcatModel = isConcatModel;\nfunction isLayerModel(model) {\n return model && model.type === 'layer';\n}\nexports.isLayerModel = isLayerModel;\nvar Model = /** @class */ (function () {\n function Model(spec, parent, parentGivenName, config, repeater, resolve) {\n var _this = this;\n this.children = [];\n /**\n * Corrects the data references in marks after assemble.\n */\n this.correctDataNames = function (mark) {\n // TODO: make this correct\n // for normal data references\n if (mark.from && mark.from.data) {\n mark.from.data = _this.lookupDataSource(mark.from.data);\n }\n // for access to facet data\n if (mark.from && mark.from.facet && mark.from.facet.data) {\n mark.from.facet.data = _this.lookupDataSource(mark.from.facet.data);\n }\n return mark;\n };\n this.parent = parent;\n this.config = config;\n this.repeater = repeater;\n // If name is not provided, always use parent's givenName to avoid name conflicts.\n this.name = spec.name || parentGivenName;\n this.title = vega_util_1.isString(spec.title) ? { text: spec.title } : spec.title;\n // Shared name maps\n this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n this.layoutSizeNameMap = parent ? parent.layoutSizeNameMap : new NameMap();\n this.data = spec.data;\n this.description = spec.description;\n this.transforms = transform_1.normalizeTransform(spec.transform || []);\n this.layout = spec_1.isUnitSpec(spec) || spec_1.isLayerSpec(spec) ? undefined : toplevelprops_1.extractCompositionLayout(spec);\n this.component = {\n data: {\n sources: parent ? parent.component.data.sources : {},\n outputNodes: parent ? parent.component.data.outputNodes : {},\n outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n // data is faceted if the spec is a facet spec or the parent has faceted data and no data is defined\n isFaceted: spec_1.isFacetSpec(spec) || (parent && parent.component.data.isFaceted && !spec.data)\n },\n layoutSize: new split_1.Split(),\n layoutHeaders: { row: {}, column: {} },\n mark: null,\n resolve: tslib_1.__assign({ scale: {}, axis: {}, legend: {} }, (resolve || {})),\n selection: null,\n scales: null,\n projection: null,\n axes: {},\n legends: {},\n };\n }\n Object.defineProperty(Model.prototype, \"width\", {\n get: function () {\n return this.getSizeSignalRef('width');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Model.prototype, \"height\", {\n get: function () {\n return this.getSizeSignalRef('height');\n },\n enumerable: true,\n configurable: true\n });\n Model.prototype.initSize = function (size) {\n var width = size.width, height = size.height;\n if (width) {\n this.component.layoutSize.set('width', width, true);\n }\n if (height) {\n this.component.layoutSize.set('height', height, true);\n }\n };\n Model.prototype.parse = function () {\n this.parseScale();\n this.parseLayoutSize(); // depends on scale\n this.renameTopLevelLayoutSize();\n this.parseSelection();\n this.parseProjection();\n this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n this.parseAxisAndHeader(); // depends on scale and layout size\n this.parseLegend(); // depends on scale, markDef\n this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n };\n Model.prototype.parseScale = function () {\n parse_3.parseScale(this);\n };\n Model.prototype.parseProjection = function () {\n parse_2.parseProjection(this);\n };\n /**\n * Rename top-level spec's size to be just width / height, ignoring model name.\n * This essentially merges the top-level spec's width/height signals with the width/height signals\n * to help us reduce redundant signals declaration.\n */\n Model.prototype.renameTopLevelLayoutSize = function () {\n if (this.getName('width') !== 'width') {\n this.renameLayoutSize(this.getName('width'), 'width');\n }\n if (this.getName('height') !== 'height') {\n this.renameLayoutSize(this.getName('height'), 'height');\n }\n };\n Model.prototype.parseLegend = function () {\n parse_1.parseLegend(this);\n };\n Model.prototype.assembleGroupStyle = function () {\n if (this.type === 'unit' || this.type === 'layer') {\n return 'cell';\n }\n return undefined;\n };\n Model.prototype.assembleLayoutSize = function () {\n if (this.type === 'unit' || this.type === 'layer') {\n return {\n width: this.getSizeSignalRef('width'),\n height: this.getSizeSignalRef('height')\n };\n }\n return undefined;\n };\n Model.prototype.assembleLayout = function () {\n if (!this.layout) {\n return undefined;\n }\n var _a = this.layout, align = _a.align, bounds = _a.bounds, center = _a.center, _b = _a.spacing, spacing = _b === void 0 ? {} : _b;\n return tslib_1.__assign({ padding: vega_util_1.isNumber(spacing) ? spacing : {\n row: spacing.row || 10,\n column: spacing.column || 10\n } }, this.assembleDefaultLayout(), (align ? { align: align } : {}), (bounds ? { bounds: bounds } : {}), (center ? { center: center } : {}));\n };\n Model.prototype.assembleDefaultLayout = function () {\n return {};\n };\n Model.prototype.assembleHeaderMarks = function () {\n var layoutHeaders = this.component.layoutHeaders;\n var headerMarks = [];\n for (var _i = 0, HEADER_CHANNELS_1 = index_1.HEADER_CHANNELS; _i < HEADER_CHANNELS_1.length; _i++) {\n var channel = HEADER_CHANNELS_1[_i];\n if (layoutHeaders[channel].title) {\n headerMarks.push(index_1.getTitleGroup(this, channel));\n }\n }\n for (var _a = 0, HEADER_CHANNELS_2 = index_1.HEADER_CHANNELS; _a < HEADER_CHANNELS_2.length; _a++) {\n var channel = HEADER_CHANNELS_2[_a];\n headerMarks = headerMarks.concat(index_1.getHeaderGroups(this, channel));\n }\n return headerMarks;\n };\n Model.prototype.assembleAxes = function () {\n return assemble_1.assembleAxes(this.component.axes, this.config);\n };\n Model.prototype.assembleLegends = function () {\n return assemble_3.assembleLegends(this);\n };\n Model.prototype.assembleProjections = function () {\n return assemble_4.assembleProjections(this);\n };\n Model.prototype.assembleTitle = function () {\n var title = tslib_1.__assign({}, title_1.extractTitleConfig(this.config.title).nonMark, this.title);\n if (title.text) {\n if (!util_1.contains(['unit', 'layer'], this.type)) {\n // As described in https://github.com/vega/vega-lite/issues/2875:\n // Due to vega/vega#960 (comment), we only support title's anchor for unit and layered spec for now.\n if (title.anchor && title.anchor !== 'start') {\n log.warn(log.message.cannotSetTitleAnchor(this.type));\n }\n title.anchor = 'start';\n }\n return util_1.keys(title).length > 0 ? title : undefined;\n }\n return undefined;\n };\n /**\n * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n */\n Model.prototype.assembleGroup = function (signals) {\n if (signals === void 0) { signals = []; }\n var group = {};\n signals = signals.concat(this.assembleSelectionSignals());\n if (signals.length > 0) {\n group.signals = signals;\n }\n var layout = this.assembleLayout();\n if (layout) {\n group.layout = layout;\n }\n group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n // Only include scales if this spec is top-level or if parent is facet.\n // (Otherwise, it will be merged with upper-level's scope.)\n var scales = (!this.parent || isFacetModel(this.parent)) ? assemble_5.assembleScales(this) : [];\n if (scales.length > 0) {\n group.scales = scales;\n }\n var axes = this.assembleAxes();\n if (axes.length > 0) {\n group.axes = axes;\n }\n var legends = this.assembleLegends();\n if (legends.length > 0) {\n group.legends = legends;\n }\n return group;\n };\n Model.prototype.hasDescendantWithFieldOnChannel = function (channel) {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (isUnitModel(child)) {\n if (child.channelHasField(channel)) {\n return true;\n }\n }\n else {\n if (child.hasDescendantWithFieldOnChannel(channel)) {\n return true;\n }\n }\n }\n return false;\n };\n Model.prototype.getName = function (text) {\n return util_1.varName((this.name ? this.name + '_' : '') + text);\n };\n /**\n * Request a data source name for the given data source type and mark that data source as required. This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n */\n Model.prototype.requestDataName = function (name) {\n var fullName = this.getName(name);\n // Increase ref count. This is critical because otherwise we won't create a data source.\n // We also increase the ref counts on OutputNode.getSource() calls.\n var refCounts = this.component.data.outputNodeRefCounts;\n refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n return fullName;\n };\n Model.prototype.getSizeSignalRef = function (sizeType) {\n if (isFacetModel(this.parent)) {\n var channel = sizeType === 'width' ? 'x' : 'y';\n var scaleComponent = this.component.scales[channel];\n if (scaleComponent && !scaleComponent.merged) { // independent scale\n var type = scaleComponent.get('type');\n var range = scaleComponent.get('range');\n if (scale_1.hasDiscreteDomain(type) && vega_schema_1.isVgRangeStep(range)) {\n var scaleName = scaleComponent.get('name');\n var domain = domain_1.assembleDomain(this, channel);\n var field = domain_1.getFieldFromDomain(domain);\n if (field) {\n var fieldRef = fielddef_1.vgField({ aggregate: 'distinct', field: field }, { expr: 'datum' });\n return {\n signal: assemble_2.sizeExpr(scaleName, scaleComponent, fieldRef)\n };\n }\n else {\n log.warn('Unknown field for ${channel}. Cannot calculate view size.');\n return null;\n }\n }\n }\n }\n return {\n signal: this.layoutSizeNameMap.get(this.getName(sizeType))\n };\n };\n /**\n * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n */\n Model.prototype.lookupDataSource = function (name) {\n var node = this.component.data.outputNodes[name];\n if (!node) {\n // Name not found in map so let's just return what we got.\n // This can happen if we already have the correct name.\n return name;\n }\n return node.getSource();\n };\n Model.prototype.getSizeName = function (oldSizeName) {\n return this.layoutSizeNameMap.get(oldSizeName);\n };\n Model.prototype.renameLayoutSize = function (oldName, newName) {\n this.layoutSizeNameMap.rename(oldName, newName);\n };\n Model.prototype.renameScale = function (oldName, newName) {\n this.scaleNameMap.rename(oldName, newName);\n };\n Model.prototype.renameProjection = function (oldName, newName) {\n this.projectionNameMap.rename(oldName, newName);\n };\n /**\n * @return scale name for a given channel after the scale has been parsed and named.\n */\n Model.prototype.scaleName = function (originalScaleName, parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a scale can't be renamed\n // before it has the original name.\n return this.getName(originalScaleName);\n }\n // If there is a scale for the channel, it should either\n // be in the scale component or exist in the name map\n if (\n // If there is a scale for the channel, there should be a local scale component for it\n (channel_1.isChannel(originalScaleName) && channel_1.isScaleChannel(originalScaleName) && this.component.scales[originalScaleName]) ||\n // in the scale name map (the scale get merged by its parent)\n this.scaleNameMap.has(this.getName(originalScaleName))) {\n return this.scaleNameMap.get(this.getName(originalScaleName));\n }\n return undefined;\n };\n /**\n * @return projection name after the projection has been parsed and named.\n */\n Model.prototype.projectionName = function (parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a projection can't be renamed\n // before it has the original name.\n return this.getName('projection');\n }\n if ((this.component.projection && !this.component.projection.merged) || this.projectionNameMap.has(this.getName('projection'))) {\n return this.projectionNameMap.get(this.getName('projection'));\n }\n return undefined;\n };\n /**\n * Traverse a model's hierarchy to get the scale component for a particular channel.\n */\n Model.prototype.getScaleComponent = function (channel) {\n /* istanbul ignore next: This is warning for debugging test */\n if (!this.component.scales) {\n throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n }\n var localScaleComponent = this.component.scales[channel];\n if (localScaleComponent && !localScaleComponent.merged) {\n return localScaleComponent;\n }\n return (this.parent ? this.parent.getScaleComponent(channel) : undefined);\n };\n /**\n * Traverse a model's hierarchy to get a particular selection component.\n */\n Model.prototype.getSelectionComponent = function (variableName, origName) {\n var sel = this.component.selection[variableName];\n if (!sel && this.parent) {\n sel = this.parent.getSelectionComponent(variableName, origName);\n }\n if (!sel) {\n throw new Error(log.message.selectionNotFound(origName));\n }\n return sel;\n };\n return Model;\n}());\nexports.Model = Model;\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nvar ModelWithField = /** @class */ (function (_super) {\n tslib_1.__extends(ModelWithField, _super);\n function ModelWithField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /** Get \"field\" reference for vega */\n ModelWithField.prototype.vgField = function (channel, opt) {\n if (opt === void 0) { opt = {}; }\n var fieldDef = this.fieldDef(channel);\n if (!fieldDef) {\n return undefined;\n }\n return fielddef_1.vgField(fieldDef, opt);\n };\n ModelWithField.prototype.reduceFieldDef = function (f, init, t) {\n return encoding_1.reduce(this.getMapping(), function (acc, cd, c) {\n var fieldDef = fielddef_1.getFieldDef(cd);\n if (fieldDef) {\n return f(acc, fieldDef, c);\n }\n return acc;\n }, init, t);\n };\n ModelWithField.prototype.forEachFieldDef = function (f, t) {\n encoding_1.forEach(this.getMapping(), function (cd, c) {\n var fieldDef = fielddef_1.getFieldDef(cd);\n if (fieldDef) {\n f(fieldDef, c);\n }\n }, t);\n };\n return ModelWithField;\n}(Model));\nexports.ModelWithField = ModelWithField;\n//# sourceMappingURL=model.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"../../util\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar model_1 = require(\"../model\");\nfunction assembleProjections(model) {\n if (model_1.isLayerModel(model) || model_1.isConcatModel(model) || model_1.isRepeatModel(model)) {\n return assembleProjectionsForModelAndChildren(model);\n }\n else {\n return assembleProjectionForModel(model);\n }\n}\nexports.assembleProjections = assembleProjections;\nfunction assembleProjectionsForModelAndChildren(model) {\n return model.children.reduce(function (projections, child) {\n return projections.concat(child.assembleProjections());\n }, assembleProjectionForModel(model));\n}\nexports.assembleProjectionsForModelAndChildren = assembleProjectionsForModelAndChildren;\nfunction assembleProjectionForModel(model) {\n var component = model.component.projection;\n if (!component || component.merged) {\n return [];\n }\n var projection = component.combine();\n var name = projection.name, rest = tslib_1.__rest(projection, [\"name\"]); // we need to extract name so that it is always present in the output and pass TS type validation\n var size = {\n signal: \"[\" + component.size.map(function (ref) { return ref.signal; }).join(', ') + \"]\"\n };\n var fit = component.data.reduce(function (sources, data) {\n var source = vega_schema_1.isVgSignalRef(data) ? data.signal : \"data('\" + model.lookupDataSource(data) + \"')\";\n if (!util_1.contains(sources, source)) {\n // build a unique list of sources\n sources.push(source);\n }\n return sources;\n }, []);\n if (fit.length <= 0) {\n throw new Error(\"Projection's fit didn't find any data sources\");\n }\n return [tslib_1.__assign({ name: name,\n size: size, fit: {\n signal: fit.length > 1 ? \"[\" + fit.join(', ') + \"]\" : fit[0]\n } }, rest)];\n}\nexports.assembleProjectionForModel = assembleProjectionForModel;\n//# sourceMappingURL=assemble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar split_1 = require(\"../split\");\nvar ProjectionComponent = /** @class */ (function (_super) {\n tslib_1.__extends(ProjectionComponent, _super);\n function ProjectionComponent(name, specifiedProjection, size, data) {\n var _this = _super.call(this, tslib_1.__assign({}, specifiedProjection), // all explicit properties of projection\n { name: name } // name as initial implicit property\n ) || this;\n _this.specifiedProjection = specifiedProjection;\n _this.size = size;\n _this.data = data;\n _this.merged = false;\n return _this;\n }\n return ProjectionComponent;\n}(split_1.Split));\nexports.ProjectionComponent = ProjectionComponent;\n//# sourceMappingURL=component.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar data_1 = require(\"../../data\");\nvar projection_1 = require(\"../../projection\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar model_1 = require(\"../model\");\nvar component_1 = require(\"./component\");\nfunction parseProjection(model) {\n if (model_1.isUnitModel(model)) {\n model.component.projection = parseUnitProjection(model);\n }\n else {\n // because parse happens from leaves up (unit specs before layer spec),\n // we can be sure that the above if statement has already occurred\n // and therefore we have access to child.component.projection\n // for each of model's children\n model.component.projection = parseNonUnitProjections(model);\n }\n}\nexports.parseProjection = parseProjection;\nfunction parseUnitProjection(model) {\n var specifiedProjection = model.specifiedProjection, config = model.config, hasProjection = model.hasProjection;\n if (hasProjection) {\n var data_2 = [];\n [[channel_1.LONGITUDE, channel_1.LATITUDE], [channel_1.LONGITUDE2, channel_1.LATITUDE2]].forEach(function (posssiblePair) {\n if (model.channelHasField(posssiblePair[0]) || model.channelHasField(posssiblePair[1])) {\n data_2.push({\n signal: model.getName(\"geojson_\" + data_2.length)\n });\n }\n });\n if (model.channelHasField(channel_1.SHAPE) && model.fieldDef(channel_1.SHAPE).type === type_1.GEOJSON) {\n data_2.push({\n signal: model.getName(\"geojson_\" + data_2.length)\n });\n }\n if (data_2.length === 0) {\n // main source is geojson, so we can just use that\n data_2.push(model.requestDataName(data_1.MAIN));\n }\n return new component_1.ProjectionComponent(model.projectionName(true), tslib_1.__assign({}, (config.projection || {}), (specifiedProjection || {})), [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')], data_2);\n }\n return undefined;\n}\nfunction mergeIfNoConflict(first, second) {\n var allPropertiesShared = util_1.every(projection_1.PROJECTION_PROPERTIES, function (prop) {\n // neither has the poperty\n if (!first.explicit.hasOwnProperty(prop) &&\n !second.explicit.hasOwnProperty(prop)) {\n return true;\n }\n // both have property and an equal value for property\n if (first.explicit.hasOwnProperty(prop) &&\n second.explicit.hasOwnProperty(prop) &&\n // some properties might be signals or objects and require hashing for comparison\n util_1.stringify(first.get(prop)) === util_1.stringify(second.get(prop))) {\n return true;\n }\n return false;\n });\n var size = util_1.stringify(first.size) === util_1.stringify(second.size);\n if (size) {\n if (allPropertiesShared) {\n return first;\n }\n else if (util_1.stringify(first.explicit) === util_1.stringify({})) {\n return second;\n }\n else if (util_1.stringify(second.explicit) === util_1.stringify({})) {\n return first;\n }\n }\n // if all properties don't match, let each unit spec have its own projection\n return null;\n}\nfunction parseNonUnitProjections(model) {\n if (model.children.length === 0) {\n return undefined;\n }\n var nonUnitProjection;\n var mergable = util_1.every(model.children, function (child) {\n parseProjection(child);\n var projection = child.component.projection;\n if (!projection) {\n // child layer does not use a projection\n return true;\n }\n else if (!nonUnitProjection) {\n // cached 'projection' is null, cache this one\n nonUnitProjection = projection;\n return true;\n }\n else {\n var merge = mergeIfNoConflict(nonUnitProjection, projection);\n if (merge) {\n nonUnitProjection = merge;\n }\n return !!merge;\n }\n });\n // it cached one and all other children share the same projection,\n if (nonUnitProjection && mergable) {\n // so we can elevate it to the layer level\n var name_1 = model.projectionName(true);\n var modelProjection_1 = new component_1.ProjectionComponent(name_1, nonUnitProjection.specifiedProjection, nonUnitProjection.size, util_1.duplicate(nonUnitProjection.data));\n // rename and assign all others as merged\n model.children.forEach(function (child) {\n if (child.component.projection) {\n modelProjection_1.data = modelProjection_1.data.concat(child.component.projection.data);\n child.renameProjection(child.component.projection.get('name'), name_1);\n child.component.projection.merged = true;\n }\n });\n return modelProjection_1;\n }\n return undefined;\n}\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar baseconcat_1 = require(\"./baseconcat\");\nvar buildmodel_1 = require(\"./buildmodel\");\nvar parse_1 = require(\"./layoutsize/parse\");\nvar RepeatModel = /** @class */ (function (_super) {\n tslib_1.__extends(RepeatModel, _super);\n function RepeatModel(spec, parent, parentGivenName, repeatValues, config) {\n var _this = _super.call(this, spec, parent, parentGivenName, config, repeatValues, spec.resolve) || this;\n _this.type = 'repeat';\n if (spec.resolve && spec.resolve.axis && (spec.resolve.axis.x === 'shared' || spec.resolve.axis.y === 'shared')) {\n log.warn(log.message.REPEAT_CANNOT_SHARE_AXIS);\n }\n _this.repeat = spec.repeat;\n _this.children = _this._initChildren(spec, _this.repeat, repeatValues, config);\n return _this;\n }\n RepeatModel.prototype._initChildren = function (spec, repeat, repeater, config) {\n var children = [];\n var row = repeat.row || [repeater ? repeater.row : null];\n var column = repeat.column || [repeater ? repeater.column : null];\n // cross product\n for (var _i = 0, row_1 = row; _i < row_1.length; _i++) {\n var rowField = row_1[_i];\n for (var _a = 0, column_1 = column; _a < column_1.length; _a++) {\n var columnField = column_1[_a];\n var name_1 = (rowField ? '_' + rowField : '') + (columnField ? '_' + columnField : '');\n var childRepeat = {\n row: rowField,\n column: columnField\n };\n children.push(buildmodel_1.buildModel(spec.spec, this, this.getName('child' + name_1), undefined, childRepeat, config, false));\n }\n }\n return children;\n };\n RepeatModel.prototype.parseLayoutSize = function () {\n parse_1.parseRepeatLayoutSize(this);\n };\n RepeatModel.prototype.assembleDefaultLayout = function () {\n return {\n columns: this.repeat && this.repeat.column ? this.repeat.column.length : 1,\n bounds: 'full',\n align: 'all'\n };\n };\n return RepeatModel;\n}(baseconcat_1.BaseConcatModel));\nexports.RepeatModel = RepeatModel;\n//# sourceMappingURL=repeat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar fielddef_1 = require(\"../fielddef\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar sort_1 = require(\"../sort\");\nfunction replaceRepeaterInFacet(facet, repeater) {\n return replaceRepeater(facet, repeater);\n}\nexports.replaceRepeaterInFacet = replaceRepeaterInFacet;\nfunction replaceRepeaterInEncoding(encoding, repeater) {\n return replaceRepeater(encoding, repeater);\n}\nexports.replaceRepeaterInEncoding = replaceRepeaterInEncoding;\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeat(o, repeater) {\n if (fielddef_1.isRepeatRef(o.field)) {\n if (o.field.repeat in repeater) {\n // any needed to calm down ts compiler\n return tslib_1.__assign({}, o, { field: repeater[o.field.repeat] });\n }\n else {\n log.warn(log.message.noSuchRepeatedValue(o.field.repeat));\n return undefined;\n }\n }\n return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n fieldDef = replaceRepeat(fieldDef, repeater);\n if (fieldDef === undefined) {\n // the field def should be ignored\n return undefined;\n }\n if (fieldDef.sort && sort_1.isSortField(fieldDef.sort)) {\n var sort = replaceRepeat(fieldDef.sort, repeater);\n fieldDef = tslib_1.__assign({}, fieldDef, (sort ? { sort: sort } : {}));\n }\n return fieldDef;\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n if (fielddef_1.isFieldDef(channelDef)) {\n var fd = replaceRepeaterInFieldDef(channelDef, repeater);\n if (fd) {\n return fd;\n }\n else if (fielddef_1.isConditionalDef(channelDef)) {\n return { condition: channelDef.condition };\n }\n }\n else {\n if (fielddef_1.hasConditionalFieldDef(channelDef)) {\n var fd = replaceRepeaterInFieldDef(channelDef.condition, repeater);\n if (fd) {\n return tslib_1.__assign({}, channelDef, { condition: fd });\n }\n else {\n var condition = channelDef.condition, channelDefWithoutCondition = tslib_1.__rest(channelDef, [\"condition\"]);\n return channelDefWithoutCondition;\n }\n }\n return channelDef;\n }\n return undefined;\n}\nfunction replaceRepeater(mapping, repeater) {\n var out = {};\n for (var channel in mapping) {\n if (mapping.hasOwnProperty(channel)) {\n var channelDef = mapping[channel];\n if (vega_util_1.isArray(channelDef)) {\n // array cannot have condition\n out[channel] = channelDef.map(function (cd) { return replaceRepeaterInChannelDef(cd, repeater); })\n .filter(function (cd) { return cd; });\n }\n else {\n var cd = replaceRepeaterInChannelDef(channelDef, repeater);\n if (cd) {\n out[channel] = cd;\n }\n }\n }\n }\n return out;\n}\n//# sourceMappingURL=repeater.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../channel\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar util_1 = require(\"../util\");\nvar model_1 = require(\"./model\");\nfunction defaultScaleResolve(channel, model) {\n if (model_1.isLayerModel(model) || model_1.isFacetModel(model)) {\n return 'shared';\n }\n else if (model_1.isConcatModel(model) || model_1.isRepeatModel(model)) {\n return util_1.contains(channel_1.POSITION_SCALE_CHANNELS, channel) ? 'independent' : 'shared';\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('invalid model type for resolve');\n}\nexports.defaultScaleResolve = defaultScaleResolve;\nfunction parseGuideResolve(resolve, channel) {\n var channelScaleResolve = resolve.scale[channel];\n var guide = util_1.contains(channel_1.POSITION_SCALE_CHANNELS, channel) ? 'axis' : 'legend';\n if (channelScaleResolve === 'independent') {\n if (resolve[guide][channel] === 'shared') {\n log.warn(log.message.independentScaleMeansIndependentGuide(channel));\n }\n return 'independent';\n }\n return resolve[guide][channel] || 'shared';\n}\nexports.parseGuideResolve = parseGuideResolve;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"../../util\");\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar model_1 = require(\"../model\");\nvar selection_1 = require(\"../selection/selection\");\nvar domain_1 = require(\"./domain\");\nfunction assembleScales(model) {\n if (model_1.isLayerModel(model) || model_1.isConcatModel(model) || model_1.isRepeatModel(model)) {\n // For concat / layer / repeat, include scales of children too\n return model.children.reduce(function (scales, child) {\n return scales.concat(assembleScales(child));\n }, assembleScalesForModel(model));\n }\n else {\n // For facet, child scales would not be included in the parent's scope.\n // For unit, there is no child.\n return assembleScalesForModel(model);\n }\n}\nexports.assembleScales = assembleScales;\nfunction assembleScalesForModel(model) {\n return util_1.keys(model.component.scales).reduce(function (scales, channel) {\n var scaleComponent = model.component.scales[channel];\n if (scaleComponent.merged) {\n // Skipped merged scales\n return scales;\n }\n var scale = scaleComponent.combine();\n // need to separate const and non const object destruction\n var domainRaw = scale.domainRaw, range = scale.range;\n var name = scale.name, type = scale.type, _d = scale.domainRaw, _r = scale.range, otherScaleProps = tslib_1.__rest(scale, [\"name\", \"type\", \"domainRaw\", \"range\"]);\n range = assembleScaleRange(range, name, model, channel);\n // As scale parsing occurs before selection parsing, a temporary signal\n // is used for domainRaw. Here, we detect if this temporary signal\n // is set, and replace it with the correct domainRaw signal.\n // For more information, see isRawSelectionDomain in selection.ts.\n if (domainRaw && selection_1.isRawSelectionDomain(domainRaw)) {\n domainRaw = selection_1.selectionScaleDomain(model, domainRaw);\n }\n scales.push(tslib_1.__assign({ name: name,\n type: type, domain: domain_1.assembleDomain(model, channel) }, (domainRaw ? { domainRaw: domainRaw } : {}), { range: range }, otherScaleProps));\n return scales;\n }, []);\n}\nexports.assembleScalesForModel = assembleScalesForModel;\nfunction assembleScaleRange(scaleRange, scaleName, model, channel) {\n // add signals to x/y range\n if (channel === 'x' || channel === 'y') {\n if (vega_schema_1.isVgRangeStep(scaleRange)) {\n // For x/y range step, use a signal created in layout assemble instead of a constant range step.\n return {\n step: { signal: scaleName + '_step' }\n };\n }\n else if (vega_util_1.isArray(scaleRange) && scaleRange.length === 2) {\n var r0 = scaleRange[0];\n var r1 = scaleRange[1];\n if (r0 === 0 && vega_schema_1.isVgSignalRef(r1)) {\n // Replace width signal just in case it is renamed.\n return [0, { signal: model.getSizeName(r1.signal) }];\n }\n else if (vega_schema_1.isVgSignalRef(r0) && r1 === 0) {\n // Replace height signal just in case it is renamed.\n return [{ signal: model.getSizeName(r0.signal) }, 0];\n }\n }\n }\n return scaleRange;\n}\nexports.assembleScaleRange = assembleScaleRange;\n//# sourceMappingURL=assemble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar split_1 = require(\"../split\");\nvar ScaleComponent = /** @class */ (function (_super) {\n tslib_1.__extends(ScaleComponent, _super);\n function ScaleComponent(name, typeWithExplicit) {\n var _this = _super.call(this, {}, // no initial explicit property\n { name: name } // name as initial implicit property\n ) || this;\n _this.merged = false;\n _this.domains = [];\n _this.setWithExplicit('type', typeWithExplicit);\n return _this;\n }\n return ScaleComponent;\n}(split_1.Split));\nexports.ScaleComponent = ScaleComponent;\n//# sourceMappingURL=component.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar aggregate_1 = require(\"../../aggregate\");\nvar bin_1 = require(\"../../bin\");\nvar channel_1 = require(\"../../channel\");\nvar data_1 = require(\"../../data\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar sort_1 = require(\"../../sort\");\nvar util = tslib_1.__importStar(require(\"../../util\"));\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar common_1 = require(\"../common\");\nvar calculate_1 = require(\"../data/calculate\");\nvar optimize_1 = require(\"../data/optimize\");\nvar model_1 = require(\"../model\");\nvar selection_1 = require(\"../selection/selection\");\nfunction parseScaleDomain(model) {\n if (model_1.isUnitModel(model)) {\n parseUnitScaleDomain(model);\n }\n else {\n parseNonUnitScaleDomain(model);\n }\n}\nexports.parseScaleDomain = parseScaleDomain;\nfunction parseUnitScaleDomain(model) {\n var scales = model.specifiedScales;\n var localScaleComponents = model.component.scales;\n util.keys(localScaleComponents).forEach(function (channel) {\n var specifiedScale = scales[channel];\n var specifiedDomain = specifiedScale ? specifiedScale.domain : undefined;\n var domains = parseDomainForChannel(model, channel);\n var localScaleCmpt = localScaleComponents[channel];\n localScaleCmpt.domains = domains;\n if (scale_1.isSelectionDomain(specifiedDomain)) {\n // As scale parsing occurs before selection parsing, we use a temporary\n // signal here and append the scale.domain definition. This is replaced\n // with the correct domainRaw signal during scale assembly.\n // For more information, see isRawSelectionDomain in selection.ts.\n // FIXME: replace this with a special property in the scaleComponent\n localScaleCmpt.set('domainRaw', {\n signal: selection_1.SELECTION_DOMAIN + util.hash(specifiedDomain)\n }, true);\n }\n if (model.component.data.isFaceted) {\n // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n var facetParent = model;\n while (!model_1.isFacetModel(facetParent) && facetParent.parent) {\n facetParent = facetParent.parent;\n }\n var resolve = facetParent.component.resolve.scale[channel];\n if (resolve === 'shared') {\n for (var _i = 0, domains_1 = domains; _i < domains_1.length; _i++) {\n var domain = domains_1[_i];\n // Replace the scale domain with data output from a cloned subtree after the facet.\n if (vega_schema_1.isDataRefDomain(domain)) {\n // use data from cloned subtree (which is the same as data but with a prefix added once)\n domain.data = optimize_1.FACET_SCALE_PREFIX + domain.data.replace(optimize_1.FACET_SCALE_PREFIX, '');\n }\n }\n }\n }\n });\n}\nfunction parseNonUnitScaleDomain(model) {\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n parseScaleDomain(child);\n }\n var localScaleComponents = model.component.scales;\n util.keys(localScaleComponents).forEach(function (channel) {\n var domains;\n var domainRaw = null;\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n var childComponent = child.component.scales[channel];\n if (childComponent) {\n if (domains === undefined) {\n domains = childComponent.domains;\n }\n else {\n domains = domains.concat(childComponent.domains);\n }\n var dr = childComponent.get('domainRaw');\n if (domainRaw && dr && domainRaw.signal !== dr.signal) {\n log.warn('The same selection must be used to override scale domains in a layered view.');\n }\n domainRaw = dr;\n }\n }\n localScaleComponents[channel].domains = domains;\n if (domainRaw) {\n localScaleComponents[channel].set('domainRaw', domainRaw, true);\n }\n });\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n if (domain === 'unaggregated') {\n var _a = canUseUnaggregatedDomain(fieldDef, scaleType), valid = _a.valid, reason = _a.reason;\n if (!valid) {\n log.warn(reason);\n return undefined;\n }\n }\n else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n // Apply config if domain is not specified.\n var valid = canUseUnaggregatedDomain(fieldDef, scaleType).valid;\n if (valid) {\n return 'unaggregated';\n }\n }\n return domain;\n}\nfunction parseDomainForChannel(model, channel) {\n var scaleType = model.getScaleComponent(channel).get('type');\n var domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.fieldDef(channel), scaleType, model.config.scale);\n if (domain !== model.scaleDomain(channel)) {\n model.specifiedScales[channel] = tslib_1.__assign({}, model.specifiedScales[channel], { domain: domain });\n }\n // If channel is either X or Y then union them with X2 & Y2 if they exist\n if (channel === 'x' && model.channelHasField('x2')) {\n if (model.channelHasField('x')) {\n return parseSingleChannelDomain(scaleType, domain, model, 'x').concat(parseSingleChannelDomain(scaleType, domain, model, 'x2'));\n }\n else {\n return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n }\n }\n else if (channel === 'y' && model.channelHasField('y2')) {\n if (model.channelHasField('y')) {\n return parseSingleChannelDomain(scaleType, domain, model, 'y').concat(parseSingleChannelDomain(scaleType, domain, model, 'y2'));\n }\n else {\n return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n }\n }\n return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nexports.parseDomainForChannel = parseDomainForChannel;\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n return domain.map(function (v) {\n var data = fielddef_1.valueExpr(v, { timeUnit: timeUnit, type: type });\n return { signal: \"{data: \" + data + \"}\" };\n });\n}\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n var fieldDef = model.fieldDef(channel);\n if (domain && domain !== 'unaggregated' && !scale_1.isSelectionDomain(domain)) { // explicit value\n var type = fieldDef.type, timeUnit = fieldDef.timeUnit;\n if (type === 'temporal' || timeUnit) {\n return mapDomainToDataSignal(domain, type, timeUnit);\n }\n return [domain];\n }\n var stack = model.stack;\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === 'normalize') {\n return [[0, 1]];\n }\n var data = model.requestDataName(data_1.MAIN);\n return [{\n data: data,\n field: model.vgField(channel, { suffix: 'start' })\n }, {\n data: data,\n field: model.vgField(channel, { suffix: 'end' })\n }];\n }\n var sort = channel_1.isScaleChannel(channel) ? domainSort(model, channel, scaleType) : undefined;\n if (domain === 'unaggregated') {\n var data = model.requestDataName(data_1.MAIN);\n var field = fieldDef.field;\n return [{\n data: data,\n field: fielddef_1.vgField({ field: field, aggregate: 'min' })\n }, {\n data: data,\n field: fielddef_1.vgField({ field: field, aggregate: 'max' })\n }];\n }\n else if (fieldDef.bin) { // bin\n if (scale_1.isBinScale(scaleType)) {\n var signal = model.getName(bin_1.binToString(fieldDef.bin) + \"_\" + fieldDef.field + \"_bins\");\n return [{ signal: \"sequence(\" + signal + \".start, \" + signal + \".stop + \" + signal + \".step, \" + signal + \".step)\" }];\n }\n if (scale_1.hasDiscreteDomain(scaleType)) {\n // ordinal bin scale takes domain from bin_range, ordered by bin start\n // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n return [{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(data_1.MAIN) : model.requestDataName(data_1.RAW),\n // Use range if we added it and the scale does not support computing a range as a signal.\n field: model.vgField(channel, common_1.binRequiresRange(fieldDef, channel) ? { binSuffix: 'range' } : {}),\n // we have to use a sort object if sort = true to make the sort correct by bin start\n sort: sort === true || !sort_1.isSortField(sort) ? {\n field: model.vgField(channel, {}),\n op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n } : sort\n }];\n }\n else { // continuous scales\n if (channel === 'x' || channel === 'y') {\n if (bin_1.isBinParams(fieldDef.bin) && fieldDef.bin.extent) {\n return [fieldDef.bin.extent];\n }\n // X/Y position have to include start and end for non-ordinal scale\n var data = model.requestDataName(data_1.MAIN);\n return [{\n data: data,\n field: model.vgField(channel, {})\n }, {\n data: data,\n field: model.vgField(channel, { binSuffix: 'end' })\n }];\n }\n else {\n // TODO: use bin_mid\n return [{\n data: model.requestDataName(data_1.MAIN),\n field: model.vgField(channel, {})\n }];\n }\n }\n }\n else if (sort) {\n return [{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: util.isBoolean(sort) ? model.requestDataName(data_1.MAIN) : model.requestDataName(data_1.RAW),\n field: model.vgField(channel),\n sort: sort\n }];\n }\n else {\n return [{\n data: model.requestDataName(data_1.MAIN),\n field: model.vgField(channel)\n }];\n }\n}\nfunction domainSort(model, channel, scaleType) {\n if (!scale_1.hasDiscreteDomain(scaleType)) {\n return undefined;\n }\n var fieldDef = model.fieldDef(channel);\n var sort = fieldDef.sort;\n // if the sort is specified with array, use the derived sort index field\n if (sort_1.isSortArray(sort)) {\n return {\n op: 'min',\n field: calculate_1.sortArrayIndexField(fieldDef, channel),\n order: 'ascending'\n };\n }\n // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n if (sort_1.isSortField(sort)) {\n // flatten nested fields\n return tslib_1.__assign({}, sort, (sort.field ? { field: util.replacePathInField(sort.field) } : {}));\n }\n if (sort === 'descending') {\n return {\n op: 'min',\n field: model.vgField(channel),\n order: 'descending'\n };\n }\n if (util.contains(['ascending', undefined /* default =ascending*/], sort)) {\n return true;\n }\n // sort == null\n return undefined;\n}\nexports.domainSort = domainSort;\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditons applies:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nfunction canUseUnaggregatedDomain(fieldDef, scaleType) {\n if (!fieldDef.aggregate) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainHasNoEffectForRawField(fieldDef)\n };\n }\n if (!aggregate_1.SHARED_DOMAIN_OP_INDEX[fieldDef.aggregate]) {\n return {\n valid: false,\n reason: log.message.unaggregateDomainWithNonSharedDomainOp(fieldDef.aggregate)\n };\n }\n if (fieldDef.type === 'quantitative') {\n if (scaleType === 'log') {\n return {\n valid: false,\n reason: log.message.unaggregatedDomainWithLogScale(fieldDef)\n };\n }\n }\n return { valid: true };\n}\nexports.canUseUnaggregatedDomain = canUseUnaggregatedDomain;\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nfunction mergeDomains(domains) {\n var uniqueDomains = util.unique(domains.map(function (domain) {\n // ignore sort property when computing the unique domains\n if (vega_schema_1.isDataRefDomain(domain)) {\n var _s = domain.sort, domainWithoutSort = tslib_1.__rest(domain, [\"sort\"]);\n return domainWithoutSort;\n }\n return domain;\n }), util.hash);\n var sorts = util.unique(domains.map(function (d) {\n if (vega_schema_1.isDataRefDomain(d)) {\n var s = d.sort;\n if (s !== undefined && !util.isBoolean(s)) {\n if (s.op === 'count') {\n // let's make sure that if op is count, we don't use a field\n delete s.field;\n }\n if (s.order === 'ascending') {\n // drop order: ascending as it is the default\n delete s.order;\n }\n }\n return s;\n }\n return undefined;\n }).filter(function (s) { return s !== undefined; }), util.hash);\n if (uniqueDomains.length === 1) {\n var domain = domains[0];\n if (vega_schema_1.isDataRefDomain(domain) && sorts.length > 0) {\n var sort_2 = sorts[0];\n if (sorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort_2 = true;\n }\n return tslib_1.__assign({}, domain, { sort: sort_2 });\n }\n return domain;\n }\n // only keep simple sort properties that work with unioned domains\n var simpleSorts = util.unique(sorts.map(function (s) {\n if (s === true) {\n return s;\n }\n if (s.op === 'count') {\n return s;\n }\n log.warn(log.message.domainSortDropped(s));\n return true;\n }), util.hash);\n var sort = undefined;\n if (simpleSorts.length === 1) {\n sort = simpleSorts[0];\n }\n else if (simpleSorts.length > 1) {\n log.warn(log.message.MORE_THAN_ONE_SORT);\n sort = true;\n }\n var allData = util.unique(domains.map(function (d) {\n if (vega_schema_1.isDataRefDomain(d)) {\n return d.data;\n }\n return null;\n }), function (x) { return x; });\n if (allData.length === 1 && allData[0] !== null) {\n // create a union domain of different fields with a single data source\n var domain = tslib_1.__assign({ data: allData[0], fields: uniqueDomains.map(function (d) { return d.field; }) }, (sort ? { sort: sort } : {}));\n return domain;\n }\n return tslib_1.__assign({ fields: uniqueDomains }, (sort ? { sort: sort } : {}));\n}\nexports.mergeDomains = mergeDomains;\n/**\n * Return a field if a scale single field.\n * Return `undefined` otherwise.\n *\n */\nfunction getFieldFromDomain(domain) {\n if (vega_schema_1.isDataRefDomain(domain) && vega_util_1.isString(domain.field)) {\n return domain.field;\n }\n else if (vega_schema_1.isDataRefUnionedDomain(domain)) {\n var field = void 0;\n for (var _i = 0, _a = domain.fields; _i < _a.length; _i++) {\n var nonUnionDomain = _a[_i];\n if (vega_schema_1.isDataRefDomain(nonUnionDomain) && vega_util_1.isString(nonUnionDomain.field)) {\n if (!field) {\n field = nonUnionDomain.field;\n }\n else if (field !== nonUnionDomain.field) {\n log.warn('Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.');\n return field;\n }\n }\n }\n log.warn('Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect.');\n return field;\n }\n else if (vega_schema_1.isFieldRefUnionDomain(domain)) {\n log.warn('Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.');\n var field = domain.fields[0];\n return vega_util_1.isString(field) ? field : undefined;\n }\n return undefined;\n}\nexports.getFieldFromDomain = getFieldFromDomain;\nfunction assembleDomain(model, channel) {\n var scaleComponent = model.component.scales[channel];\n var domains = scaleComponent.domains.map(function (domain) {\n // Correct references to data as the original domain's data was determined\n // in parseScale, which happens before parseData. Thus the original data\n // reference can be incorrect.\n if (vega_schema_1.isDataRefDomain(domain)) {\n domain.data = model.lookupDataSource(domain.data);\n }\n return domain;\n });\n // domains is an array that has to be merged into a single vega domain\n return mergeDomains(domains);\n}\nexports.assembleDomain = assembleDomain;\n//# sourceMappingURL=domain.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"../../channel\");\nvar fielddef_1 = require(\"../../fielddef\");\nvar mark_1 = require(\"../../mark\");\nvar scale_1 = require(\"../../scale\");\nvar type_1 = require(\"../../type\");\nvar util_1 = require(\"../../util\");\nvar model_1 = require(\"../model\");\nvar resolve_1 = require(\"../resolve\");\nvar split_1 = require(\"../split\");\nvar component_1 = require(\"./component\");\nvar domain_1 = require(\"./domain\");\nvar properties_1 = require(\"./properties\");\nvar range_1 = require(\"./range\");\nvar type_2 = require(\"./type\");\nfunction parseScale(model) {\n parseScaleCore(model);\n domain_1.parseScaleDomain(model);\n for (var _i = 0, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES_1 = scale_1.NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES; _i < NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES_1.length; _i++) {\n var prop = NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES_1[_i];\n properties_1.parseScaleProperty(model, prop);\n }\n // range depends on zero\n range_1.parseScaleRange(model);\n}\nexports.parseScale = parseScale;\nfunction parseScaleCore(model) {\n if (model_1.isUnitModel(model)) {\n model.component.scales = parseUnitScaleCore(model);\n }\n else {\n model.component.scales = parseNonUnitScaleCore(model);\n }\n}\nexports.parseScaleCore = parseScaleCore;\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n var encoding = model.encoding, config = model.config, mark = model.mark;\n return channel_1.SCALE_CHANNELS.reduce(function (scaleComponents, channel) {\n var fieldDef;\n var specifiedScale = undefined;\n var channelDef = encoding[channel];\n // Don't generate scale for shape of geoshape\n if (fielddef_1.isFieldDef(channelDef) && mark === mark_1.GEOSHAPE &&\n channel === channel_1.SHAPE && channelDef.type === type_1.GEOJSON) {\n return scaleComponents;\n }\n if (fielddef_1.isFieldDef(channelDef)) {\n fieldDef = channelDef;\n specifiedScale = channelDef.scale;\n }\n else if (fielddef_1.hasConditionalFieldDef(channelDef)) {\n fieldDef = channelDef.condition;\n specifiedScale = channelDef.condition['scale']; // We use ['scale'] since we know that channel here has scale for sure\n }\n else if (channel === channel_1.X) {\n fieldDef = fielddef_1.getFieldDef(encoding.x2);\n }\n else if (channel === channel_1.Y) {\n fieldDef = fielddef_1.getFieldDef(encoding.y2);\n }\n if (fieldDef && specifiedScale !== null && specifiedScale !== false) {\n specifiedScale = specifiedScale || {};\n var specifiedScaleType = specifiedScale.type;\n var sType = type_2.scaleType(specifiedScale.type, channel, fieldDef, mark, config.scale);\n scaleComponents[channel] = new component_1.ScaleComponent(model.scaleName(channel + '', true), { value: sType, explicit: specifiedScaleType === sType });\n }\n return scaleComponents;\n }, {});\n}\nvar scaleTypeTieBreaker = split_1.tieBreakByComparing(function (st1, st2) { return (scale_1.scaleTypePrecedence(st1) - scale_1.scaleTypePrecedence(st2)); });\nfunction parseNonUnitScaleCore(model) {\n var scaleComponents = model.component.scales = {};\n var scaleTypeWithExplicitIndex = {};\n var resolve = model.component.resolve;\n var _loop_1 = function (child) {\n parseScaleCore(child);\n // Instead of always merging right away -- check if it is compatible to merge first!\n util_1.keys(child.component.scales).forEach(function (channel) {\n // if resolve is undefined, set default first\n resolve.scale[channel] = resolve.scale[channel] || resolve_1.defaultScaleResolve(channel, model);\n if (resolve.scale[channel] === 'shared') {\n var explicitScaleType = scaleTypeWithExplicitIndex[channel];\n var childScaleType = child.component.scales[channel].getWithExplicit('type');\n if (explicitScaleType) {\n if (scale_1.scaleCompatible(explicitScaleType.value, childScaleType.value)) {\n // merge scale component if type are compatible\n scaleTypeWithExplicitIndex[channel] = split_1.mergeValuesWithExplicit(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n }\n else {\n // Otherwise, update conflicting channel to be independent\n resolve.scale[channel] = 'independent';\n // Remove from the index so they don't get merged\n delete scaleTypeWithExplicitIndex[channel];\n }\n }\n else {\n scaleTypeWithExplicitIndex[channel] = childScaleType;\n }\n }\n });\n };\n // Parse each child scale and determine if a particular channel can be merged.\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n _loop_1(child);\n }\n // Merge each channel listed in the index\n util_1.keys(scaleTypeWithExplicitIndex).forEach(function (channel) {\n // Create new merged scale component\n var name = model.scaleName(channel, true);\n var typeWithExplicit = scaleTypeWithExplicitIndex[channel];\n scaleComponents[channel] = new component_1.ScaleComponent(name, typeWithExplicit);\n // rename each child and mark them as merged\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n var childScale = child.component.scales[channel];\n if (childScale) {\n child.renameScale(childScale.get('name'), name);\n childScale.merged = true;\n }\n }\n });\n return scaleComponents;\n}\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar util = tslib_1.__importStar(require(\"../../util\"));\nvar util_1 = require(\"../../util\");\nvar model_1 = require(\"../model\");\nvar split_1 = require(\"../split\");\nvar range_1 = require(\"./range\");\nfunction parseScaleProperty(model, property) {\n if (model_1.isUnitModel(model)) {\n parseUnitScaleProperty(model, property);\n }\n else {\n parseNonUnitScaleProperty(model, property);\n }\n}\nexports.parseScaleProperty = parseScaleProperty;\nfunction parseUnitScaleProperty(model, property) {\n var localScaleComponents = model.component.scales;\n util_1.keys(localScaleComponents).forEach(function (channel) {\n var specifiedScale = model.specifiedScales[channel];\n var localScaleCmpt = localScaleComponents[channel];\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var fieldDef = model.fieldDef(channel);\n var config = model.config;\n var specifiedValue = specifiedScale[property];\n var sType = mergedScaleCmpt.get('type');\n var supportedByScaleType = scale_1.scaleTypeSupportProperty(sType, property);\n var channelIncompatability = scale_1.channelScalePropertyIncompatability(channel, property);\n if (specifiedValue !== undefined) {\n // If there is a specified value, check if it is compatible with scale type and channel\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(sType, property, channel));\n }\n else if (channelIncompatability) { // channel\n log.warn(channelIncompatability);\n }\n }\n if (supportedByScaleType && channelIncompatability === undefined) {\n if (specifiedValue !== undefined) {\n // copyKeyFromObject ensure type safety\n localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n }\n else {\n var value = getDefaultValue(property, channel, fieldDef, mergedScaleCmpt.get('type'), mergedScaleCmpt.get('padding'), mergedScaleCmpt.get('paddingInner'), specifiedScale.domain, model.markDef, config);\n if (value !== undefined) {\n localScaleCmpt.set(property, value, false);\n }\n }\n }\n });\n}\n// Note: This method is used in Voyager.\nfunction getDefaultValue(property, channel, fieldDef, scaleType, scalePadding, scalePaddingInner, specifiedDomain, markDef, config) {\n var scaleConfig = config.scale;\n // If we have default rule-base, determine default value first\n switch (property) {\n case 'nice':\n return nice(scaleType, channel, fieldDef);\n case 'padding':\n return padding(channel, scaleType, scaleConfig, fieldDef, markDef, config.bar);\n case 'paddingInner':\n return paddingInner(scalePadding, channel, scaleConfig);\n case 'paddingOuter':\n return paddingOuter(scalePadding, channel, scaleType, scalePaddingInner, scaleConfig);\n case 'reverse':\n return reverse(scaleType, fieldDef.sort);\n case 'zero':\n return zero(channel, fieldDef, specifiedDomain, markDef);\n }\n // Otherwise, use scale config\n return scaleConfig[property];\n}\nexports.getDefaultValue = getDefaultValue;\nfunction parseNonUnitScaleProperty(model, property) {\n var localScaleComponents = model.component.scales;\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (property === 'range') {\n range_1.parseScaleRange(child);\n }\n else {\n parseScaleProperty(child, property);\n }\n }\n util_1.keys(localScaleComponents).forEach(function (channel) {\n var valueWithExplicit;\n for (var _i = 0, _a = model.children; _i < _a.length; _i++) {\n var child = _a[_i];\n var childComponent = child.component.scales[channel];\n if (childComponent) {\n var childValueWithExplicit = childComponent.getWithExplicit(property);\n valueWithExplicit = split_1.mergeValuesWithExplicit(valueWithExplicit, childValueWithExplicit, property, 'scale', split_1.tieBreakByComparing(function (v1, v2) {\n switch (property) {\n case 'range':\n // For range step, prefer larger step\n if (v1.step && v2.step) {\n return v1.step - v2.step;\n }\n return 0;\n // TODO: precedence rule for other properties\n }\n return 0;\n }));\n }\n }\n localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n });\n}\nexports.parseNonUnitScaleProperty = parseNonUnitScaleProperty;\nfunction nice(scaleType, channel, fieldDef) {\n if (fieldDef.bin || util.contains([scale_1.ScaleType.TIME, scale_1.ScaleType.UTC], scaleType)) {\n return undefined;\n }\n return util.contains([channel_1.X, channel_1.Y], channel); // return true for quantitative X/Y unless binned\n}\nexports.nice = nice;\nfunction padding(channel, scaleType, scaleConfig, fieldDef, markDef, barConfig) {\n if (util.contains([channel_1.X, channel_1.Y], channel)) {\n if (scale_1.isContinuousToContinuous(scaleType)) {\n if (scaleConfig.continuousPadding !== undefined) {\n return scaleConfig.continuousPadding;\n }\n var type = markDef.type, orient = markDef.orient;\n if (type === 'bar' && !fieldDef.bin) {\n if ((orient === 'vertical' && channel === 'x') ||\n (orient === 'horizontal' && channel === 'y')) {\n return barConfig.continuousBandSize;\n }\n }\n }\n if (scaleType === scale_1.ScaleType.POINT) {\n return scaleConfig.pointPadding;\n }\n }\n return undefined;\n}\nexports.padding = padding;\nfunction paddingInner(paddingValue, channel, scaleConfig) {\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingInner.\n return undefined;\n }\n if (util.contains([channel_1.X, channel_1.Y], channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n return scaleConfig.bandPaddingInner;\n }\n return undefined;\n}\nexports.paddingInner = paddingInner;\nfunction paddingOuter(paddingValue, channel, scaleType, paddingInnerValue, scaleConfig) {\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingOuter.\n return undefined;\n }\n if (util.contains([channel_1.X, channel_1.Y], channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n if (scaleType === scale_1.ScaleType.BAND) {\n if (scaleConfig.bandPaddingOuter !== undefined) {\n return scaleConfig.bandPaddingOuter;\n }\n /* By default, paddingOuter is paddingInner / 2. The reason is that\n size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n and we want the width/height to be integer by default.\n Note that step (by default) and cardinality are integers.) */\n return paddingInnerValue / 2;\n }\n }\n return undefined;\n}\nexports.paddingOuter = paddingOuter;\nfunction reverse(scaleType, sort) {\n if (scale_1.hasContinuousDomain(scaleType) && sort === 'descending') {\n // For continuous domain scales, Vega does not support domain sort.\n // Thus, we reverse range instead if sort is descending\n return true;\n }\n return undefined;\n}\nexports.reverse = reverse;\nfunction zero(channel, fieldDef, specifiedScale, markDef) {\n // If users explicitly provide a domain range, we should not augment zero as that will be unexpected.\n var hasCustomDomain = !!specifiedScale && specifiedScale !== 'unaggregated';\n if (hasCustomDomain) {\n return false;\n }\n // If there is no custom domain, return true only for the following cases:\n // 1) using quantitative field with size\n // While this can be either ratio or interval fields, our assumption is that\n // ratio are more common.\n if (channel === 'size' && fieldDef.type === 'quantitative') {\n return true;\n }\n // 2) non-binned, quantitative x-scale or y-scale\n // (For binning, we should not include zero by default because binning are calculated without zero.)\n if (!fieldDef.bin && util.contains([channel_1.X, channel_1.Y], channel)) {\n var orient = markDef.orient, type = markDef.type;\n if (util_1.contains(['bar', 'area', 'line', 'trail'], type)) {\n if ((orient === 'horizontal' && channel === 'y') ||\n (orient === 'vertical' && channel === 'x')) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\nexports.zero = zero;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar scale_2 = require(\"../../scale\");\nvar util = tslib_1.__importStar(require(\"../../util\"));\nvar vega_schema_1 = require(\"../../vega.schema\");\nvar model_1 = require(\"../model\");\nvar split_1 = require(\"../split\");\nvar properties_1 = require(\"./properties\");\nexports.RANGE_PROPERTIES = ['range', 'rangeStep', 'scheme'];\nfunction parseScaleRange(model) {\n if (model_1.isUnitModel(model)) {\n parseUnitScaleRange(model);\n }\n else {\n properties_1.parseNonUnitScaleProperty(model, 'range');\n }\n}\nexports.parseScaleRange = parseScaleRange;\nfunction parseUnitScaleRange(model) {\n var localScaleComponents = model.component.scales;\n // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n channel_1.SCALE_CHANNELS.forEach(function (channel) {\n var localScaleCmpt = localScaleComponents[channel];\n if (!localScaleCmpt) {\n return;\n }\n var mergedScaleCmpt = model.getScaleComponent(channel);\n var specifiedScale = model.specifiedScales[channel];\n var fieldDef = model.fieldDef(channel);\n // Read if there is a specified width/height\n var sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n var sizeSpecified = sizeType ? !!model.component.layoutSize.get(sizeType) : undefined;\n var scaleType = mergedScaleCmpt.get('type');\n // if autosize is fit, size cannot be data driven\n var rangeStep = util.contains(['point', 'band'], scaleType) || !!specifiedScale.rangeStep;\n if (sizeType && model.fit && !sizeSpecified && rangeStep) {\n log.warn(log.message.CANNOT_FIX_RANGE_STEP_WITH_FIT);\n sizeSpecified = true;\n }\n var xyRangeSteps = getXYRangeStep(model);\n var rangeWithExplicit = parseRangeForChannel(channel, scaleType, fieldDef.type, specifiedScale, model.config, localScaleCmpt.get('zero'), model.mark, sizeSpecified, model.getName(sizeType), xyRangeSteps);\n localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n });\n}\nfunction getXYRangeStep(model) {\n var xyRangeSteps = [];\n var xScale = model.getScaleComponent('x');\n var xRange = xScale && xScale.get('range');\n if (xRange && vega_schema_1.isVgRangeStep(xRange) && vega_util_1.isNumber(xRange.step)) {\n xyRangeSteps.push(xRange.step);\n }\n var yScale = model.getScaleComponent('y');\n var yRange = yScale && yScale.get('range');\n if (yRange && vega_schema_1.isVgRangeStep(yRange) && vega_util_1.isNumber(yRange.step)) {\n xyRangeSteps.push(yRange.step);\n }\n return xyRangeSteps;\n}\n/**\n * Return mixins that includes one of the range properties (range, rangeStep, scheme).\n */\nfunction parseRangeForChannel(channel, scaleType, type, specifiedScale, config, zero, mark, sizeSpecified, sizeSignal, xyRangeSteps) {\n var noRangeStep = sizeSpecified || specifiedScale.rangeStep === null;\n // Check if any of the range properties is specified.\n // If so, check if it is compatible and make sure that we only output one of the properties\n for (var _i = 0, RANGE_PROPERTIES_1 = exports.RANGE_PROPERTIES; _i < RANGE_PROPERTIES_1.length; _i++) {\n var property = RANGE_PROPERTIES_1[_i];\n if (specifiedScale[property] !== undefined) {\n var supportedByScaleType = scale_1.scaleTypeSupportProperty(scaleType, property);\n var channelIncompatability = scale_1.channelScalePropertyIncompatability(channel, property);\n if (!supportedByScaleType) {\n log.warn(log.message.scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n }\n else if (channelIncompatability) { // channel\n log.warn(channelIncompatability);\n }\n else {\n switch (property) {\n case 'range':\n return split_1.makeExplicit(specifiedScale[property]);\n case 'scheme':\n return split_1.makeExplicit(parseScheme(specifiedScale[property]));\n case 'rangeStep':\n var rangeStep = specifiedScale[property];\n if (rangeStep !== null) {\n if (!sizeSpecified) {\n return split_1.makeExplicit({ step: rangeStep });\n }\n else {\n // If top-level size is specified, we ignore specified rangeStep.\n log.warn(log.message.rangeStepDropped(channel));\n }\n }\n }\n }\n }\n }\n return split_1.makeImplicit(defaultRange(channel, scaleType, type, config, zero, mark, sizeSignal, xyRangeSteps, noRangeStep));\n}\nexports.parseRangeForChannel = parseRangeForChannel;\nfunction parseScheme(scheme) {\n if (scale_1.isExtendedScheme(scheme)) {\n var r = { scheme: scheme.name };\n if (scheme.count) {\n r.count = scheme.count;\n }\n if (scheme.extent) {\n r.extent = scheme.extent;\n }\n return r;\n }\n return { scheme: scheme };\n}\nfunction defaultRange(channel, scaleType, type, config, zero, mark, sizeSignal, xyRangeSteps, noRangeStep) {\n switch (channel) {\n case channel_1.X:\n case channel_1.Y:\n if (util.contains(['point', 'band'], scaleType) && !noRangeStep) {\n if (channel === channel_1.X && mark === 'text') {\n if (config.scale.textXRangeStep) {\n return { step: config.scale.textXRangeStep };\n }\n }\n else {\n if (config.scale.rangeStep) {\n return { step: config.scale.rangeStep };\n }\n }\n }\n // If range step is null, use zero to width or height.\n // Note that these range signals are temporary\n // as they can be merged and renamed.\n // (We do not have the right size signal here since parseLayoutSize() happens after parseScale().)\n // We will later replace these temporary names with\n // the final name in assembleScaleRange()\n if (channel === channel_1.Y && scale_2.hasContinuousDomain(scaleType)) {\n // For y continuous scale, we have to start from the height as the bottom part has the max value.\n return [{ signal: sizeSignal }, 0];\n }\n else {\n return [0, { signal: sizeSignal }];\n }\n case channel_1.SIZE:\n // TODO: support custom rangeMin, rangeMax\n var rangeMin = sizeRangeMin(mark, zero, config);\n var rangeMax = sizeRangeMax(mark, xyRangeSteps, config);\n return [rangeMin, rangeMax];\n case channel_1.SHAPE:\n return 'symbol';\n case channel_1.COLOR:\n case channel_1.FILL:\n case channel_1.STROKE:\n if (scaleType === 'ordinal') {\n // Only nominal data uses ordinal scale by default\n return type === 'nominal' ? 'category' : 'ordinal';\n }\n return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n case channel_1.OPACITY:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minOpacity, config.scale.maxOpacity];\n }\n /* istanbul ignore next: should never reach here */\n throw new Error(\"Scale range undefined for channel \" + channel);\n}\nexports.defaultRange = defaultRange;\nfunction sizeRangeMin(mark, zero, config) {\n if (zero) {\n return 0;\n }\n switch (mark) {\n case 'bar':\n case 'tick':\n return config.scale.minBandSize;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.minStrokeWidth;\n case 'text':\n return config.scale.minFontSize;\n case 'point':\n case 'square':\n case 'circle':\n return config.scale.minSize;\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMin not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\nfunction sizeRangeMax(mark, xyRangeSteps, config) {\n var scaleConfig = config.scale;\n switch (mark) {\n case 'bar':\n case 'tick':\n if (config.scale.maxBandSize !== undefined) {\n return config.scale.maxBandSize;\n }\n return minXYRangeStep(xyRangeSteps, config.scale) - 1;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.maxStrokeWidth;\n case 'text':\n return config.scale.maxFontSize;\n case 'point':\n case 'square':\n case 'circle':\n if (config.scale.maxSize) {\n return config.scale.maxSize;\n }\n // FIXME this case totally should be refactored\n var pointStep = minXYRangeStep(xyRangeSteps, scaleConfig);\n return (pointStep - 2) * (pointStep - 2);\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMax not implemented for the mark\n throw new Error(log.message.incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYRangeStep(xyRangeSteps, scaleConfig) {\n if (xyRangeSteps.length > 0) {\n return Math.min.apply(null, xyRangeSteps);\n }\n if (scaleConfig.rangeStep) {\n return scaleConfig.rangeStep;\n }\n return 21; // FIXME: re-evaluate the default value here.\n}\n//# sourceMappingURL=range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../../channel\");\nvar log = tslib_1.__importStar(require(\"../../log\"));\nvar scale_1 = require(\"../../scale\");\nvar util = tslib_1.__importStar(require(\"../../util\"));\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nfunction scaleType(specifiedType, channel, fieldDef, mark, scaleConfig) {\n var defaultScaleType = defaultType(channel, fieldDef, mark, scaleConfig);\n if (!channel_1.isScaleChannel(channel)) {\n // There is no scale for these channels\n return null;\n }\n if (specifiedType !== undefined) {\n // Check if explicitly specified scale type is supported by the channel\n if (!scale_1.channelSupportScaleType(channel, specifiedType)) {\n log.warn(log.message.scaleTypeNotWorkWithChannel(channel, specifiedType, defaultScaleType));\n return defaultScaleType;\n }\n // Check if explicitly specified scale type is supported by the data type\n if (!scale_1.scaleTypeSupportDataType(specifiedType, fieldDef.type, fieldDef.bin)) {\n log.warn(log.message.scaleTypeNotWorkWithFieldDef(specifiedType, defaultScaleType));\n return defaultScaleType;\n }\n return specifiedType;\n }\n return defaultScaleType;\n}\nexports.scaleType = scaleType;\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark, scaleConfig) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n if (channel_1.isColorChannel(channel) || channel_1.rangeType(channel) === 'discrete') {\n if (channel === 'shape' && fieldDef.type === 'ordinal') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'ordinal'));\n }\n return 'ordinal';\n }\n if (util.contains(['x', 'y'], channel)) {\n if (util.contains(['rect', 'bar', 'rule'], mark)) {\n // The rect/bar mark should fit into a band.\n // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n return 'band';\n }\n if (mark === 'bar') {\n return 'band';\n }\n }\n // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n return 'point';\n case 'temporal':\n if (channel_1.isColorChannel(channel)) {\n return 'sequential';\n }\n else if (channel_1.rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'temporal'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'time';\n case 'quantitative':\n if (channel_1.isColorChannel(channel)) {\n if (fieldDef.bin) {\n return 'bin-ordinal';\n }\n // Use `sequential` as the default color scale for continuous data\n // since it supports both array range and scheme range.\n return 'sequential';\n }\n else if (channel_1.rangeType(channel) === 'discrete') {\n log.warn(log.message.discreteChannelCannotEncode(channel, 'quantitative'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n // x and y use a linear scale because selections don't work with bin scales.\n // Binned scales apply discretization but pan/zoom apply transformations to a [min, max] extent domain.\n if (fieldDef.bin && channel !== 'x' && channel !== 'y') {\n return 'bin-linear';\n }\n return 'linear';\n case 'latitude':\n case 'longitude':\n case 'geojson':\n return undefined;\n }\n /* istanbul ignore next: should never reach this */\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}\n//# sourceMappingURL=type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar log_1 = require(\"../../log\");\nvar scale_1 = require(\"../../scale\");\nvar util_1 = require(\"../../util\");\nvar selection_1 = require(\"./selection\");\nvar scales_1 = tslib_1.__importDefault(require(\"./transforms/scales\"));\nexports.BRUSH = '_brush';\nexports.SCALE_TRIGGER = '_scale_trigger';\nvar interval = {\n predicate: 'vlInterval',\n scaleDomain: 'vlIntervalDomain',\n signals: function (model, selCmpt) {\n var name = selCmpt.name;\n var hasScales = scales_1.default.has(selCmpt);\n var signals = [];\n var intervals = [];\n var tupleTriggers = [];\n var scaleTriggers = [];\n if (selCmpt.translate && !hasScales) {\n var filterExpr_1 = \"!event.item || event.item.mark.name !== \" + vega_util_1.stringValue(name + exports.BRUSH);\n events(selCmpt, function (_, evt) {\n var filters = evt.between[0].filter || (evt.between[0].filter = []);\n if (filters.indexOf(filterExpr_1) < 0) {\n filters.push(filterExpr_1);\n }\n });\n }\n selCmpt.project.forEach(function (p) {\n var channel = p.channel;\n if (channel !== channel_1.X && channel !== channel_1.Y) {\n log_1.warn('Interval selections only support x and y encoding channels.');\n return;\n }\n var cs = channelSignals(model, selCmpt, channel);\n var dname = selection_1.channelSignalName(selCmpt, channel, 'data');\n var vname = selection_1.channelSignalName(selCmpt, channel, 'visual');\n var scaleStr = vega_util_1.stringValue(model.scaleName(channel));\n var scaleType = model.getScaleComponent(channel).get('type');\n var toNum = scale_1.hasContinuousDomain(scaleType) ? '+' : '';\n signals.push.apply(signals, cs);\n tupleTriggers.push(dname);\n intervals.push(\"{encoding: \" + vega_util_1.stringValue(channel) + \", \" +\n (\"field: \" + vega_util_1.stringValue(p.field) + \", extent: \" + dname + \"}\"));\n scaleTriggers.push({\n scaleName: model.scaleName(channel),\n expr: \"(!isArray(\" + dname + \") || \" +\n (\"(\" + toNum + \"invert(\" + scaleStr + \", \" + vname + \")[0] === \" + toNum + dname + \"[0] && \") +\n (toNum + \"invert(\" + scaleStr + \", \" + vname + \")[1] === \" + toNum + dname + \"[1]))\")\n });\n });\n // Proxy scale reactions to ensure that an infinite loop doesn't occur\n // when an interval selection filter touches the scale.\n if (!hasScales) {\n signals.push({\n name: name + exports.SCALE_TRIGGER,\n update: scaleTriggers.map(function (t) { return t.expr; }).join(' && ') +\n (\" ? \" + (name + exports.SCALE_TRIGGER) + \" : {}\")\n });\n }\n // Only add an interval to the store if it has valid data extents. Data extents\n // are set to null if pixel extents are equal to account for intervals over\n // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n return signals.concat({\n name: name + selection_1.TUPLE,\n on: [{\n events: tupleTriggers.map(function (t) { return ({ signal: t }); }),\n update: tupleTriggers.join(' && ') +\n (\" ? {unit: \" + selection_1.unitName(model) + \", intervals: [\" + intervals.join(', ') + \"]} : null\")\n }]\n });\n },\n modifyExpr: function (model, selCmpt) {\n var tpl = selCmpt.name + selection_1.TUPLE;\n return tpl + ', ' +\n (selCmpt.resolve === 'global' ? 'true' : \"{unit: \" + selection_1.unitName(model) + \"}\");\n },\n marks: function (model, selCmpt, marks) {\n var name = selCmpt.name;\n var _a = selection_1.positionalProjections(selCmpt), xi = _a.xi, yi = _a.yi;\n var store = \"data(\" + vega_util_1.stringValue(selCmpt.name + selection_1.STORE) + \")\";\n // Do not add a brush if we're binding to scales.\n if (scales_1.default.has(selCmpt)) {\n return marks;\n }\n var update = {\n x: xi !== null ? { signal: name + \"_x[0]\" } : { value: 0 },\n y: yi !== null ? { signal: name + \"_y[0]\" } : { value: 0 },\n x2: xi !== null ? { signal: name + \"_x[1]\" } : { field: { group: 'width' } },\n y2: yi !== null ? { signal: name + \"_y[1]\" } : { field: { group: 'height' } }\n };\n // If the selection is resolved to global, only a single interval is in\n // the store. Wrap brush mark's encodings with a production rule to test\n // this based on the `unit` property. Hide the brush mark if it corresponds\n // to a unit different from the one in the store.\n if (selCmpt.resolve === 'global') {\n for (var _i = 0, _b = util_1.keys(update); _i < _b.length; _i++) {\n var key = _b[_i];\n update[key] = [tslib_1.__assign({ test: store + \".length && \" + store + \"[0].unit === \" + selection_1.unitName(model) }, update[key]), { value: 0 }];\n }\n }\n // Two brush marks ensure that fill colors and other aesthetic choices do\n // not interefere with the core marks, but that the brushed region can still\n // be interacted with (e.g., dragging it around).\n var _c = selCmpt.mark, fill = _c.fill, fillOpacity = _c.fillOpacity, stroke = tslib_1.__rest(_c, [\"fill\", \"fillOpacity\"]);\n var vgStroke = util_1.keys(stroke).reduce(function (def, k) {\n def[k] = [{\n test: [\n xi !== null && name + \"_x[0] !== \" + name + \"_x[1]\",\n yi != null && name + \"_y[0] !== \" + name + \"_y[1]\",\n ].filter(function (x) { return x; }).join(' && '),\n value: stroke[k]\n }, { value: null }];\n return def;\n }, {});\n return [{\n name: name + exports.BRUSH + '_bg',\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: { value: fill },\n fillOpacity: { value: fillOpacity }\n },\n update: update\n }\n }].concat(marks, {\n name: name + exports.BRUSH,\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: { value: 'transparent' }\n },\n update: tslib_1.__assign({}, update, vgStroke)\n }\n });\n }\n};\nexports.default = interval;\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, channel) {\n var vname = selection_1.channelSignalName(selCmpt, channel, 'visual');\n var dname = selection_1.channelSignalName(selCmpt, channel, 'data');\n var hasScales = scales_1.default.has(selCmpt);\n var scaleName = model.scaleName(channel);\n var scaleStr = vega_util_1.stringValue(scaleName);\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n var size = model.getSizeSignalRef(channel === channel_1.X ? 'width' : 'height').signal;\n var coord = channel + \"(unit)\";\n var on = events(selCmpt, function (def, evt) {\n return def.concat({ events: evt.between[0], update: \"[\" + coord + \", \" + coord + \"]\" }, // Brush Start\n { events: evt, update: \"[\" + vname + \"[0], clamp(\" + coord + \", 0, \" + size + \")]\" } // Brush End\n );\n });\n // React to pan/zooms of continuous scales. Non-continuous scales\n // (bin-linear, band, point) cannot be pan/zoomed and any other changes\n // to their domains (e.g., filtering) should clear the brushes.\n on.push({\n events: { signal: selCmpt.name + exports.SCALE_TRIGGER },\n update: scale_1.hasContinuousDomain(scaleType) && !scale_1.isBinScale(scaleType) ?\n \"[scale(\" + scaleStr + \", \" + dname + \"[0]), scale(\" + scaleStr + \", \" + dname + \"[1])]\" : \"[0, 0]\"\n });\n return hasScales ? [{ name: dname, on: [] }] : [{\n name: vname, value: [], on: on\n }, {\n name: dname,\n on: [{ events: { signal: vname }, update: vname + \"[0] === \" + vname + \"[1] ? null : invert(\" + scaleStr + \", \" + vname + \")\" }]\n }];\n}\nfunction events(selCmpt, cb) {\n return selCmpt.events.reduce(function (on, evt) {\n if (!evt.between) {\n log_1.warn(evt + \" is not an ordered event stream for interval selections\");\n return on;\n }\n return cb(on, evt);\n }, []);\n}\n//# sourceMappingURL=interval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"../../util\");\nvar selection_1 = require(\"./selection\");\nvar nearest_1 = tslib_1.__importDefault(require(\"./transforms/nearest\"));\nfunction signals(model, selCmpt) {\n var proj = selCmpt.project;\n var datum = nearest_1.default.has(selCmpt) ?\n '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n var bins = [];\n var encodings = proj.map(function (p) { return vega_util_1.stringValue(p.channel); }).filter(function (e) { return e; }).join(', ');\n var fields = proj.map(function (p) { return vega_util_1.stringValue(p.field); }).join(', ');\n var values = proj.map(function (p) {\n var channel = p.channel;\n var fieldDef = model.fieldDef(channel);\n // Binned fields should capture extents, for a range test against the raw field.\n return (fieldDef && fieldDef.bin) ? (bins.push(p.field),\n \"[\" + util_1.accessPathWithDatum(model.vgField(channel, {}), datum) + \", \" +\n (util_1.accessPathWithDatum(model.vgField(channel, { binSuffix: 'end' }), datum) + \"]\")) :\n \"\" + util_1.accessPathWithDatum(p.field, datum);\n }).join(', ');\n // Only add a discrete selection to the store if a datum is present _and_\n // the interaction isn't occurring on a group mark. This guards against\n // polluting interactive state with invalid values in faceted displays\n // as the group marks are also data-driven. We force the update to account\n // for constant null states but varying toggles (e.g., shift-click in\n // whitespace followed by a click in whitespace; the store should only\n // be cleared on the second click).\n return [{\n name: selCmpt.name + selection_1.TUPLE,\n value: {},\n on: [{\n events: selCmpt.events,\n update: \"datum && item().mark.marktype !== 'group' ? \" +\n (\"{unit: \" + selection_1.unitName(model) + \", encodings: [\" + encodings + \"], \") +\n (\"fields: [\" + fields + \"], values: [\" + values + \"]\") +\n (bins.length ? ', ' + bins.map(function (b) { return vega_util_1.stringValue('bin_' + b) + \": 1\"; }).join(', ') : '') +\n '} : null',\n force: true\n }]\n }];\n}\nexports.signals = signals;\nvar multi = {\n predicate: 'vlMulti',\n scaleDomain: 'vlMultiDomain',\n signals: signals,\n modifyExpr: function (model, selCmpt) {\n var tpl = selCmpt.name + selection_1.TUPLE;\n return tpl + ', ' +\n (selCmpt.resolve === 'global' ? 'null' : \"{unit: \" + selection_1.unitName(model) + \"}\");\n }\n};\nexports.default = multi;\n//# sourceMappingURL=multi.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_event_selector_1 = require(\"vega-event-selector\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../channel\");\nvar log_1 = require(\"../../log\");\nvar selection_1 = require(\"../../selection\");\nvar util_1 = require(\"../../util\");\nvar model_1 = require(\"../model\");\nvar interval_1 = tslib_1.__importDefault(require(\"./interval\"));\nvar multi_1 = tslib_1.__importDefault(require(\"./multi\"));\nvar single_1 = tslib_1.__importDefault(require(\"./single\"));\nvar transforms_1 = require(\"./transforms/transforms\");\nexports.STORE = '_store';\nexports.TUPLE = '_tuple';\nexports.MODIFY = '_modify';\nexports.SELECTION_DOMAIN = '_selection_domain_';\nfunction parseUnitSelection(model, selDefs) {\n var selCmpts = {};\n var selectionConfig = model.config.selection;\n var _loop_1 = function (name_1) {\n if (!selDefs.hasOwnProperty(name_1)) {\n return \"continue\";\n }\n var selDef = selDefs[name_1];\n var cfg = selectionConfig[selDef.type];\n // Set default values from config if a property hasn't been specified,\n // or if it is true. E.g., \"translate\": true should use the default\n // event handlers for translate. However, true may be a valid value for\n // a property (e.g., \"nearest\": true).\n for (var key in cfg) {\n // A selection should contain either `encodings` or `fields`, only use\n // default values for these two values if neither of them is specified.\n if ((key === 'encodings' && selDef.fields) || (key === 'fields' && selDef.encodings)) {\n continue;\n }\n if (key === 'mark') {\n selDef[key] = tslib_1.__assign({}, cfg[key], selDef[key]);\n }\n if (selDef[key] === undefined || selDef[key] === true) {\n selDef[key] = cfg[key] || selDef[key];\n }\n }\n name_1 = util_1.varName(name_1);\n var selCmpt = selCmpts[name_1] = tslib_1.__assign({}, selDef, { name: name_1, events: vega_util_1.isString(selDef.on) ? vega_event_selector_1.selector(selDef.on, 'scope') : selDef.on });\n transforms_1.forEachTransform(selCmpt, function (txCompiler) {\n if (txCompiler.parse) {\n txCompiler.parse(model, selDef, selCmpt);\n }\n });\n };\n for (var name_1 in selDefs) {\n _loop_1(name_1);\n }\n return selCmpts;\n}\nexports.parseUnitSelection = parseUnitSelection;\nfunction assembleUnitSelectionSignals(model, signals) {\n forEachSelection(model, function (selCmpt, selCompiler) {\n var name = selCmpt.name;\n var modifyExpr = selCompiler.modifyExpr(model, selCmpt);\n signals.push.apply(signals, selCompiler.signals(model, selCmpt));\n transforms_1.forEachTransform(selCmpt, function (txCompiler) {\n if (txCompiler.signals) {\n signals = txCompiler.signals(model, selCmpt, signals);\n }\n if (txCompiler.modifyExpr) {\n modifyExpr = txCompiler.modifyExpr(model, selCmpt, modifyExpr);\n }\n });\n signals.push({\n name: name + exports.MODIFY,\n on: [{\n events: { signal: name + exports.TUPLE },\n update: \"modify(\" + vega_util_1.stringValue(selCmpt.name + exports.STORE) + \", \" + modifyExpr + \")\"\n }]\n });\n });\n var facetModel = getFacetModel(model);\n if (signals.length && facetModel) {\n var name_2 = vega_util_1.stringValue(facetModel.getName('cell'));\n signals.unshift({\n name: 'facet',\n value: {},\n on: [{\n events: vega_event_selector_1.selector('mousemove', 'scope'),\n update: \"isTuple(facet) ? facet : group(\" + name_2 + \").datum\"\n }]\n });\n }\n return signals;\n}\nexports.assembleUnitSelectionSignals = assembleUnitSelectionSignals;\nfunction assembleTopLevelSignals(model, signals) {\n var needsUnit = false;\n forEachSelection(model, function (selCmpt, selCompiler) {\n if (selCompiler.topLevelSignals) {\n signals = selCompiler.topLevelSignals(model, selCmpt, signals);\n }\n transforms_1.forEachTransform(selCmpt, function (txCompiler) {\n if (txCompiler.topLevelSignals) {\n signals = txCompiler.topLevelSignals(model, selCmpt, signals);\n }\n });\n needsUnit = true;\n });\n if (needsUnit) {\n var hasUnit = signals.filter(function (s) { return s.name === 'unit'; });\n if (!(hasUnit.length)) {\n signals.unshift({\n name: 'unit',\n value: {},\n on: [{ events: 'mousemove', update: 'isTuple(group()) ? group() : unit' }]\n });\n }\n }\n return signals;\n}\nexports.assembleTopLevelSignals = assembleTopLevelSignals;\nfunction assembleUnitSelectionData(model, data) {\n forEachSelection(model, function (selCmpt) {\n var contains = data.filter(function (d) { return d.name === selCmpt.name + exports.STORE; });\n if (!contains.length) {\n data.push({ name: selCmpt.name + exports.STORE });\n }\n });\n return data;\n}\nexports.assembleUnitSelectionData = assembleUnitSelectionData;\nfunction assembleUnitSelectionMarks(model, marks) {\n forEachSelection(model, function (selCmpt, selCompiler) {\n marks = selCompiler.marks ? selCompiler.marks(model, selCmpt, marks) : marks;\n transforms_1.forEachTransform(selCmpt, function (txCompiler) {\n if (txCompiler.marks) {\n marks = txCompiler.marks(model, selCmpt, marks);\n }\n });\n });\n return marks;\n}\nexports.assembleUnitSelectionMarks = assembleUnitSelectionMarks;\nfunction assembleLayerSelectionMarks(model, marks) {\n model.children.forEach(function (child) {\n if (model_1.isUnitModel(child)) {\n marks = assembleUnitSelectionMarks(child, marks);\n }\n });\n return marks;\n}\nexports.assembleLayerSelectionMarks = assembleLayerSelectionMarks;\nfunction selectionPredicate(model, selections, dfnode) {\n var stores = [];\n function expr(name) {\n var vname = util_1.varName(name);\n var selCmpt = model.getSelectionComponent(vname, name);\n var store = vega_util_1.stringValue(vname + exports.STORE);\n if (selCmpt.timeUnit) {\n var child = dfnode || model.component.data.raw;\n var tunode = selCmpt.timeUnit.clone();\n if (child.parent) {\n tunode.insertAsParentOf(child);\n }\n else {\n child.parent = tunode;\n }\n }\n if (selCmpt.empty !== 'none') {\n stores.push(store);\n }\n return compiler(selCmpt.type).predicate + (\"(\" + store + \", datum\") +\n (selCmpt.resolve === 'global' ? ')' : \", \" + vega_util_1.stringValue(selCmpt.resolve) + \")\");\n }\n var predicateStr = util_1.logicalExpr(selections, expr);\n return (stores.length\n ? '!(' + stores.map(function (s) { return \"length(data(\" + s + \"))\"; }).join(' || ') + ') || '\n : '') + (\"(\" + predicateStr + \")\");\n}\nexports.selectionPredicate = selectionPredicate;\n// Selections are parsed _after_ scales. If a scale domain is set to\n// use a selection, the SELECTION_DOMAIN constant is used as the\n// domainRaw.signal during scale.parse and then replaced with the necessary\n// selection expression function during scale.assemble. To not pollute the\n// type signatures to account for this setup, the selection domain definition\n// is coerced to a string and appended to SELECTION_DOMAIN.\nfunction isRawSelectionDomain(domainRaw) {\n return domainRaw.signal.indexOf(exports.SELECTION_DOMAIN) >= 0;\n}\nexports.isRawSelectionDomain = isRawSelectionDomain;\nfunction selectionScaleDomain(model, domainRaw) {\n var selDomain = JSON.parse(domainRaw.signal.replace(exports.SELECTION_DOMAIN, ''));\n var name = util_1.varName(selDomain.selection);\n var selCmpt = model.component.selection && model.component.selection[name];\n if (selCmpt) {\n log_1.warn('Use \"bind\": \"scales\" to setup a binding for scales and selections within the same view.');\n }\n else {\n selCmpt = model.getSelectionComponent(name, selDomain.selection);\n if (!selDomain.encoding && !selDomain.field) {\n selDomain.field = selCmpt.project[0].field;\n if (selCmpt.project.length > 1) {\n log_1.warn('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' +\n (\"Using \\\"field\\\": \" + vega_util_1.stringValue(selDomain.field) + \".\"));\n }\n }\n return {\n signal: compiler(selCmpt.type).scaleDomain +\n (\"(\" + vega_util_1.stringValue(name + exports.STORE) + \", \" + vega_util_1.stringValue(selDomain.encoding || null) + \", \") +\n vega_util_1.stringValue(selDomain.field || null) +\n (selCmpt.resolve === 'global' ? ')' : \", \" + vega_util_1.stringValue(selCmpt.resolve) + \")\")\n };\n }\n return { signal: 'null' };\n}\nexports.selectionScaleDomain = selectionScaleDomain;\n// Utility functions\nfunction forEachSelection(model, cb) {\n var selections = model.component.selection;\n for (var name_3 in selections) {\n if (selections.hasOwnProperty(name_3)) {\n var sel = selections[name_3];\n cb(sel, compiler(sel.type));\n }\n }\n}\nfunction compiler(type) {\n switch (type) {\n case 'single':\n return single_1.default;\n case 'multi':\n return multi_1.default;\n case 'interval':\n return interval_1.default;\n }\n return null;\n}\nfunction getFacetModel(model) {\n var parent = model.parent;\n while (parent) {\n if (model_1.isFacetModel(parent)) {\n break;\n }\n parent = parent.parent;\n }\n return parent;\n}\nfunction unitName(model) {\n var name = vega_util_1.stringValue(model.name);\n var facet = getFacetModel(model);\n if (facet) {\n name += (facet.facet.row ? \" + '_' + (\" + util_1.accessPathWithDatum(facet.vgField('row'), 'facet') + \")\" : '')\n + (facet.facet.column ? \" + '_' + (\" + util_1.accessPathWithDatum(facet.vgField('column'), 'facet') + \")\" : '');\n }\n return name;\n}\nexports.unitName = unitName;\nfunction requiresSelectionId(model) {\n var identifier = false;\n forEachSelection(model, function (selCmpt) {\n identifier = identifier || selCmpt.project.some(function (proj) { return proj.field === selection_1.SELECTION_ID; });\n });\n return identifier;\n}\nexports.requiresSelectionId = requiresSelectionId;\nfunction channelSignalName(selCmpt, channel, range) {\n var sgNames = selCmpt._signalNames || (selCmpt._signalNames = {});\n if (sgNames[channel] && sgNames[channel][range]) {\n return sgNames[channel][range];\n }\n sgNames[channel] = sgNames[channel] || {};\n var basename = util_1.varName(selCmpt.name + '_' + (range === 'visual' ? channel : selCmpt.fields[channel]));\n var name = basename;\n var counter = 1;\n while (sgNames[name]) {\n name = basename + \"_\" + counter++;\n }\n return (sgNames[name] = sgNames[channel][range] = name);\n}\nexports.channelSignalName = channelSignalName;\nfunction positionalProjections(selCmpt) {\n var x = null;\n var xi = null;\n var y = null;\n var yi = null;\n selCmpt.project.forEach(function (p, i) {\n if (p.channel === channel_1.X) {\n x = p;\n xi = i;\n }\n else if (p.channel === channel_1.Y) {\n y = p;\n yi = i;\n }\n });\n return { x: x, xi: xi, y: y, yi: yi };\n}\nexports.positionalProjections = positionalProjections;\n//# sourceMappingURL=selection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar multi_1 = require(\"./multi\");\nvar selection_1 = require(\"./selection\");\nvar single = {\n predicate: 'vlSingle',\n scaleDomain: 'vlSingleDomain',\n signals: multi_1.signals,\n topLevelSignals: function (model, selCmpt, signals) {\n var hasSignal = signals.filter(function (s) { return s.name === selCmpt.name; });\n var data = \"data(\" + vega_util_1.stringValue(selCmpt.name + selection_1.STORE) + \")\";\n var values = data + \"[0].values\";\n return hasSignal.length ? signals : signals.concat({\n name: selCmpt.name,\n update: data + \".length && {\" +\n selCmpt.project.map(function (p, i) { return p.field + \": \" + values + \"[\" + i + \"]\"; }).join(', ') + '}'\n });\n },\n modifyExpr: function (model, selCmpt) {\n var tpl = selCmpt.name + selection_1.TUPLE;\n return tpl + ', ' +\n (selCmpt.resolve === 'global' ? 'true' : \"{unit: \" + selection_1.unitName(model) + \"}\");\n }\n};\nexports.default = single;\n//# sourceMappingURL=single.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"../../../util\");\nvar selection_1 = require(\"../selection\");\nvar nearest_1 = tslib_1.__importDefault(require(\"./nearest\"));\nvar inputBindings = {\n has: function (selCmpt) {\n return selCmpt.type === 'single' && selCmpt.resolve === 'global' &&\n selCmpt.bind && selCmpt.bind !== 'scales';\n },\n topLevelSignals: function (model, selCmpt, signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var bind = selCmpt.bind;\n var datum = nearest_1.default.has(selCmpt) ?\n '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n proj.forEach(function (p) {\n var sgname = util_1.varName(name + \"_\" + p.field);\n var hasSignal = signals.filter(function (s) { return s.name === sgname; });\n if (!hasSignal.length) {\n signals.unshift({\n name: sgname,\n value: '',\n on: [{\n events: selCmpt.events,\n update: \"datum && item().mark.marktype !== 'group' ? \" + util_1.accessPathWithDatum(p.field, datum) + \" : null\"\n }],\n bind: bind[p.field] || bind[p.channel] || bind\n });\n }\n });\n return signals;\n },\n signals: function (model, selCmpt, signals) {\n var name = selCmpt.name;\n var proj = selCmpt.project;\n var signal = signals.filter(function (s) { return s.name === name + selection_1.TUPLE; })[0];\n var fields = proj.map(function (p) { return vega_util_1.stringValue(p.field); }).join(', ');\n var values = proj.map(function (p) { return util_1.varName(name + \"_\" + p.field); });\n if (values.length) {\n signal.update = values.join(' && ') + \" ? {fields: [\" + fields + \"], values: [\" + values.join(', ') + \"]} : null\";\n }\n delete signal.value;\n delete signal.on;\n return signals;\n }\n};\nexports.default = inputBindings;\n//# sourceMappingURL=inputs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../../../log\"));\nvar mark_1 = require(\"../../../mark\");\nvar selection_1 = require(\"../selection\");\nvar VORONOI = 'voronoi';\nvar nearest = {\n has: function (selCmpt) {\n return selCmpt.type !== 'interval' && selCmpt.nearest;\n },\n marks: function (model, selCmpt, marks) {\n var _a = selection_1.positionalProjections(selCmpt), x = _a.x, y = _a.y;\n var markType = model.mark;\n if (mark_1.isPathMark(markType)) {\n log.warn(log.message.nearestNotSupportForContinuous(markType));\n return marks;\n }\n var cellDef = {\n name: model.getName(VORONOI),\n type: 'path',\n from: { data: model.getName('marks') },\n encode: {\n enter: {\n fill: { value: 'transparent' },\n strokeWidth: { value: 0.35 },\n stroke: { value: 'transparent' },\n isVoronoi: { value: true }\n }\n },\n transform: [{\n type: 'voronoi',\n x: { expr: (x || (!x && !y)) ? 'datum.datum.x || 0' : '0' },\n y: { expr: (y || (!x && !y)) ? 'datum.datum.y || 0' : '0' },\n size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n }]\n };\n var index = 0;\n var exists = false;\n marks.forEach(function (mark, i) {\n var name = mark.name || '';\n if (name === model.component.mark[0].name) {\n index = i;\n }\n else if (name.indexOf(VORONOI) >= 0) {\n exists = true;\n }\n });\n if (!exists) {\n marks.splice(index + 1, 0, cellDef);\n }\n return marks;\n }\n};\nexports.default = nearest;\n//# sourceMappingURL=nearest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../../../log\"));\nvar util_1 = require(\"../../../util\");\nvar timeunit_1 = require(\"../../data/timeunit\");\nvar project = {\n has: function (selDef) {\n var def = selDef;\n return def.fields !== undefined || def.encodings !== undefined;\n },\n parse: function (model, selDef, selCmpt) {\n var channels = {};\n var timeUnits = {};\n // TODO: find a possible channel mapping for these fields.\n (selDef.fields || []).forEach(function (field) { return channels[field] = null; });\n (selDef.encodings || []).forEach(function (channel) {\n var fieldDef = model.fieldDef(channel);\n if (fieldDef) {\n if (fieldDef.timeUnit) {\n var tuField = model.vgField(channel);\n channels[tuField] = channel;\n // Construct TimeUnitComponents which will be combined into a\n // TimeUnitNode. This node may need to be inserted into the\n // dataflow if the selection is used across views that do not\n // have these time units defined.\n timeUnits[tuField] = {\n as: tuField,\n field: fieldDef.field,\n timeUnit: fieldDef.timeUnit\n };\n }\n else {\n channels[fieldDef.field] = channel;\n }\n }\n else {\n log.warn(log.message.cannotProjectOnChannelWithoutField(channel));\n }\n });\n var projection = selCmpt.project || (selCmpt.project = []);\n for (var field in channels) {\n if (channels.hasOwnProperty(field)) {\n projection.push({ field: field, channel: channels[field] });\n }\n }\n var fields = selCmpt.fields || (selCmpt.fields = {});\n projection.filter(function (p) { return p.channel; }).forEach(function (p) { return fields[p.channel] = p.field; });\n if (util_1.keys(timeUnits).length) {\n selCmpt.timeUnit = new timeunit_1.TimeUnitNode(null, timeUnits);\n }\n }\n};\nexports.default = project;\n//# sourceMappingURL=project.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../../channel\");\nvar log = tslib_1.__importStar(require(\"../../../log\"));\nvar scale_1 = require(\"../../../scale\");\nvar selection_1 = require(\"../selection\");\nvar scaleBindings = {\n has: function (selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.resolve === 'global' &&\n selCmpt.bind && selCmpt.bind === 'scales';\n },\n parse: function (model, selDef, selCmpt) {\n var bound = selCmpt.scales = [];\n selCmpt.project.forEach(function (p) {\n var channel = p.channel;\n var scale = model.getScaleComponent(channel);\n var scaleType = scale ? scale.get('type') : undefined;\n if (!scale || !scale_1.hasContinuousDomain(scaleType) || scale_1.isBinScale(scaleType)) {\n log.warn(log.message.SCALE_BINDINGS_CONTINUOUS);\n return;\n }\n scale.set('domainRaw', { signal: selection_1.channelSignalName(selCmpt, channel, 'data') }, true);\n bound.push(channel);\n // Bind both x/y for diag plot of repeated views.\n if (model.repeater && model.repeater.row === model.repeater.column) {\n var scale2 = model.getScaleComponent(channel === channel_1.X ? channel_1.Y : channel_1.X);\n scale2.set('domainRaw', { signal: selection_1.channelSignalName(selCmpt, channel, 'data') }, true);\n }\n });\n },\n topLevelSignals: function (model, selCmpt, signals) {\n // Top-level signals are only needed when coordinating composed views.\n if (!model.parent) {\n return signals;\n }\n var channels = selCmpt.scales.filter(function (channel) {\n return !(signals.filter(function (s) { return s.name === selection_1.channelSignalName(selCmpt, channel, 'data'); }).length);\n });\n return signals.concat(channels.map(function (channel) {\n return { name: selection_1.channelSignalName(selCmpt, channel, 'data') };\n }));\n },\n signals: function (model, selCmpt, signals) {\n // Nested signals need only push to top-level signals when within composed views.\n if (model.parent) {\n selCmpt.scales.forEach(function (channel) {\n var signal = signals.filter(function (s) { return s.name === selection_1.channelSignalName(selCmpt, channel, 'data'); })[0];\n signal.push = 'outer';\n delete signal.value;\n delete signal.update;\n });\n }\n return signals;\n }\n};\nexports.default = scaleBindings;\nfunction domain(model, channel) {\n var scale = vega_util_1.stringValue(model.scaleName(channel));\n return \"domain(\" + scale + \")\";\n}\nexports.domain = domain;\n//# sourceMappingURL=scales.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar selection_1 = require(\"../selection\");\nvar TOGGLE = '_toggle';\nvar toggle = {\n has: function (selCmpt) {\n return selCmpt.type === 'multi' && selCmpt.toggle;\n },\n signals: function (model, selCmpt, signals) {\n return signals.concat({\n name: selCmpt.name + TOGGLE,\n value: false,\n on: [{ events: selCmpt.events, update: selCmpt.toggle }]\n });\n },\n modifyExpr: function (model, selCmpt, expr) {\n var tpl = selCmpt.name + selection_1.TUPLE;\n var signal = selCmpt.name + TOGGLE;\n return signal + \" ? null : \" + tpl + \", \" +\n (selCmpt.resolve === 'global' ?\n signal + \" ? null : true, \" :\n signal + \" ? null : {unit: \" + selection_1.unitName(model) + \"}, \") +\n (signal + \" ? \" + tpl + \" : null\");\n }\n};\nexports.default = toggle;\n//# sourceMappingURL=toggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar inputs_1 = tslib_1.__importDefault(require(\"./inputs\"));\nvar nearest_1 = tslib_1.__importDefault(require(\"./nearest\"));\nvar project_1 = tslib_1.__importDefault(require(\"./project\"));\nvar scales_1 = tslib_1.__importDefault(require(\"./scales\"));\nvar toggle_1 = tslib_1.__importDefault(require(\"./toggle\"));\nvar translate_1 = tslib_1.__importDefault(require(\"./translate\"));\nvar zoom_1 = tslib_1.__importDefault(require(\"./zoom\"));\nvar compilers = { project: project_1.default, toggle: toggle_1.default, scales: scales_1.default,\n translate: translate_1.default, zoom: zoom_1.default, inputs: inputs_1.default, nearest: nearest_1.default };\nfunction forEachTransform(selCmpt, cb) {\n for (var t in compilers) {\n if (compilers[t].has(selCmpt)) {\n cb(compilers[t]);\n }\n }\n}\nexports.forEachTransform = forEachTransform;\n//# sourceMappingURL=transforms.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_event_selector_1 = require(\"vega-event-selector\");\nvar channel_1 = require(\"../../../channel\");\nvar interval_1 = require(\"../interval\");\nvar selection_1 = require(\"../selection\");\nvar scales_1 = tslib_1.__importStar(require(\"./scales\"));\nvar ANCHOR = '_translate_anchor';\nvar DELTA = '_translate_delta';\nvar translate = {\n has: function (selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.translate;\n },\n signals: function (model, selCmpt, signals) {\n var name = selCmpt.name;\n var hasScales = scales_1.default.has(selCmpt);\n var anchor = name + ANCHOR;\n var _a = selection_1.positionalProjections(selCmpt), x = _a.x, y = _a.y;\n var events = vega_event_selector_1.selector(selCmpt.translate, 'scope');\n if (!hasScales) {\n events = events.map(function (e) { return (e.between[0].markname = name + interval_1.BRUSH, e); });\n }\n signals.push({\n name: anchor,\n value: {},\n on: [{\n events: events.map(function (e) { return e.between[0]; }),\n update: '{x: x(unit), y: y(unit)' +\n (x !== null ? ', extent_x: ' + (hasScales ? scales_1.domain(model, channel_1.X) :\n \"slice(\" + selection_1.channelSignalName(selCmpt, 'x', 'visual') + \")\") : '') +\n (y !== null ? ', extent_y: ' + (hasScales ? scales_1.domain(model, channel_1.Y) :\n \"slice(\" + selection_1.channelSignalName(selCmpt, 'y', 'visual') + \")\") : '') + '}'\n }]\n }, {\n name: name + DELTA,\n value: {},\n on: [{\n events: events,\n update: \"{x: \" + anchor + \".x - x(unit), y: \" + anchor + \".y - y(unit)}\"\n }]\n });\n if (x !== null) {\n onDelta(model, selCmpt, channel_1.X, 'width', signals);\n }\n if (y !== null) {\n onDelta(model, selCmpt, channel_1.Y, 'height', signals);\n }\n return signals;\n }\n};\nexports.default = translate;\nfunction onDelta(model, selCmpt, channel, size, signals) {\n var name = selCmpt.name;\n var hasScales = scales_1.default.has(selCmpt);\n var signal = signals.filter(function (s) {\n return s.name === selection_1.channelSignalName(selCmpt, channel, hasScales ? 'data' : 'visual');\n })[0];\n var anchor = name + ANCHOR;\n var delta = name + DELTA;\n var sizeSg = model.getSizeSignalRef(size).signal;\n var scaleCmpt = model.getScaleComponent(channel);\n var scaleType = scaleCmpt.get('type');\n var sign = hasScales && channel === channel_1.X ? '-' : ''; // Invert delta when panning x-scales.\n var extent = anchor + \".extent_\" + channel;\n var offset = \"\" + sign + delta + \".\" + channel + \" / \" + (hasScales ? \"\" + sizeSg : \"span(\" + extent + \")\");\n var panFn = !hasScales ? 'panLinear' :\n scaleType === 'log' ? 'panLog' :\n scaleType === 'pow' ? 'panPow' : 'panLinear';\n var update = panFn + \"(\" + extent + \", \" + offset +\n (hasScales && scaleType === 'pow' ? \", \" + (scaleCmpt.get('exponent') || 1) : '') + ')';\n signal.on.push({\n events: { signal: delta },\n update: hasScales ? update : \"clampRange(\" + update + \", 0, \" + sizeSg + \")\"\n });\n}\n//# sourceMappingURL=translate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_event_selector_1 = require(\"vega-event-selector\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"../../../channel\");\nvar interval_1 = require(\"../interval\");\nvar selection_1 = require(\"../selection\");\nvar scales_1 = tslib_1.__importStar(require(\"./scales\"));\nvar ANCHOR = '_zoom_anchor';\nvar DELTA = '_zoom_delta';\nvar zoom = {\n has: function (selCmpt) {\n return selCmpt.type === 'interval' && selCmpt.zoom;\n },\n signals: function (model, selCmpt, signals) {\n var name = selCmpt.name;\n var hasScales = scales_1.default.has(selCmpt);\n var delta = name + DELTA;\n var _a = selection_1.positionalProjections(selCmpt), x = _a.x, y = _a.y;\n var sx = vega_util_1.stringValue(model.scaleName(channel_1.X));\n var sy = vega_util_1.stringValue(model.scaleName(channel_1.Y));\n var events = vega_event_selector_1.selector(selCmpt.zoom, 'scope');\n if (!hasScales) {\n events = events.map(function (e) { return (e.markname = name + interval_1.BRUSH, e); });\n }\n signals.push({\n name: name + ANCHOR,\n on: [{\n events: events,\n update: !hasScales ? \"{x: x(unit), y: y(unit)}\" :\n '{' + [\n (sx ? \"x: invert(\" + sx + \", x(unit))\" : ''),\n (sy ? \"y: invert(\" + sy + \", y(unit))\" : '')\n ].filter(function (expr) { return !!expr; }).join(', ') + '}'\n }]\n }, {\n name: delta,\n on: [{\n events: events,\n force: true,\n update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n }]\n });\n if (x !== null) {\n onDelta(model, selCmpt, 'x', 'width', signals);\n }\n if (y !== null) {\n onDelta(model, selCmpt, 'y', 'height', signals);\n }\n return signals;\n }\n};\nexports.default = zoom;\nfunction onDelta(model, selCmpt, channel, size, signals) {\n var name = selCmpt.name;\n var hasScales = scales_1.default.has(selCmpt);\n var signal = signals.filter(function (s) {\n return s.name === selection_1.channelSignalName(selCmpt, channel, hasScales ? 'data' : 'visual');\n })[0];\n var sizeSg = model.getSizeSignalRef(size).signal;\n var scaleCmpt = model.getScaleComponent(channel);\n var scaleType = scaleCmpt.get('type');\n var base = hasScales ? scales_1.domain(model, channel) : signal.name;\n var delta = name + DELTA;\n var anchor = \"\" + name + ANCHOR + \".\" + channel;\n var zoomFn = !hasScales ? 'zoomLinear' :\n scaleType === 'log' ? 'zoomLog' :\n scaleType === 'pow' ? 'zoomPow' : 'zoomLinear';\n var update = zoomFn + \"(\" + base + \", \" + anchor + \", \" + delta +\n (hasScales && scaleType === 'pow' ? \", \" + (scaleCmpt.get('exponent') || 1) : '') + ')';\n signal.on.push({\n events: { signal: delta },\n update: hasScales ? update : \"clampRange(\" + update + \", 0, \" + sizeSg + \")\"\n });\n}\n//# sourceMappingURL=zoom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar log = tslib_1.__importStar(require(\"../log\"));\nvar util_1 = require(\"../util\");\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\nvar Split = /** @class */ (function () {\n function Split(explicit, implicit) {\n if (explicit === void 0) { explicit = {}; }\n if (implicit === void 0) { implicit = {}; }\n this.explicit = explicit;\n this.implicit = implicit;\n }\n Split.prototype.clone = function () {\n return new Split(util_1.duplicate(this.explicit), util_1.duplicate(this.implicit));\n };\n Split.prototype.combine = function () {\n // FIXME remove \"as any\".\n // Add \"as any\" to avoid an error \"Spread types may only be created from object types\".\n return tslib_1.__assign({}, this.explicit, this.implicit);\n };\n Split.prototype.get = function (key) {\n // Explicit has higher precedence\n return this.explicit[key] !== undefined ? this.explicit[key] : this.implicit[key];\n };\n Split.prototype.getWithExplicit = function (key) {\n // Explicit has higher precedence\n if (this.explicit[key] !== undefined) {\n return { explicit: true, value: this.explicit[key] };\n }\n else if (this.implicit[key] !== undefined) {\n return { explicit: false, value: this.implicit[key] };\n }\n return { explicit: false, value: undefined };\n };\n Split.prototype.setWithExplicit = function (key, value) {\n if (value.value !== undefined) {\n this.set(key, value.value, value.explicit);\n }\n };\n Split.prototype.set = function (key, value, explicit) {\n delete this[explicit ? 'implicit' : 'explicit'][key];\n this[explicit ? 'explicit' : 'implicit'][key] = value;\n return this;\n };\n Split.prototype.copyKeyFromSplit = function (key, s) {\n // Explicit has higher precedence\n if (s.explicit[key] !== undefined) {\n this.set(key, s.explicit[key], true);\n }\n else if (s.implicit[key] !== undefined) {\n this.set(key, s.implicit[key], false);\n }\n };\n Split.prototype.copyKeyFromObject = function (key, s) {\n // Explicit has higher precedence\n if (s[key] !== undefined) {\n this.set(key, s[key], true);\n }\n };\n /**\n * Merge split object into this split object. Properties from the other split\n * overwrite properties from this split.\n */\n Split.prototype.copyAll = function (other) {\n for (var _i = 0, _a = util_1.keys(other.combine()); _i < _a.length; _i++) {\n var key = _a[_i];\n var val = other.getWithExplicit(key);\n this.setWithExplicit(key, val);\n }\n };\n return Split;\n}());\nexports.Split = Split;\nfunction makeExplicit(value) {\n return {\n explicit: true,\n value: value\n };\n}\nexports.makeExplicit = makeExplicit;\nfunction makeImplicit(value) {\n return {\n explicit: false,\n value: value\n };\n}\nexports.makeImplicit = makeImplicit;\nfunction tieBreakByComparing(compare) {\n return function (v1, v2, property, propertyOf) {\n var diff = compare(v1.value, v2.value);\n if (diff > 0) {\n return v1;\n }\n else if (diff < 0) {\n return v2;\n }\n return defaultTieBreaker(v1, v2, property, propertyOf);\n };\n}\nexports.tieBreakByComparing = tieBreakByComparing;\nfunction defaultTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n log.warn(log.message.mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, prefer v1.\n return v1;\n}\nexports.defaultTieBreaker = defaultTieBreaker;\nfunction mergeValuesWithExplicit(v1, v2, property, propertyOf, tieBreaker) {\n if (tieBreaker === void 0) { tieBreaker = defaultTieBreaker; }\n if (v1 === undefined || v1.value === undefined) {\n // For first run\n return v2;\n }\n if (v1.explicit && !v2.explicit) {\n return v1;\n }\n else if (v2.explicit && !v1.explicit) {\n return v2;\n }\n else if (util_1.stringify(v1.value) === util_1.stringify(v2.value)) {\n return v1;\n }\n else {\n return tieBreaker(v1, v2, property, propertyOf);\n }\n}\nexports.mergeValuesWithExplicit = mergeValuesWithExplicit;\n//# sourceMappingURL=split.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar channel_1 = require(\"../channel\");\nvar vlEncoding = tslib_1.__importStar(require(\"../encoding\"));\nvar encoding_1 = require(\"../encoding\");\nvar fielddef_1 = require(\"../fielddef\");\nvar mark_1 = require(\"../mark\");\nvar stack_1 = require(\"../stack\");\nvar util_1 = require(\"../util\");\nvar parse_1 = require(\"./axis/parse\");\nvar parse_2 = require(\"./data/parse\");\nvar assemble_1 = require(\"./layoutsize/assemble\");\nvar parse_3 = require(\"./layoutsize/parse\");\nvar init_1 = require(\"./mark/init\");\nvar mark_2 = require(\"./mark/mark\");\nvar model_1 = require(\"./model\");\nvar repeater_1 = require(\"./repeater\");\nvar selection_1 = require(\"./selection/selection\");\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nvar UnitModel = /** @class */ (function (_super) {\n tslib_1.__extends(UnitModel, _super);\n function UnitModel(spec, parent, parentGivenName, parentGivenSize, repeater, config, fit) {\n if (parentGivenSize === void 0) { parentGivenSize = {}; }\n var _this = _super.call(this, spec, parent, parentGivenName, config, repeater, undefined) || this;\n _this.fit = fit;\n _this.type = 'unit';\n _this.specifiedScales = {};\n _this.specifiedAxes = {};\n _this.specifiedLegends = {};\n _this.specifiedProjection = {};\n _this.selection = {};\n _this.children = [];\n _this.initSize(tslib_1.__assign({}, parentGivenSize, (spec.width ? { width: spec.width } : {}), (spec.height ? { height: spec.height } : {})));\n var mark = mark_1.isMarkDef(spec.mark) ? spec.mark.type : spec.mark;\n var encoding = _this.encoding = encoding_1.normalizeEncoding(repeater_1.replaceRepeaterInEncoding(spec.encoding || {}, repeater), mark);\n _this.markDef = init_1.normalizeMarkDef(spec.mark, encoding, config);\n // calculate stack properties\n _this.stack = stack_1.stack(mark, encoding, _this.config.stack);\n _this.specifiedScales = _this.initScales(mark, encoding);\n _this.specifiedAxes = _this.initAxes(encoding);\n _this.specifiedLegends = _this.initLegend(encoding);\n _this.specifiedProjection = spec.projection;\n // Selections will be initialized upon parse.\n _this.selection = spec.selection;\n return _this;\n }\n Object.defineProperty(UnitModel.prototype, \"hasProjection\", {\n get: function () {\n var encoding = this.encoding;\n var isGeoShapeMark = this.mark === mark_1.GEOSHAPE;\n var hasGeoPosition = encoding && channel_1.GEOPOSITION_CHANNELS.some(function (channel) { return fielddef_1.isFieldDef(encoding[channel]); });\n return isGeoShapeMark || hasGeoPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return specified Vega-lite scale domain for a particular channel\n * @param channel\n */\n UnitModel.prototype.scaleDomain = function (channel) {\n var scale = this.specifiedScales[channel];\n return scale ? scale.domain : undefined;\n };\n UnitModel.prototype.axis = function (channel) {\n return this.specifiedAxes[channel];\n };\n UnitModel.prototype.legend = function (channel) {\n return this.specifiedLegends[channel];\n };\n UnitModel.prototype.initScales = function (mark, encoding) {\n return channel_1.SCALE_CHANNELS.reduce(function (scales, channel) {\n var fieldDef;\n var specifiedScale;\n var channelDef = encoding[channel];\n if (fielddef_1.isFieldDef(channelDef)) {\n fieldDef = channelDef;\n specifiedScale = channelDef.scale;\n }\n else if (fielddef_1.hasConditionalFieldDef(channelDef)) {\n fieldDef = channelDef.condition;\n specifiedScale = channelDef.condition['scale'];\n }\n else if (channel === 'x') {\n fieldDef = fielddef_1.getFieldDef(encoding.x2);\n }\n else if (channel === 'y') {\n fieldDef = fielddef_1.getFieldDef(encoding.y2);\n }\n if (fieldDef) {\n scales[channel] = specifiedScale || {};\n }\n return scales;\n }, {});\n };\n UnitModel.prototype.initAxes = function (encoding) {\n return [channel_1.X, channel_1.Y].reduce(function (_axis, channel) {\n // Position Axis\n // TODO: handle ConditionFieldDef\n var channelDef = encoding[channel];\n if (fielddef_1.isFieldDef(channelDef) ||\n (channel === channel_1.X && fielddef_1.isFieldDef(encoding.x2)) ||\n (channel === channel_1.Y && fielddef_1.isFieldDef(encoding.y2))) {\n var axisSpec = fielddef_1.isFieldDef(channelDef) ? channelDef.axis : null;\n // We no longer support false in the schema, but we keep false here for backward compatibility.\n if (axisSpec !== null && axisSpec !== false) {\n _axis[channel] = tslib_1.__assign({}, axisSpec);\n }\n }\n return _axis;\n }, {});\n };\n UnitModel.prototype.initLegend = function (encoding) {\n return channel_1.NONPOSITION_SCALE_CHANNELS.reduce(function (_legend, channel) {\n var channelDef = encoding[channel];\n if (channelDef) {\n var legend = fielddef_1.isFieldDef(channelDef) ? channelDef.legend :\n (fielddef_1.hasConditionalFieldDef(channelDef)) ? channelDef.condition['legend'] : null;\n if (legend !== null && legend !== false) {\n _legend[channel] = tslib_1.__assign({}, legend);\n }\n }\n return _legend;\n }, {});\n };\n UnitModel.prototype.parseData = function () {\n this.component.data = parse_2.parseData(this);\n };\n UnitModel.prototype.parseLayoutSize = function () {\n parse_3.parseUnitLayoutSize(this);\n };\n UnitModel.prototype.parseSelection = function () {\n this.component.selection = selection_1.parseUnitSelection(this, this.selection);\n };\n UnitModel.prototype.parseMarkGroup = function () {\n this.component.mark = mark_2.parseMarkGroup(this);\n };\n UnitModel.prototype.parseAxisAndHeader = function () {\n this.component.axes = parse_1.parseUnitAxis(this);\n };\n UnitModel.prototype.assembleSelectionTopLevelSignals = function (signals) {\n return selection_1.assembleTopLevelSignals(this, signals);\n };\n UnitModel.prototype.assembleSelectionSignals = function () {\n return selection_1.assembleUnitSelectionSignals(this, []);\n };\n UnitModel.prototype.assembleSelectionData = function (data) {\n return selection_1.assembleUnitSelectionData(this, data);\n };\n UnitModel.prototype.assembleLayout = function () {\n return null;\n };\n UnitModel.prototype.assembleLayoutSignals = function () {\n return assemble_1.assembleLayoutSignals(this);\n };\n UnitModel.prototype.assembleMarks = function () {\n var marks = this.component.mark || [];\n // If this unit is part of a layer, selections should augment\n // all in concert rather than each unit individually. This\n // ensures correct interleaving of clipping and brushed marks.\n if (!this.parent || !model_1.isLayerModel(this.parent)) {\n marks = selection_1.assembleUnitSelectionMarks(this, marks);\n }\n return marks.map(this.correctDataNames);\n };\n UnitModel.prototype.assembleLayoutSize = function () {\n return {\n width: this.getSizeSignalRef('width'),\n height: this.getSizeSignalRef('height')\n };\n };\n UnitModel.prototype.getMapping = function () {\n return this.encoding;\n };\n UnitModel.prototype.toSpec = function (excludeConfig, excludeData) {\n var encoding = util_1.duplicate(this.encoding);\n var spec;\n spec = {\n mark: this.markDef,\n encoding: encoding\n };\n if (!excludeConfig) {\n spec.config = util_1.duplicate(this.config);\n }\n if (!excludeData) {\n spec.data = util_1.duplicate(this.data);\n }\n // remove defaults\n return spec;\n };\n Object.defineProperty(UnitModel.prototype, \"mark\", {\n get: function () {\n return this.markDef.type;\n },\n enumerable: true,\n configurable: true\n });\n UnitModel.prototype.channelHasField = function (channel) {\n return vlEncoding.channelHasField(this.encoding, channel);\n };\n UnitModel.prototype.fieldDef = function (channel) {\n var channelDef = this.encoding[channel];\n return fielddef_1.getFieldDef(channelDef);\n };\n return UnitModel;\n}(model_1.ModelWithField));\nexports.UnitModel = UnitModel;\n//# sourceMappingURL=unit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar encoding_1 = require(\"../encoding\");\nvar encoding_2 = require(\"./../encoding\");\nvar fielddef_1 = require(\"./../fielddef\");\nvar log = tslib_1.__importStar(require(\"./../log\"));\nvar common_1 = require(\"./common\");\nexports.BOXPLOT = 'box-plot';\nfunction isBoxPlotDef(mark) {\n return !!mark['type'];\n}\nexports.isBoxPlotDef = isBoxPlotDef;\nexports.BOXPLOT_STYLES = ['boxWhisker', 'box', 'boxMid'];\nexports.VL_ONLY_BOXPLOT_CONFIG_PROPERTY_INDEX = {\n box: ['size', 'color', 'extent'],\n boxWhisker: ['color'],\n boxMid: ['color']\n};\nvar supportedChannels = ['x', 'y', 'color', 'detail', 'opacity', 'size'];\nfunction filterUnsupportedChannels(spec) {\n return tslib_1.__assign({}, spec, { encoding: encoding_1.reduce(spec.encoding, function (newEncoding, fieldDef, channel) {\n if (supportedChannels.indexOf(channel) > -1) {\n newEncoding[channel] = fieldDef;\n }\n else {\n log.warn(log.message.incompatibleChannel(channel, exports.BOXPLOT));\n }\n return newEncoding;\n }, {}) });\n}\nexports.filterUnsupportedChannels = filterUnsupportedChannels;\nfunction normalizeBoxPlot(spec, config) {\n var _a, _b, _c, _d;\n spec = filterUnsupportedChannels(spec);\n // TODO: use selection\n var mark = spec.mark, encoding = spec.encoding, selection = spec.selection, _p = spec.projection, outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n var kIQRScalar = undefined;\n if (vega_util_1.isNumber(config.box.extent)) {\n kIQRScalar = config.box.extent;\n }\n if (isBoxPlotDef(mark)) {\n if (mark.extent) {\n if (mark.extent === 'min-max') {\n kIQRScalar = undefined;\n }\n }\n }\n var orient = boxOrient(spec);\n var _e = boxParams(spec, orient, kIQRScalar), transform = _e.transform, continuousAxisChannelDef = _e.continuousAxisChannelDef, continuousAxis = _e.continuousAxis, encodingWithoutContinuousAxis = _e.encodingWithoutContinuousAxis;\n var color = encodingWithoutContinuousAxis.color, size = encodingWithoutContinuousAxis.size, encodingWithoutSizeColorAndContinuousAxis = tslib_1.__rest(encodingWithoutContinuousAxis, [\"color\", \"size\"]);\n // Size encoding or the default config.box.size is applied to box and boxMid\n var sizeMixins = size ? { size: size } : common_1.getMarkSpecificConfigMixins(config.box, 'size');\n var continuousAxisScaleAndAxis = {};\n if (continuousAxisChannelDef.scale) {\n continuousAxisScaleAndAxis['scale'] = continuousAxisChannelDef.scale;\n }\n if (continuousAxisChannelDef.axis) {\n continuousAxisScaleAndAxis['axis'] = continuousAxisChannelDef.axis;\n }\n return tslib_1.__assign({}, outerSpec, { transform: transform, layer: [\n {\n mark: {\n type: 'rule',\n style: 'boxWhisker'\n },\n encoding: tslib_1.__assign((_a = {}, _a[continuousAxis] = tslib_1.__assign({ field: 'lower_whisker_' + continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, continuousAxisScaleAndAxis), _a[continuousAxis + '2'] = {\n field: 'lower_box_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, _a), encodingWithoutSizeColorAndContinuousAxis, common_1.getMarkSpecificConfigMixins(config.boxWhisker, 'color'))\n }, {\n mark: {\n type: 'rule',\n style: 'boxWhisker'\n },\n encoding: tslib_1.__assign((_b = {}, _b[continuousAxis] = {\n field: 'upper_box_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, _b[continuousAxis + '2'] = {\n field: 'upper_whisker_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, _b), encodingWithoutSizeColorAndContinuousAxis, common_1.getMarkSpecificConfigMixins(config.boxWhisker, 'color'))\n },\n tslib_1.__assign({}, (selection ? { selection: selection } : {}), { mark: {\n type: 'bar',\n style: 'box'\n }, encoding: tslib_1.__assign((_c = {}, _c[continuousAxis] = {\n field: 'lower_box_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, _c[continuousAxis + '2'] = {\n field: 'upper_box_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, _c), encodingWithoutContinuousAxis, (encodingWithoutContinuousAxis.color ? {} : common_1.getMarkSpecificConfigMixins(config.box, 'color')), sizeMixins) }),\n {\n mark: {\n type: 'tick',\n style: 'boxMid'\n },\n encoding: tslib_1.__assign((_d = {}, _d[continuousAxis] = {\n field: 'mid_box_' + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type\n }, _d), encodingWithoutSizeColorAndContinuousAxis, common_1.getMarkSpecificConfigMixins(config.boxMid, 'color'), sizeMixins)\n }\n ] });\n}\nexports.normalizeBoxPlot = normalizeBoxPlot;\nfunction boxOrient(spec) {\n var mark = spec.mark, encoding = spec.encoding, _p = spec.projection, _outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"projection\"]);\n if (fielddef_1.isFieldDef(encoding.x) && fielddef_1.isContinuous(encoding.x)) {\n // x is continuous\n if (fielddef_1.isFieldDef(encoding.y) && fielddef_1.isContinuous(encoding.y)) {\n // both x and y are continuous\n if (encoding.x.aggregate === undefined && encoding.y.aggregate === exports.BOXPLOT) {\n return 'vertical';\n }\n else if (encoding.y.aggregate === undefined && encoding.x.aggregate === exports.BOXPLOT) {\n return 'horizontal';\n }\n else if (encoding.x.aggregate === exports.BOXPLOT && encoding.y.aggregate === exports.BOXPLOT) {\n throw new Error('Both x and y cannot have aggregate');\n }\n else {\n if (isBoxPlotDef(mark) && mark.orient) {\n return mark.orient;\n }\n // default orientation = vertical\n return 'vertical';\n }\n }\n // x is continuous but y is not\n return 'horizontal';\n }\n else if (fielddef_1.isFieldDef(encoding.y) && fielddef_1.isContinuous(encoding.y)) {\n // y is continuous but x is not\n return 'vertical';\n }\n else {\n // Neither x nor y is continuous.\n throw new Error('Need a valid continuous axis for boxplots');\n }\n}\nfunction boxContinousAxis(spec, orient) {\n var mark = spec.mark, encoding = spec.encoding, _p = spec.projection, _outerSpec = tslib_1.__rest(spec, [\"mark\", \"encoding\", \"projection\"]);\n var continuousAxisChannelDef;\n var continuousAxis;\n if (orient === 'vertical') {\n continuousAxis = 'y';\n continuousAxisChannelDef = encoding.y; // Safe to cast because if y is not continuous fielddef, the orient would not be vertical.\n }\n else {\n continuousAxis = 'x';\n continuousAxisChannelDef = encoding.x; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n }\n if (continuousAxisChannelDef && continuousAxisChannelDef.aggregate) {\n var aggregate = continuousAxisChannelDef.aggregate, continuousAxisWithoutAggregate = tslib_1.__rest(continuousAxisChannelDef, [\"aggregate\"]);\n if (aggregate !== exports.BOXPLOT) {\n log.warn(\"Continuous axis should not have customized aggregation function \" + aggregate);\n }\n continuousAxisChannelDef = continuousAxisWithoutAggregate;\n }\n return {\n continuousAxisChannelDef: continuousAxisChannelDef,\n continuousAxis: continuousAxis\n };\n}\nfunction boxParams(spec, orient, kIQRScalar) {\n var _a = boxContinousAxis(spec, orient), continuousAxisChannelDef = _a.continuousAxisChannelDef, continuousAxis = _a.continuousAxis;\n var encoding = spec.encoding;\n var isMinMax = kIQRScalar === undefined;\n var aggregate = [\n {\n op: 'q1',\n field: continuousAxisChannelDef.field,\n as: 'lower_box_' + continuousAxisChannelDef.field\n },\n {\n op: 'q3',\n field: continuousAxisChannelDef.field,\n as: 'upper_box_' + continuousAxisChannelDef.field\n },\n {\n op: 'median',\n field: continuousAxisChannelDef.field,\n as: 'mid_box_' + continuousAxisChannelDef.field\n }\n ];\n var postAggregateCalculates = [];\n aggregate.push({\n op: 'min',\n field: continuousAxisChannelDef.field,\n as: (isMinMax ? 'lower_whisker_' : 'min_') + continuousAxisChannelDef.field\n });\n aggregate.push({\n op: 'max',\n field: continuousAxisChannelDef.field,\n as: (isMinMax ? 'upper_whisker_' : 'max_') + continuousAxisChannelDef.field\n });\n if (!isMinMax) {\n postAggregateCalculates = [\n {\n calculate: \"datum.upper_box_\" + continuousAxisChannelDef.field + \" - datum.lower_box_\" + continuousAxisChannelDef.field,\n as: 'iqr_' + continuousAxisChannelDef.field\n },\n {\n calculate: \"min(datum.upper_box_\" + continuousAxisChannelDef.field + \" + datum.iqr_\" + continuousAxisChannelDef.field + \" * \" + kIQRScalar + \", datum.max_\" + continuousAxisChannelDef.field + \")\",\n as: 'upper_whisker_' + continuousAxisChannelDef.field\n },\n {\n calculate: \"max(datum.lower_box_\" + continuousAxisChannelDef.field + \" - datum.iqr_\" + continuousAxisChannelDef.field + \" * \" + kIQRScalar + \", datum.min_\" + continuousAxisChannelDef.field + \")\",\n as: 'lower_whisker_' + continuousAxisChannelDef.field\n }\n ];\n }\n var groupby = [];\n var bins = [];\n var timeUnits = [];\n var encodingWithoutContinuousAxis = {};\n encoding_2.forEach(encoding, function (channelDef, channel) {\n if (channel === continuousAxis) {\n // Skip continuous axis as we already handle it separately\n return;\n }\n if (fielddef_1.isFieldDef(channelDef)) {\n if (channelDef.aggregate && channelDef.aggregate !== exports.BOXPLOT) {\n aggregate.push({\n op: channelDef.aggregate,\n field: channelDef.field,\n as: fielddef_1.vgField(channelDef)\n });\n }\n else if (channelDef.aggregate === undefined) {\n var transformedField = fielddef_1.vgField(channelDef);\n // Add bin or timeUnit transform if applicable\n var bin = channelDef.bin;\n if (bin) {\n var field = channelDef.field;\n bins.push({ bin: bin, field: field, as: transformedField });\n }\n else if (channelDef.timeUnit) {\n var timeUnit = channelDef.timeUnit, field = channelDef.field;\n timeUnits.push({ timeUnit: timeUnit, field: field, as: transformedField });\n }\n groupby.push(transformedField);\n }\n // now the field should refer to post-transformed field instead\n encodingWithoutContinuousAxis[channel] = {\n field: fielddef_1.vgField(channelDef),\n type: channelDef.type\n };\n }\n else {\n // For value def, just copy\n encodingWithoutContinuousAxis[channel] = encoding[channel];\n }\n });\n return {\n transform: [].concat(bins, timeUnits, [{ aggregate: aggregate, groupby: groupby }], postAggregateCalculates),\n continuousAxisChannelDef: continuousAxisChannelDef,\n continuousAxis: continuousAxis,\n encodingWithoutContinuousAxis: encodingWithoutContinuousAxis\n };\n}\n//# sourceMappingURL=boxplot.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getMarkSpecificConfigMixins(markSpecificConfig, channel) {\n var _a;\n var value = markSpecificConfig[channel];\n return value !== undefined ? (_a = {}, _a[channel] = { value: value }, _a) : {};\n}\nexports.getMarkSpecificConfigMixins = getMarkSpecificConfigMixins;\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nexports.ERRORBAR = 'error-bar';\nfunction normalizeErrorBar(spec) {\n // TODO: use selection\n var _m = spec.mark, _sel = spec.selection, _p = spec.projection, encoding = spec.encoding, outerSpec = tslib_1.__rest(spec, [\"mark\", \"selection\", \"projection\", \"encoding\"]);\n var _s = encoding.size, encodingWithoutSize = tslib_1.__rest(encoding, [\"size\"]);\n var _x2 = encoding.x2, _y2 = encoding.y2, encodingWithoutX2Y2 = tslib_1.__rest(encoding, [\"x2\", \"y2\"]);\n var _x = encodingWithoutX2Y2.x, _y = encodingWithoutX2Y2.y, encodingWithoutX_X2_Y_Y2 = tslib_1.__rest(encodingWithoutX2Y2, [\"x\", \"y\"]);\n if (!encoding.x2 && !encoding.y2) {\n throw new Error('Neither x2 or y2 provided');\n }\n return tslib_1.__assign({}, outerSpec, { layer: [\n {\n mark: 'rule',\n encoding: encodingWithoutSize\n }, {\n mark: 'tick',\n encoding: encodingWithoutX2Y2\n }, {\n mark: 'tick',\n encoding: encoding.x2 ? tslib_1.__assign({ x: encoding.x2, y: encoding.y }, encodingWithoutX_X2_Y_Y2) : tslib_1.__assign({ x: encoding.x, y: encoding.y2 }, encodingWithoutX_X2_Y_Y2)\n }\n ] });\n}\nexports.normalizeErrorBar = normalizeErrorBar;\n//# sourceMappingURL=errorbar.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar mark_1 = require(\"./../mark\");\nvar boxplot_1 = require(\"./boxplot\");\nvar errorbar_1 = require(\"./errorbar\");\n// This package import below makes the generated .d.ts file compatible with\n// Typescript 2.7 so that libraries requiring us can use Typedoc (which\n// currently is limited to Typescript 2.7). This comment and import can be\n// removed when Typedoc is updated to Typescript 2.9 or later. See\n// https://github.com/vega/vega-lite/issues/3862 for more details.\nvar boxplot = tslib_1.__importStar(require(\"./boxplot\"));\n/**\n * Registry index for all composite mark's normalizer\n */\nvar normalizerRegistry = {};\nfunction add(mark, normalizer) {\n normalizerRegistry[mark] = normalizer;\n}\nexports.add = add;\nfunction remove(mark) {\n delete normalizerRegistry[mark];\n}\nexports.remove = remove;\nexports.COMPOSITE_MARK_STYLES = boxplot.BOXPLOT_STYLES;\nexports.VL_ONLY_COMPOSITE_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = tslib_1.__assign({}, boxplot_1.VL_ONLY_BOXPLOT_CONFIG_PROPERTY_INDEX);\nadd(boxplot_1.BOXPLOT, boxplot_1.normalizeBoxPlot);\nadd(errorbar_1.ERRORBAR, errorbar_1.normalizeErrorBar);\n/**\n * Transform a unit spec with composite mark into a normal layer spec.\n */\nfunction normalize(\n// This GenericUnitSpec has any as Encoding because unit specs with composite mark can have additional encoding channels.\nspec, config) {\n var mark = mark_1.isMarkDef(spec.mark) ? spec.mark.type : spec.mark;\n var normalizer = normalizerRegistry[mark];\n if (normalizer) {\n return normalizer(spec, config);\n }\n throw new Error(\"Invalid mark type \\\"\" + mark + \"\\\"\");\n}\nexports.normalize = normalize;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar compositemark_1 = require(\"./compositemark\");\nvar index_1 = require(\"./compositemark/index\");\nvar guide_1 = require(\"./guide\");\nvar legend_1 = require(\"./legend\");\nvar mark = tslib_1.__importStar(require(\"./mark\"));\nvar mark_1 = require(\"./mark\");\nvar scale_1 = require(\"./scale\");\nvar selection_1 = require(\"./selection\");\nvar title_1 = require(\"./title\");\nvar util_1 = require(\"./util\");\nexports.defaultViewConfig = {\n width: 200,\n height: 200\n};\nexports.defaultConfig = {\n padding: 5,\n timeFormat: '',\n countTitle: 'Number of Records',\n invalidValues: 'filter',\n view: exports.defaultViewConfig,\n mark: mark.defaultMarkConfig,\n area: {},\n bar: mark.defaultBarConfig,\n circle: {},\n geoshape: {},\n line: {},\n point: {},\n rect: {},\n rule: { color: 'black' },\n square: {},\n text: { color: 'black' },\n tick: mark.defaultTickConfig,\n trail: {},\n box: { size: 14, extent: 1.5 },\n boxWhisker: {},\n boxMid: { color: 'white' },\n scale: scale_1.defaultScaleConfig,\n projection: {},\n axis: {},\n axisX: {},\n axisY: { minExtent: 30 },\n axisLeft: {},\n axisRight: {},\n axisTop: {},\n axisBottom: {},\n axisBand: {},\n legend: legend_1.defaultLegendConfig,\n selection: selection_1.defaultConfig,\n style: {},\n title: {},\n};\nfunction initConfig(config) {\n return util_1.mergeDeep(util_1.duplicate(exports.defaultConfig), config);\n}\nexports.initConfig = initConfig;\nvar MARK_STYLES = ['view'].concat(mark_1.PRIMITIVE_MARKS, compositemark_1.COMPOSITE_MARK_STYLES);\nvar VL_ONLY_CONFIG_PROPERTIES = [\n 'padding', 'numberFormat', 'timeFormat', 'countTitle',\n 'stack', 'scale', 'selection', 'invalidValues',\n 'overlay' // FIXME: Redesign and unhide this\n];\nvar VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = tslib_1.__assign({ view: ['width', 'height'] }, mark_1.VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX, index_1.VL_ONLY_COMPOSITE_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX);\nfunction stripAndRedirectConfig(config) {\n config = util_1.duplicate(config);\n for (var _i = 0, VL_ONLY_CONFIG_PROPERTIES_1 = VL_ONLY_CONFIG_PROPERTIES; _i < VL_ONLY_CONFIG_PROPERTIES_1.length; _i++) {\n var prop = VL_ONLY_CONFIG_PROPERTIES_1[_i];\n delete config[prop];\n }\n // Remove Vega-Lite only axis/legend config\n if (config.axis) {\n for (var _a = 0, VL_ONLY_GUIDE_CONFIG_1 = guide_1.VL_ONLY_GUIDE_CONFIG; _a < VL_ONLY_GUIDE_CONFIG_1.length; _a++) {\n var prop = VL_ONLY_GUIDE_CONFIG_1[_a];\n delete config.axis[prop];\n }\n }\n if (config.legend) {\n for (var _b = 0, VL_ONLY_GUIDE_CONFIG_2 = guide_1.VL_ONLY_GUIDE_CONFIG; _b < VL_ONLY_GUIDE_CONFIG_2.length; _b++) {\n var prop = VL_ONLY_GUIDE_CONFIG_2[_b];\n delete config.legend[prop];\n }\n }\n // Remove Vega-Lite only generic mark config\n if (config.mark) {\n for (var _c = 0, VL_ONLY_MARK_CONFIG_PROPERTIES_1 = mark_1.VL_ONLY_MARK_CONFIG_PROPERTIES; _c < VL_ONLY_MARK_CONFIG_PROPERTIES_1.length; _c++) {\n var prop = VL_ONLY_MARK_CONFIG_PROPERTIES_1[_c];\n delete config.mark[prop];\n }\n }\n for (var _d = 0, MARK_STYLES_1 = MARK_STYLES; _d < MARK_STYLES_1.length; _d++) {\n var markType = MARK_STYLES_1[_d];\n // Remove Vega-Lite-only mark config\n for (var _e = 0, VL_ONLY_MARK_CONFIG_PROPERTIES_2 = mark_1.VL_ONLY_MARK_CONFIG_PROPERTIES; _e < VL_ONLY_MARK_CONFIG_PROPERTIES_2.length; _e++) {\n var prop = VL_ONLY_MARK_CONFIG_PROPERTIES_2[_e];\n delete config[markType][prop];\n }\n // Remove Vega-Lite only mark-specific config\n var vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n if (vlOnlyMarkSpecificConfigs) {\n for (var _f = 0, vlOnlyMarkSpecificConfigs_1 = vlOnlyMarkSpecificConfigs; _f < vlOnlyMarkSpecificConfigs_1.length; _f++) {\n var prop = vlOnlyMarkSpecificConfigs_1[_f];\n delete config[markType][prop];\n }\n }\n // Redirect mark config to config.style so that mark config only affect its own mark type\n // without affecting other marks that share the same underlying Vega marks.\n // For example, config.rect should not affect bar marks.\n redirectConfig(config, markType);\n }\n // Redirect config.title -- so that title config do not\n // affect header labels, which also uses `title` directive to implement.\n redirectConfig(config, 'title', 'group-title');\n // Remove empty config objects\n for (var prop in config) {\n if (vega_util_1.isObject(config[prop]) && util_1.keys(config[prop]).length === 0) {\n delete config[prop];\n }\n }\n return util_1.keys(config).length > 0 ? config : undefined;\n}\nexports.stripAndRedirectConfig = stripAndRedirectConfig;\nfunction redirectConfig(config, prop, toProp) {\n var propConfig = prop === 'title' ? title_1.extractTitleConfig(config.title).mark : config[prop];\n if (prop === 'view') {\n toProp = 'cell'; // View's default style is \"cell\"\n }\n var style = tslib_1.__assign({}, propConfig, config.style[prop]);\n // set config.style if it is not an empty object\n if (util_1.keys(style).length > 0) {\n config.style[toProp || prop] = style;\n }\n delete config[prop];\n}\n//# sourceMappingURL=config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isUrlData(data) {\n return !!data['url'];\n}\nexports.isUrlData = isUrlData;\nfunction isInlineData(data) {\n return !!data['values'];\n}\nexports.isInlineData = isInlineData;\nfunction isNamedData(data) {\n return !!data['name'] && !isUrlData(data) && !isInlineData(data);\n}\nexports.isNamedData = isNamedData;\nexports.MAIN = 'main';\nexports.RAW = 'raw';\n//# sourceMappingURL=data.js.map","\"use strict\";\n// DateTime definition object\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar util_1 = require(\"./util\");\n/*\n * A designated year that starts on Sunday.\n */\nvar SUNDAY_YEAR = 2006;\nfunction isDateTime(o) {\n return !!o && (!!o.year || !!o.quarter || !!o.month || !!o.date || !!o.day ||\n !!o.hours || !!o.minutes || !!o.seconds || !!o.milliseconds);\n}\nexports.isDateTime = isDateTime;\nexports.MONTHS = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nexports.SHORT_MONTHS = exports.MONTHS.map(function (m) { return m.substr(0, 3); });\nexports.DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexports.SHORT_DAYS = exports.DAYS.map(function (d) { return d.substr(0, 3); });\nfunction normalizeQuarter(q) {\n if (vega_util_1.isNumber(q)) {\n if (q > 4) {\n log.warn(log.message.invalidTimeUnit('quarter', q));\n }\n // We accept 1-based quarter, so need to readjust to 0-based quarter\n return (q - 1) + '';\n }\n else {\n // Invalid quarter\n throw new Error(log.message.invalidTimeUnit('quarter', q));\n }\n}\nfunction normalizeMonth(m) {\n if (vega_util_1.isNumber(m)) {\n // We accept 1-based month, so need to readjust to 0-based month\n return (m - 1) + '';\n }\n else {\n var lowerM = m.toLowerCase();\n var monthIndex = exports.MONTHS.indexOf(lowerM);\n if (monthIndex !== -1) {\n return monthIndex + ''; // 0 for january, ...\n }\n var shortM = lowerM.substr(0, 3);\n var shortMonthIndex = exports.SHORT_MONTHS.indexOf(shortM);\n if (shortMonthIndex !== -1) {\n return shortMonthIndex + '';\n }\n // Invalid month\n throw new Error(log.message.invalidTimeUnit('month', m));\n }\n}\nfunction normalizeDay(d) {\n if (vega_util_1.isNumber(d)) {\n // mod so that this can be both 0-based where 0 = sunday\n // and 1-based where 7=sunday\n return (d % 7) + '';\n }\n else {\n var lowerD = d.toLowerCase();\n var dayIndex = exports.DAYS.indexOf(lowerD);\n if (dayIndex !== -1) {\n return dayIndex + ''; // 0 for january, ...\n }\n var shortD = lowerD.substr(0, 3);\n var shortDayIndex = exports.SHORT_DAYS.indexOf(shortD);\n if (shortDayIndex !== -1) {\n return shortDayIndex + '';\n }\n // Invalid day\n throw new Error(log.message.invalidTimeUnit('day', d));\n }\n}\n/**\n * Return Vega Expression for a particular date time.\n * @param d\n * @param normalize whether to normalize quarter, month, day.\n */\nfunction dateTimeExpr(d, normalize) {\n if (normalize === void 0) { normalize = false; }\n var units = [];\n if (normalize && d.day !== undefined) {\n if (util_1.keys(d).length > 1) {\n log.warn(log.message.droppedDay(d));\n d = util_1.duplicate(d);\n delete d.day;\n }\n }\n if (d.year !== undefined) {\n units.push(d.year);\n }\n else if (d.day !== undefined) {\n // Set year to 2006 for working with day since January 1 2006 is a Sunday\n units.push(SUNDAY_YEAR);\n }\n else {\n units.push(0);\n }\n if (d.month !== undefined) {\n var month = normalize ? normalizeMonth(d.month) : d.month;\n units.push(month);\n }\n else if (d.quarter !== undefined) {\n var quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n units.push(quarter + '*3');\n }\n else {\n units.push(0); // months start at zero in JS\n }\n if (d.date !== undefined) {\n units.push(d.date);\n }\n else if (d.day !== undefined) {\n // HACK: Day only works as a standalone unit\n // This is only correct because we always set year to 2006 for day\n var day = normalize ? normalizeDay(d.day) : d.day;\n units.push(day + '+1');\n }\n else {\n units.push(1); // Date starts at 1 in JS\n }\n // Note: can't use TimeUnit enum here as importing it will create\n // circular dependency problem!\n for (var _i = 0, _a = ['hours', 'minutes', 'seconds', 'milliseconds']; _i < _a.length; _i++) {\n var timeUnit = _a[_i];\n if (d[timeUnit] !== undefined) {\n units.push(d[timeUnit]);\n }\n else {\n units.push(0);\n }\n }\n if (d.utc) {\n return \"utc(\" + units.join(', ') + \")\";\n }\n else {\n return \"datetime(\" + units.join(', ') + \")\";\n }\n}\nexports.dateTimeExpr = dateTimeExpr;\n//# sourceMappingURL=datetime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"./channel\");\nvar fielddef_1 = require(\"./fielddef\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar type_1 = require(\"./type\");\nvar util_1 = require(\"./util\");\nfunction channelHasField(encoding, channel) {\n var channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (vega_util_1.isArray(channelDef)) {\n return util_1.some(channelDef, function (fieldDef) { return !!fieldDef.field; });\n }\n else {\n return fielddef_1.isFieldDef(channelDef) || fielddef_1.hasConditionalFieldDef(channelDef);\n }\n }\n return false;\n}\nexports.channelHasField = channelHasField;\nfunction isAggregate(encoding) {\n return util_1.some(channel_1.CHANNELS, function (channel) {\n if (channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n if (vega_util_1.isArray(channelDef)) {\n return util_1.some(channelDef, function (fieldDef) { return !!fieldDef.aggregate; });\n }\n else {\n var fieldDef = fielddef_1.getFieldDef(channelDef);\n return fieldDef && !!fieldDef.aggregate;\n }\n }\n return false;\n });\n}\nexports.isAggregate = isAggregate;\nfunction normalizeEncoding(encoding, mark) {\n return util_1.keys(encoding).reduce(function (normalizedEncoding, channel) {\n var _a;\n if (!channel_1.isChannel(channel)) {\n // Drop invalid channel\n log.warn(log.message.invalidEncodingChannel(channel));\n return normalizedEncoding;\n }\n if (!channel_1.supportMark(channel, mark)) {\n // Drop unsupported channel\n log.warn(log.message.incompatibleChannel(channel, mark));\n return normalizedEncoding;\n }\n // Drop line's size if the field is aggregated.\n if (channel === 'size' && mark === 'line') {\n var fieldDef = fielddef_1.getFieldDef(encoding[channel]);\n if (fieldDef && fieldDef.aggregate) {\n log.warn(log.message.LINE_WITH_VARYING_SIZE);\n return normalizedEncoding;\n }\n }\n // Drop color if either fill or stroke is specified\n if (channel === 'color' && ('fill' in encoding || 'stroke' in encoding)) {\n log.warn(log.message.droppingColor('encoding', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n return normalizedEncoding;\n }\n var channelDef = encoding[channel];\n if (channel === 'detail' ||\n (channel === 'order' && !vega_util_1.isArray(channelDef) && !fielddef_1.isValueDef(channelDef)) ||\n (channel === 'tooltip' && vega_util_1.isArray(channelDef))) {\n if (channelDef) {\n // Array of fieldDefs for detail channel (or production rule)\n normalizedEncoding[channel] = (vega_util_1.isArray(channelDef) ? channelDef : [channelDef])\n .reduce(function (defs, fieldDef) {\n if (!fielddef_1.isFieldDef(fieldDef)) {\n log.warn(log.message.emptyFieldDef(fieldDef, channel));\n }\n else {\n defs.push(fielddef_1.normalizeFieldDef(fieldDef, channel));\n }\n return defs;\n }, []);\n }\n }\n else {\n var fieldDef = fielddef_1.getFieldDef(encoding[channel]);\n if (fieldDef && util_1.contains([type_1.Type.LATITUDE, type_1.Type.LONGITUDE], fieldDef.type)) {\n var _b = channel, _ = normalizedEncoding[_b], newEncoding = tslib_1.__rest(normalizedEncoding, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n var newChannel = channel === 'x' ? 'longitude' :\n channel === 'y' ? 'latitude' :\n channel === 'x2' ? 'longitude2' :\n channel === 'y2' ? 'latitude2' : undefined;\n log.warn(log.message.latLongDeprecated(channel, fieldDef.type, newChannel));\n return tslib_1.__assign({}, newEncoding, (_a = {}, _a[newChannel] = tslib_1.__assign({}, fielddef_1.normalize(fieldDef, channel), { type: 'quantitative' }), _a));\n }\n if (!fielddef_1.isFieldDef(channelDef) && !fielddef_1.isValueDef(channelDef) && !fielddef_1.isConditionalDef(channelDef)) {\n log.warn(log.message.emptyFieldDef(channelDef, channel));\n return normalizedEncoding;\n }\n normalizedEncoding[channel] = fielddef_1.normalize(channelDef, channel);\n }\n return normalizedEncoding;\n }, {});\n}\nexports.normalizeEncoding = normalizeEncoding;\nfunction isRanged(encoding) {\n return encoding && ((!!encoding.x && !!encoding.x2) || (!!encoding.y && !!encoding.y2));\n}\nexports.isRanged = isRanged;\nfunction fieldDefs(encoding) {\n var arr = [];\n channel_1.CHANNELS.forEach(function (channel) {\n if (channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n (vega_util_1.isArray(channelDef) ? channelDef : [channelDef]).forEach(function (def) {\n if (fielddef_1.isFieldDef(def)) {\n arr.push(def);\n }\n else if (fielddef_1.hasConditionalFieldDef(def)) {\n arr.push(def.condition);\n }\n });\n }\n });\n return arr;\n}\nexports.fieldDefs = fieldDefs;\nfunction forEach(mapping, f, thisArg) {\n if (!mapping) {\n return;\n }\n var _loop_1 = function (channel) {\n if (vega_util_1.isArray(mapping[channel])) {\n mapping[channel].forEach(function (channelDef) {\n f.call(thisArg, channelDef, channel);\n });\n }\n else {\n f.call(thisArg, mapping[channel], channel);\n }\n };\n for (var _i = 0, _a = util_1.keys(mapping); _i < _a.length; _i++) {\n var channel = _a[_i];\n _loop_1(channel);\n }\n}\nexports.forEach = forEach;\nfunction reduce(mapping, f, init, thisArg) {\n if (!mapping) {\n return init;\n }\n return util_1.keys(mapping).reduce(function (r, channel) {\n var map = mapping[channel];\n if (vega_util_1.isArray(map)) {\n return map.reduce(function (r1, channelDef) {\n return f.call(thisArg, r1, channelDef, channel);\n }, r);\n }\n else {\n return f.call(thisArg, r, map, channel);\n }\n }, init);\n}\nexports.reduce = reduce;\n//# sourceMappingURL=encoding.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=facet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar aggregate_1 = require(\"./aggregate\");\nvar bin_1 = require(\"./bin\");\nvar channel_1 = require(\"./channel\");\nvar datetime_1 = require(\"./datetime\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar timeunit_1 = require(\"./timeunit\");\nvar type_1 = require(\"./type\");\nvar util_1 = require(\"./util\");\nfunction isConditionalSelection(c) {\n return c['selection'];\n}\nexports.isConditionalSelection = isConditionalSelection;\nfunction isRepeatRef(field) {\n return field && !vega_util_1.isString(field) && 'repeat' in field;\n}\nexports.isRepeatRef = isRepeatRef;\nfunction toFieldDefBase(fieldDef) {\n var field = fieldDef.field, timeUnit = fieldDef.timeUnit, bin = fieldDef.bin, aggregate = fieldDef.aggregate;\n return tslib_1.__assign({}, (timeUnit ? { timeUnit: timeUnit } : {}), (bin ? { bin: bin } : {}), (aggregate ? { aggregate: aggregate } : {}), { field: field });\n}\nexports.toFieldDefBase = toFieldDefBase;\nfunction isConditionalDef(channelDef) {\n return !!channelDef && !!channelDef.condition;\n}\nexports.isConditionalDef = isConditionalDef;\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nfunction hasConditionalFieldDef(channelDef) {\n return !!channelDef && !!channelDef.condition && !vega_util_1.isArray(channelDef.condition) && isFieldDef(channelDef.condition);\n}\nexports.hasConditionalFieldDef = hasConditionalFieldDef;\nfunction hasConditionalValueDef(channelDef) {\n return !!channelDef && !!channelDef.condition && (vega_util_1.isArray(channelDef.condition) || isValueDef(channelDef.condition));\n}\nexports.hasConditionalValueDef = hasConditionalValueDef;\nfunction isFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nexports.isFieldDef = isFieldDef;\nfunction isStringFieldDef(fieldDef) {\n return isFieldDef(fieldDef) && vega_util_1.isString(fieldDef.field);\n}\nexports.isStringFieldDef = isStringFieldDef;\nfunction isValueDef(channelDef) {\n return channelDef && 'value' in channelDef && channelDef['value'] !== undefined;\n}\nexports.isValueDef = isValueDef;\nfunction isScaleFieldDef(channelDef) {\n return !!channelDef && (!!channelDef['scale'] || !!channelDef['sort']);\n}\nexports.isScaleFieldDef = isScaleFieldDef;\nfunction isOpFieldDef(fieldDef) {\n return !!fieldDef['op'];\n}\nfunction vgField(fieldDef, opt) {\n if (opt === void 0) { opt = {}; }\n var field = fieldDef.field;\n var prefix = opt.prefix;\n var suffix = opt.suffix;\n if (isCount(fieldDef)) {\n field = 'count_*';\n }\n else {\n var fn = undefined;\n if (!opt.nofn) {\n if (isOpFieldDef(fieldDef)) {\n fn = fieldDef.op;\n }\n else if (fieldDef.bin) {\n fn = bin_1.binToString(fieldDef.bin);\n suffix = opt.binSuffix || '';\n }\n else if (fieldDef.aggregate) {\n fn = String(fieldDef.aggregate);\n }\n else if (fieldDef.timeUnit) {\n fn = String(fieldDef.timeUnit);\n }\n }\n if (fn) {\n field = field ? fn + \"_\" + field : fn;\n }\n }\n if (suffix) {\n field = field + \"_\" + suffix;\n }\n if (prefix) {\n field = prefix + \"_\" + field;\n }\n if (opt.expr) {\n // Expression to access flattened field. No need to escape dots.\n return util_1.flatAccessWithDatum(field, opt.expr);\n }\n else {\n // We flattened all fields so paths should have become dot.\n return util_1.replacePathInField(field);\n }\n}\nexports.vgField = vgField;\nfunction isDiscrete(fieldDef) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n case 'geojson':\n return true;\n case 'quantitative':\n return !!fieldDef.bin;\n case 'latitude':\n case 'longitude':\n case 'temporal':\n return false;\n }\n throw new Error(log.message.invalidFieldType(fieldDef.type));\n}\nexports.isDiscrete = isDiscrete;\nfunction isContinuous(fieldDef) {\n return !isDiscrete(fieldDef);\n}\nexports.isContinuous = isContinuous;\nfunction isCount(fieldDef) {\n return fieldDef.aggregate === 'count';\n}\nexports.isCount = isCount;\nfunction verbalTitleFormatter(fieldDef, config) {\n var field = fieldDef.field, bin = fieldDef.bin, timeUnit = fieldDef.timeUnit, aggregate = fieldDef.aggregate;\n if (aggregate === 'count') {\n return config.countTitle;\n }\n else if (bin) {\n return field + \" (binned)\";\n }\n else if (timeUnit) {\n var units = timeunit_1.getTimeUnitParts(timeUnit).join('-');\n return field + \" (\" + units + \")\";\n }\n else if (aggregate) {\n return util_1.titlecase(aggregate) + \" of \" + field;\n }\n return field;\n}\nexports.verbalTitleFormatter = verbalTitleFormatter;\nfunction functionalTitleFormatter(fieldDef, config) {\n var fn = fieldDef.aggregate || fieldDef.timeUnit || (fieldDef.bin && 'bin');\n if (fn) {\n return fn.toUpperCase() + '(' + fieldDef.field + ')';\n }\n else {\n return fieldDef.field;\n }\n}\nexports.functionalTitleFormatter = functionalTitleFormatter;\nexports.defaultTitleFormatter = function (fieldDef, config) {\n switch (config.fieldTitle) {\n case 'plain':\n return fieldDef.field;\n case 'functional':\n return functionalTitleFormatter(fieldDef, config);\n default:\n return verbalTitleFormatter(fieldDef, config);\n }\n};\nvar titleFormatter = exports.defaultTitleFormatter;\nfunction setTitleFormatter(formatter) {\n titleFormatter = formatter;\n}\nexports.setTitleFormatter = setTitleFormatter;\nfunction resetTitleFormatter() {\n setTitleFormatter(exports.defaultTitleFormatter);\n}\nexports.resetTitleFormatter = resetTitleFormatter;\nfunction title(fieldDef, config) {\n return titleFormatter(fieldDef, config);\n}\nexports.title = title;\nfunction defaultType(fieldDef, channel) {\n if (fieldDef.timeUnit) {\n return 'temporal';\n }\n if (fieldDef.bin) {\n return 'quantitative';\n }\n switch (channel_1.rangeType(channel)) {\n case 'continuous':\n return 'quantitative';\n case 'discrete':\n return 'nominal';\n case 'flexible': // color\n return 'nominal';\n default:\n return 'quantitative';\n }\n}\nexports.defaultType = defaultType;\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nfunction getFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\nexports.getFieldDef = getFieldDef;\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nfunction normalize(channelDef, channel) {\n if (vega_util_1.isString(channelDef) || vega_util_1.isNumber(channelDef) || vega_util_1.isBoolean(channelDef)) {\n var primitiveType = vega_util_1.isString(channelDef) ? 'string' :\n vega_util_1.isNumber(channelDef) ? 'number' : 'boolean';\n log.warn(log.message.primitiveChannelDef(channel, primitiveType, channelDef));\n return { value: channelDef };\n }\n // If a fieldDef contains a field, we need type.\n if (isFieldDef(channelDef)) {\n return normalizeFieldDef(channelDef, channel);\n }\n else if (hasConditionalFieldDef(channelDef)) {\n return tslib_1.__assign({}, channelDef, { \n // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition\n condition: normalizeFieldDef(channelDef.condition, channel) });\n }\n return channelDef;\n}\nexports.normalize = normalize;\nfunction normalizeFieldDef(fieldDef, channel) {\n // Drop invalid aggregate\n if (fieldDef.aggregate && !aggregate_1.isAggregateOp(fieldDef.aggregate)) {\n var aggregate = fieldDef.aggregate, fieldDefWithoutAggregate = tslib_1.__rest(fieldDef, [\"aggregate\"]);\n log.warn(log.message.invalidAggregate(fieldDef.aggregate));\n fieldDef = fieldDefWithoutAggregate;\n }\n // Normalize Time Unit\n if (fieldDef.timeUnit) {\n fieldDef = tslib_1.__assign({}, fieldDef, { timeUnit: timeunit_1.normalizeTimeUnit(fieldDef.timeUnit) });\n }\n // Normalize bin\n if (fieldDef.bin) {\n fieldDef = tslib_1.__assign({}, fieldDef, { bin: normalizeBin(fieldDef.bin, channel) });\n }\n // Normalize Type\n if (fieldDef.type) {\n var fullType = type_1.getFullName(fieldDef.type);\n if (fieldDef.type !== fullType) {\n // convert short type to full type\n fieldDef = tslib_1.__assign({}, fieldDef, { type: fullType });\n }\n if (fieldDef.type !== 'quantitative') {\n if (aggregate_1.isCountingAggregateOp(fieldDef.aggregate)) {\n log.warn(log.message.invalidFieldTypeForCountAggregate(fieldDef.type, fieldDef.aggregate));\n fieldDef = tslib_1.__assign({}, fieldDef, { type: 'quantitative' });\n }\n }\n }\n else {\n // If type is empty / invalid, then augment with default type\n var newType = defaultType(fieldDef, channel);\n log.warn(log.message.emptyOrInvalidFieldType(fieldDef.type, channel, newType));\n fieldDef = tslib_1.__assign({}, fieldDef, { type: newType });\n }\n var _a = channelCompatibility(fieldDef, channel), compatible = _a.compatible, warning = _a.warning;\n if (!compatible) {\n log.warn(warning);\n }\n return fieldDef;\n}\nexports.normalizeFieldDef = normalizeFieldDef;\nfunction normalizeBin(bin, channel) {\n if (vega_util_1.isBoolean(bin)) {\n return { maxbins: bin_1.autoMaxBins(channel) };\n }\n else if (!bin.maxbins && !bin.step) {\n return tslib_1.__assign({}, bin, { maxbins: bin_1.autoMaxBins(channel) });\n }\n else {\n return bin;\n }\n}\nexports.normalizeBin = normalizeBin;\nvar COMPATIBLE = { compatible: true };\nfunction channelCompatibility(fieldDef, channel) {\n var type = fieldDef.type;\n switch (channel) {\n case 'row':\n case 'column':\n if (isContinuous(fieldDef)) {\n return {\n compatible: false,\n warning: log.message.facetChannelShouldBeDiscrete(channel)\n };\n }\n return COMPATIBLE;\n case 'x':\n case 'y':\n case 'color':\n case 'fill':\n case 'stroke':\n case 'text':\n case 'detail':\n case 'key':\n case 'tooltip':\n case 'href':\n return COMPATIBLE;\n case 'longitude':\n case 'longitude2':\n case 'latitude':\n case 'latitude2':\n if (type !== type_1.QUANTITATIVE) {\n return {\n compatible: false,\n warning: \"Channel \" + channel + \" should be used with a quantitative field only, not \" + fieldDef.type + \" field.\"\n };\n }\n return COMPATIBLE;\n case 'opacity':\n case 'size':\n case 'x2':\n case 'y2':\n if ((type === 'nominal' && !fieldDef['sort']) || type === 'geojson') {\n return {\n compatible: false,\n warning: \"Channel \" + channel + \" should not be used with an unsorted discrete field.\"\n };\n }\n return COMPATIBLE;\n case 'shape':\n if (fieldDef.type !== 'nominal' && fieldDef.type !== 'geojson') {\n return {\n compatible: false,\n warning: 'Shape channel should be used with only either nominal or geojson data'\n };\n }\n return COMPATIBLE;\n case 'order':\n if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n return {\n compatible: false,\n warning: \"Channel order is inappropriate for nominal field, which has no inherent order.\"\n };\n }\n return COMPATIBLE;\n }\n throw new Error('channelCompatability not implemented for channel ' + channel);\n}\nexports.channelCompatibility = channelCompatibility;\nfunction isNumberFieldDef(fieldDef) {\n return fieldDef.type === 'quantitative' || !!fieldDef.bin;\n}\nexports.isNumberFieldDef = isNumberFieldDef;\nfunction isTimeFieldDef(fieldDef) {\n return fieldDef.type === 'temporal' || !!fieldDef.timeUnit;\n}\nexports.isTimeFieldDef = isTimeFieldDef;\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nfunction valueExpr(v, _a) {\n var timeUnit = _a.timeUnit, type = _a.type, time = _a.time, undefinedIfExprNotRequired = _a.undefinedIfExprNotRequired;\n var _b;\n var expr = undefined;\n if (datetime_1.isDateTime(v)) {\n expr = datetime_1.dateTimeExpr(v, true);\n }\n else if (vega_util_1.isString(v) || vega_util_1.isNumber(v)) {\n if (timeUnit || type === 'temporal') {\n if (timeunit_1.isLocalSingleTimeUnit(timeUnit)) {\n expr = datetime_1.dateTimeExpr((_b = {}, _b[timeUnit] = v, _b), true);\n }\n else if (timeunit_1.isUtcSingleTimeUnit(timeUnit)) {\n // FIXME is this really correct?\n expr = valueExpr(v, { timeUnit: timeunit_1.getLocalTimeUnit(timeUnit) });\n }\n else {\n // just pass the string to date function (which will call JS Date.parse())\n expr = \"datetime(\" + JSON.stringify(v) + \")\";\n }\n }\n }\n if (expr) {\n return time ? \"time(\" + expr + \")\" : expr;\n }\n // number or boolean or normal string\n return undefinedIfExprNotRequired ? undefined : JSON.stringify(v);\n}\nexports.valueExpr = valueExpr;\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nfunction valueArray(fieldDef, values) {\n var timeUnit = fieldDef.timeUnit, type = fieldDef.type;\n return values.map(function (v) {\n var expr = valueExpr(v, { timeUnit: timeUnit, type: type, undefinedIfExprNotRequired: true });\n // return signal for the expression if we need an expression\n if (expr !== undefined) {\n return { signal: expr };\n }\n // otherwise just return the original value\n return v;\n });\n}\nexports.valueArray = valueArray;\n//# sourceMappingURL=fielddef.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VL_ONLY_GUIDE_CONFIG = ['shortTimeLabels'];\n//# sourceMappingURL=guide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HEADER_TITLE_PROPERTIES_MAP = {\n titleAnchor: 'anchor',\n titleAngle: 'angle',\n titleBaseline: 'baseline',\n titleColor: 'color',\n titleFont: 'font',\n titleFontSize: 'fontSize',\n titleFontWeight: 'fontWeight',\n titleLimit: 'limit'\n};\nexports.HEADER_LABEL_PROPERTIES_MAP = {\n labelAngle: 'angle',\n labelColor: 'color',\n labelFont: 'font',\n labelFontSize: 'fontSize',\n labelLimit: 'limit',\n};\nexports.HEADER_TITLE_PROPERTIES = Object.keys(exports.HEADER_TITLE_PROPERTIES_MAP);\nexports.HEADER_LABEL_PROPERTIES = Object.keys(exports.HEADER_LABEL_PROPERTIES_MAP);\n//# sourceMappingURL=header.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar aggregate = tslib_1.__importStar(require(\"./aggregate\"));\nexports.aggregate = aggregate;\nvar axis = tslib_1.__importStar(require(\"./axis\"));\nexports.axis = axis;\nvar bin = tslib_1.__importStar(require(\"./bin\"));\nexports.bin = bin;\nvar channel = tslib_1.__importStar(require(\"./channel\"));\nexports.channel = channel;\nvar compositeMark = tslib_1.__importStar(require(\"./compositemark\"));\nexports.compositeMark = compositeMark;\nvar compile_1 = require(\"./compile/compile\");\nexports.compile = compile_1.compile;\nvar config = tslib_1.__importStar(require(\"./config\"));\nexports.config = config;\nvar data = tslib_1.__importStar(require(\"./data\"));\nexports.data = data;\nvar datetime = tslib_1.__importStar(require(\"./datetime\"));\nexports.datetime = datetime;\nvar encoding = tslib_1.__importStar(require(\"./encoding\"));\nexports.encoding = encoding;\nvar facet = tslib_1.__importStar(require(\"./facet\"));\nexports.facet = facet;\nvar fieldDef = tslib_1.__importStar(require(\"./fielddef\"));\nexports.fieldDef = fieldDef;\nvar header = tslib_1.__importStar(require(\"./header\"));\nexports.header = header;\nvar legend = tslib_1.__importStar(require(\"./legend\"));\nexports.legend = legend;\nvar mark = tslib_1.__importStar(require(\"./mark\"));\nexports.mark = mark;\nvar scale = tslib_1.__importStar(require(\"./scale\"));\nexports.scale = scale;\nvar sort = tslib_1.__importStar(require(\"./sort\"));\nexports.sort = sort;\nvar spec = tslib_1.__importStar(require(\"./spec\"));\nexports.spec = spec;\nvar stack = tslib_1.__importStar(require(\"./stack\"));\nexports.stack = stack;\nvar timeUnit = tslib_1.__importStar(require(\"./timeunit\"));\nexports.timeUnit = timeUnit;\nvar transform = tslib_1.__importStar(require(\"./transform\"));\nexports.transform = transform;\nvar type = tslib_1.__importStar(require(\"./type\"));\nexports.type = type;\nvar util = tslib_1.__importStar(require(\"./util\"));\nexports.util = util;\nvar validate = tslib_1.__importStar(require(\"./validate\"));\nexports.validate = validate;\nvar package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nvar version = package_json_1.default.version;\nexports.version = version;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"./util\");\nexports.defaultLegendConfig = {};\nvar COMMON_LEGEND_PROPERTY_INDEX = {\n entryPadding: 1,\n format: 1,\n offset: 1,\n orient: 1,\n padding: 1,\n tickCount: 1,\n title: 1,\n type: 1,\n values: 1,\n zindex: 1\n};\nvar VG_LEGEND_PROPERTY_INDEX = tslib_1.__assign({}, COMMON_LEGEND_PROPERTY_INDEX, { \n // channel scales\n opacity: 1, shape: 1, stroke: 1, fill: 1, size: 1, \n // encode\n encode: 1 });\nexports.LEGEND_PROPERTIES = util_1.flagKeys(COMMON_LEGEND_PROPERTY_INDEX);\nexports.VG_LEGEND_PROPERTIES = util_1.flagKeys(VG_LEGEND_PROPERTY_INDEX);\n//# sourceMappingURL=legend.js.map","\"use strict\";\n/**\n * Vega-Lite's singleton logger utility.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"./util\");\n/**\n * Main (default) Vega Logger instance for Vega-Lite\n */\nvar main = vega_util_1.logger(vega_util_1.Warn);\nvar current = main;\n/**\n * Logger tool for checking if the code throws correct warning\n */\nvar LocalLogger = /** @class */ (function () {\n function LocalLogger() {\n this.warns = [];\n this.infos = [];\n this.debugs = [];\n }\n LocalLogger.prototype.level = function () {\n return this;\n };\n LocalLogger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n (_a = this.warns).push.apply(_a, args);\n return this;\n };\n LocalLogger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n (_a = this.infos).push.apply(_a, args);\n return this;\n };\n LocalLogger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n (_a = this.debugs).push.apply(_a, args);\n return this;\n };\n LocalLogger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n throw Error.apply(void 0, args);\n return this; // @ts-ignore\n };\n return LocalLogger;\n}());\nexports.LocalLogger = LocalLogger;\nfunction wrap(f) {\n return function () {\n current = new LocalLogger();\n f(current);\n reset();\n };\n}\nexports.wrap = wrap;\n/**\n * Set the singleton logger to be a custom logger\n */\nfunction set(newLogger) {\n current = newLogger;\n return current;\n}\nexports.set = set;\n/**\n * Reset the main logger to use the default Vega Logger\n */\nfunction reset() {\n current = main;\n return current;\n}\nexports.reset = reset;\nfunction warn() {\n var _ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _[_i] = arguments[_i];\n }\n current.warn.apply(current, arguments);\n}\nexports.warn = warn;\nfunction info() {\n var _ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _[_i] = arguments[_i];\n }\n current.info.apply(current, arguments);\n}\nexports.info = info;\nfunction debug() {\n var _ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _[_i] = arguments[_i];\n }\n current.debug.apply(current, arguments);\n}\nexports.debug = debug;\n/**\n * Collection of all Vega-Lite Error Messages\n */\nvar message;\n(function (message) {\n message.INVALID_SPEC = 'Invalid spec';\n // FIT\n message.FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\n message.CANNOT_FIX_RANGE_STEP_WITH_FIT = 'Cannot use a fixed value of \"rangeStep\" when \"autosize\" is \"fit\".';\n // SELECTION\n function cannotProjectOnChannelWithoutField(channel) {\n return \"Cannot project a selection on encoding channel \\\"\" + channel + \"\\\", which has no field.\";\n }\n message.cannotProjectOnChannelWithoutField = cannotProjectOnChannelWithoutField;\n function nearestNotSupportForContinuous(mark) {\n return \"The \\\"nearest\\\" transform is not supported for \" + mark + \" marks.\";\n }\n message.nearestNotSupportForContinuous = nearestNotSupportForContinuous;\n function selectionNotFound(name) {\n return \"Cannot find a selection named \\\"\" + name + \"\\\"\";\n }\n message.selectionNotFound = selectionNotFound;\n message.SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\n // REPEAT\n function noSuchRepeatedValue(field) {\n return \"Unknown repeated value \\\"\" + field + \"\\\".\";\n }\n message.noSuchRepeatedValue = noSuchRepeatedValue;\n // CONCAT\n message.CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated views.';\n // REPEAT\n message.REPEAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in repeated views.';\n // TITLE\n function cannotSetTitleAnchor(type) {\n return \"Cannot set title \\\"anchor\\\" for a \" + type + \" spec\";\n }\n message.cannotSetTitleAnchor = cannotSetTitleAnchor;\n // DATA\n function unrecognizedParse(p) {\n return \"Unrecognized parse \\\"\" + p + \"\\\".\";\n }\n message.unrecognizedParse = unrecognizedParse;\n function differentParse(field, local, ancestor) {\n return \"An ancestor parsed field \\\"\" + field + \"\\\" as \" + ancestor + \" but a child wants to parse the field as \" + local + \".\";\n }\n message.differentParse = differentParse;\n // TRANSFORMS\n function invalidTransformIgnored(transform) {\n return \"Ignoring an invalid transform: \" + util_1.stringify(transform) + \".\";\n }\n message.invalidTransformIgnored = invalidTransformIgnored;\n message.NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n // ENCODING & FACET\n function encodingOverridden(channels) {\n return \"Layer's shared \" + channels.join(',') + \" channel \" + (channels.length === 1 ? 'is' : 'are') + \" overriden\";\n }\n message.encodingOverridden = encodingOverridden;\n function projectionOverridden(opt) {\n var parentProjection = opt.parentProjection, projection = opt.projection;\n return \"Layer's shared projection \" + util_1.stringify(parentProjection) + \" is overridden by a child projection \" + util_1.stringify(projection) + \".\";\n }\n message.projectionOverridden = projectionOverridden;\n function primitiveChannelDef(channel, type, value) {\n return \"Channel \" + channel + \" is a \" + type + \". Converted to {value: \" + util_1.stringify(value) + \"}.\";\n }\n message.primitiveChannelDef = primitiveChannelDef;\n function invalidFieldType(type) {\n return \"Invalid field type \\\"\" + type + \"\\\"\";\n }\n message.invalidFieldType = invalidFieldType;\n function nonZeroScaleUsedWithLengthMark(mark, channel, opt) {\n var scaleText = opt.scaleType ? opt.scaleType + \" scale\" :\n opt.zeroFalse ? 'scale with zero=false' :\n 'scale with custom domain that excludes zero';\n return \"A \" + scaleText + \" is used to encode \" + mark + \"'s \" + channel + \". This can be misleading as the \" + (channel === 'x' ? 'width' : 'height') + \" of the \" + mark + \" can be arbitrary based on the scale domain. You may want to use point mark instead.\";\n }\n message.nonZeroScaleUsedWithLengthMark = nonZeroScaleUsedWithLengthMark;\n function invalidFieldTypeForCountAggregate(type, aggregate) {\n return \"Invalid field type \\\"\" + type + \"\\\" for aggregate: \\\"\" + aggregate + \"\\\", using \\\"quantitative\\\" instead.\";\n }\n message.invalidFieldTypeForCountAggregate = invalidFieldTypeForCountAggregate;\n function invalidAggregate(aggregate) {\n return \"Invalid aggregation operator \\\"\" + aggregate + \"\\\"\";\n }\n message.invalidAggregate = invalidAggregate;\n function emptyOrInvalidFieldType(type, channel, newType) {\n return \"Invalid field type \\\"\" + type + \"\\\" for channel \\\"\" + channel + \"\\\", using \\\"\" + newType + \"\\\" instead.\";\n }\n message.emptyOrInvalidFieldType = emptyOrInvalidFieldType;\n function droppingColor(type, opt) {\n var fill = opt.fill, stroke = opt.stroke;\n return \"Dropping color \" + type + \" as the plot also has \" + (fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke');\n }\n message.droppingColor = droppingColor;\n function emptyFieldDef(fieldDef, channel) {\n return \"Dropping \" + util_1.stringify(fieldDef) + \" from channel \\\"\" + channel + \"\\\" since it does not contain data field or value.\";\n }\n message.emptyFieldDef = emptyFieldDef;\n function latLongDeprecated(channel, type, newChannel) {\n return channel + \"-encoding with type \" + type + \" is deprecated. Replacing with \" + newChannel + \"-encoding.\";\n }\n message.latLongDeprecated = latLongDeprecated;\n message.LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\n function incompatibleChannel(channel, markOrFacet, when) {\n return channel + \" dropped as it is incompatible with \\\"\" + markOrFacet + \"\\\"\" + (when ? \" when \" + when : '') + \".\";\n }\n message.incompatibleChannel = incompatibleChannel;\n function invalidEncodingChannel(channel) {\n return channel + \"-encoding is dropped as \" + channel + \" is not a valid encoding channel.\";\n }\n message.invalidEncodingChannel = invalidEncodingChannel;\n function facetChannelShouldBeDiscrete(channel) {\n return channel + \" encoding should be discrete (ordinal / nominal / binned).\";\n }\n message.facetChannelShouldBeDiscrete = facetChannelShouldBeDiscrete;\n function discreteChannelCannotEncode(channel, type) {\n return \"Using discrete channel \\\"\" + channel + \"\\\" to encode \\\"\" + type + \"\\\" field can be misleading as it does not encode \" + (type === 'ordinal' ? 'order' : 'magnitude') + \".\";\n }\n message.discreteChannelCannotEncode = discreteChannelCannotEncode;\n // Mark\n message.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL = 'Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.';\n function lineWithRange(hasX2, hasY2) {\n var channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n return \"Line mark is for continuous lines and thus cannot be used with \" + channels + \". We will use the rule mark (line segments) instead.\";\n }\n message.lineWithRange = lineWithRange;\n function orientOverridden(original, actual) {\n return \"Specified orient \\\"\" + original + \"\\\" overridden with \\\"\" + actual + \"\\\"\";\n }\n message.orientOverridden = orientOverridden;\n // SCALE\n message.CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'custom domain scale cannot be unioned with default field-based domain';\n function cannotUseScalePropertyWithNonColor(prop) {\n return \"Cannot use the scale property \\\"\" + prop + \"\\\" with non-color channel.\";\n }\n message.cannotUseScalePropertyWithNonColor = cannotUseScalePropertyWithNonColor;\n function unaggregateDomainHasNoEffectForRawField(fieldDef) {\n return \"Using unaggregated domain with raw field has no effect (\" + util_1.stringify(fieldDef) + \").\";\n }\n message.unaggregateDomainHasNoEffectForRawField = unaggregateDomainHasNoEffectForRawField;\n function unaggregateDomainWithNonSharedDomainOp(aggregate) {\n return \"Unaggregated domain not applicable for \\\"\" + aggregate + \"\\\" since it produces values outside the origin domain of the source data.\";\n }\n message.unaggregateDomainWithNonSharedDomainOp = unaggregateDomainWithNonSharedDomainOp;\n function unaggregatedDomainWithLogScale(fieldDef) {\n return \"Unaggregated domain is currently unsupported for log scale (\" + util_1.stringify(fieldDef) + \").\";\n }\n message.unaggregatedDomainWithLogScale = unaggregatedDomainWithLogScale;\n function cannotApplySizeToNonOrientedMark(mark) {\n return \"Cannot apply size to non-oriented mark \\\"\" + mark + \"\\\".\";\n }\n message.cannotApplySizeToNonOrientedMark = cannotApplySizeToNonOrientedMark;\n function rangeStepDropped(channel) {\n return \"rangeStep for \\\"\" + channel + \"\\\" is dropped as top-level \" + (channel === 'x' ? 'width' : 'height') + \" is provided.\";\n }\n message.rangeStepDropped = rangeStepDropped;\n function scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n return \"Channel \\\"\" + channel + \"\\\" does not work with \\\"\" + scaleType + \"\\\" scale. We are using \\\"\" + defaultScaleType + \"\\\" scale instead.\";\n }\n message.scaleTypeNotWorkWithChannel = scaleTypeNotWorkWithChannel;\n function scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n return \"FieldDef does not work with \\\"\" + scaleType + \"\\\" scale. We are using \\\"\" + defaultScaleType + \"\\\" scale instead.\";\n }\n message.scaleTypeNotWorkWithFieldDef = scaleTypeNotWorkWithFieldDef;\n function scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n return channel + \"-scale's \\\"\" + propName + \"\\\" is dropped as it does not work with \" + scaleType + \" scale.\";\n }\n message.scalePropertyNotWorkWithScaleType = scalePropertyNotWorkWithScaleType;\n function scaleTypeNotWorkWithMark(mark, scaleType) {\n return \"Scale type \\\"\" + scaleType + \"\\\" does not work with mark \\\"\" + mark + \"\\\".\";\n }\n message.scaleTypeNotWorkWithMark = scaleTypeNotWorkWithMark;\n function mergeConflictingProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \" + propertyOf.toString() + \" property \\\"\" + property.toString() + \"\\\" (\" + util_1.stringify(v1) + \" and \" + util_1.stringify(v2) + \"). Using \" + util_1.stringify(v1) + \".\";\n }\n message.mergeConflictingProperty = mergeConflictingProperty;\n function independentScaleMeansIndependentGuide(channel) {\n return \"Setting the scale to be independent for \\\"\" + channel + \"\\\" means we also have to set the guide (axis or legend) to be independent.\";\n }\n message.independentScaleMeansIndependentGuide = independentScaleMeansIndependentGuide;\n function domainSortDropped(sort) {\n return \"Dropping sort property \" + util_1.stringify(sort) + \" as unioned domains only support boolean or op 'count'.\";\n }\n message.domainSortDropped = domainSortDropped;\n message.UNABLE_TO_MERGE_DOMAINS = 'Unable to merge domains';\n message.MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\n // AXIS\n message.INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n // STACK\n function cannotStackRangedMark(channel) {\n return \"Cannot stack \\\"\" + channel + \"\\\" if there is already \\\"\" + channel + \"2\\\"\";\n }\n message.cannotStackRangedMark = cannotStackRangedMark;\n function cannotStackNonLinearScale(scaleType) {\n return \"Cannot stack non-linear scale (\" + scaleType + \")\";\n }\n message.cannotStackNonLinearScale = cannotStackNonLinearScale;\n function stackNonSummativeAggregate(aggregate) {\n return \"Stacking is applied even though the aggregate function is non-summative (\\\"\" + aggregate + \"\\\")\";\n }\n message.stackNonSummativeAggregate = stackNonSummativeAggregate;\n // TIMEUNIT\n function invalidTimeUnit(unitName, value) {\n return \"Invalid \" + unitName + \": \" + util_1.stringify(value);\n }\n message.invalidTimeUnit = invalidTimeUnit;\n function dayReplacedWithDate(fullTimeUnit) {\n return \"Time unit \\\"\" + fullTimeUnit + \"\\\" is not supported. We are replacing it with \" + fullTimeUnit.replace('day', 'date') + \".\";\n }\n message.dayReplacedWithDate = dayReplacedWithDate;\n function droppedDay(d) {\n return \"Dropping day from datetime \" + util_1.stringify(d) + \" as day cannot be combined with other units.\";\n }\n message.droppedDay = droppedDay;\n})(message = exports.message || (exports.message = {}));\n//# sourceMappingURL=log.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isLogicalOr(op) {\n return !!op.or;\n}\nexports.isLogicalOr = isLogicalOr;\nfunction isLogicalAnd(op) {\n return !!op.and;\n}\nexports.isLogicalAnd = isLogicalAnd;\nfunction isLogicalNot(op) {\n return !!op.not;\n}\nexports.isLogicalNot = isLogicalNot;\nfunction forEachLeaf(op, fn) {\n if (isLogicalNot(op)) {\n forEachLeaf(op.not, fn);\n }\n else if (isLogicalAnd(op)) {\n for (var _i = 0, _a = op.and; _i < _a.length; _i++) {\n var subop = _a[_i];\n forEachLeaf(subop, fn);\n }\n }\n else if (isLogicalOr(op)) {\n for (var _b = 0, _c = op.or; _b < _c.length; _b++) {\n var subop = _c[_b];\n forEachLeaf(subop, fn);\n }\n }\n else {\n fn(op);\n }\n}\nexports.forEachLeaf = forEachLeaf;\nfunction normalizeLogicalOperand(op, normalizer) {\n if (isLogicalNot(op)) {\n return { not: normalizeLogicalOperand(op.not, normalizer) };\n }\n else if (isLogicalAnd(op)) {\n return { and: op.and.map(function (o) { return normalizeLogicalOperand(o, normalizer); }) };\n }\n else if (isLogicalOr(op)) {\n return { or: op.or.map(function (o) { return normalizeLogicalOperand(o, normalizer); }) };\n }\n else {\n return normalizer(op);\n }\n}\nexports.normalizeLogicalOperand = normalizeLogicalOperand;\n//# sourceMappingURL=logical.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"./util\");\nvar Mark;\n(function (Mark) {\n Mark.AREA = 'area';\n Mark.BAR = 'bar';\n Mark.LINE = 'line';\n Mark.POINT = 'point';\n Mark.RECT = 'rect';\n Mark.RULE = 'rule';\n Mark.TEXT = 'text';\n Mark.TICK = 'tick';\n Mark.TRAIL = 'trail';\n Mark.CIRCLE = 'circle';\n Mark.SQUARE = 'square';\n Mark.GEOSHAPE = 'geoshape';\n})(Mark = exports.Mark || (exports.Mark = {}));\nexports.AREA = Mark.AREA;\nexports.BAR = Mark.BAR;\nexports.LINE = Mark.LINE;\nexports.POINT = Mark.POINT;\nexports.TEXT = Mark.TEXT;\nexports.TICK = Mark.TICK;\nexports.TRAIL = Mark.TRAIL;\nexports.RECT = Mark.RECT;\nexports.RULE = Mark.RULE;\nexports.GEOSHAPE = Mark.GEOSHAPE;\nexports.CIRCLE = Mark.CIRCLE;\nexports.SQUARE = Mark.SQUARE;\n// Using mapped type to declare index, ensuring we always have all marks when we add more.\nvar MARK_INDEX = {\n area: 1,\n bar: 1,\n line: 1,\n point: 1,\n text: 1,\n tick: 1,\n trail: 1,\n rect: 1,\n geoshape: 1,\n rule: 1,\n circle: 1,\n square: 1\n};\nfunction isMark(m) {\n return !!MARK_INDEX[m];\n}\nexports.isMark = isMark;\nfunction isPathMark(m) {\n return util_1.contains(['line', 'area', 'trail'], m);\n}\nexports.isPathMark = isPathMark;\nexports.PRIMITIVE_MARKS = util_1.flagKeys(MARK_INDEX);\nfunction isMarkDef(mark) {\n return mark['type'];\n}\nexports.isMarkDef = isMarkDef;\nvar PRIMITIVE_MARK_INDEX = vega_util_1.toSet(exports.PRIMITIVE_MARKS);\nfunction isPrimitiveMark(mark) {\n var markType = isMarkDef(mark) ? mark.type : mark;\n return markType in PRIMITIVE_MARK_INDEX;\n}\nexports.isPrimitiveMark = isPrimitiveMark;\nexports.STROKE_CONFIG = ['stroke', 'strokeWidth',\n 'strokeDash', 'strokeDashOffset', 'strokeOpacity', 'strokeJoin', 'strokeMiterLimit'];\nexports.FILL_CONFIG = ['fill', 'fillOpacity'];\nexports.FILL_STROKE_CONFIG = [].concat(exports.STROKE_CONFIG, exports.FILL_CONFIG);\nexports.VL_ONLY_MARK_CONFIG_PROPERTIES = ['filled', 'color'];\nexports.VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n area: ['line', 'point'],\n bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n line: ['point'],\n text: ['shortTimeLabels'],\n tick: ['bandSize', 'thickness']\n};\nexports.defaultMarkConfig = {\n color: '#4c78a8',\n};\nexports.defaultBarConfig = {\n binSpacing: 1,\n continuousBandSize: 5\n};\nexports.defaultTickConfig = {\n thickness: 1\n};\n//# sourceMappingURL=mark.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar selection_1 = require(\"./compile/selection/selection\");\nvar fielddef_1 = require(\"./fielddef\");\nvar timeunit_1 = require(\"./timeunit\");\nvar util_1 = require(\"./util\");\nfunction isSelectionPredicate(predicate) {\n return predicate && predicate['selection'];\n}\nexports.isSelectionPredicate = isSelectionPredicate;\nfunction isFieldEqualPredicate(predicate) {\n return predicate && !!predicate.field && predicate.equal !== undefined;\n}\nexports.isFieldEqualPredicate = isFieldEqualPredicate;\nfunction isFieldLTPredicate(predicate) {\n return predicate && !!predicate.field && predicate.lt !== undefined;\n}\nexports.isFieldLTPredicate = isFieldLTPredicate;\nfunction isFieldLTEPredicate(predicate) {\n return predicate && !!predicate.field && predicate.lte !== undefined;\n}\nexports.isFieldLTEPredicate = isFieldLTEPredicate;\nfunction isFieldGTPredicate(predicate) {\n return predicate && !!predicate.field && predicate.gt !== undefined;\n}\nexports.isFieldGTPredicate = isFieldGTPredicate;\nfunction isFieldGTEPredicate(predicate) {\n return predicate && !!predicate.field && predicate.gte !== undefined;\n}\nexports.isFieldGTEPredicate = isFieldGTEPredicate;\nfunction isFieldRangePredicate(predicate) {\n if (predicate && predicate.field) {\n if (vega_util_1.isArray(predicate.range) && predicate.range.length === 2) {\n return true;\n }\n }\n return false;\n}\nexports.isFieldRangePredicate = isFieldRangePredicate;\nfunction isFieldOneOfPredicate(predicate) {\n return predicate && !!predicate.field && (vega_util_1.isArray(predicate.oneOf) ||\n vega_util_1.isArray(predicate.in) // backward compatibility\n );\n}\nexports.isFieldOneOfPredicate = isFieldOneOfPredicate;\nfunction isFieldPredicate(predicate) {\n return isFieldOneOfPredicate(predicate) || isFieldEqualPredicate(predicate) || isFieldRangePredicate(predicate) || isFieldLTPredicate(predicate) || isFieldGTPredicate(predicate) || isFieldLTEPredicate(predicate) || isFieldGTEPredicate(predicate);\n}\nexports.isFieldPredicate = isFieldPredicate;\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nfunction expression(model, filterOp, node) {\n return util_1.logicalExpr(filterOp, function (predicate) {\n if (vega_util_1.isString(predicate)) {\n return predicate;\n }\n else if (isSelectionPredicate(predicate)) {\n return selection_1.selectionPredicate(model, predicate.selection, node);\n }\n else { // Filter Object\n return fieldFilterExpression(predicate);\n }\n });\n}\nexports.expression = expression;\nfunction predicateValueExpr(v, timeUnit) {\n return fielddef_1.valueExpr(v, { timeUnit: timeUnit, time: true });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n return vals.map(function (v) { return predicateValueExpr(v, timeUnit); });\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nfunction fieldFilterExpression(predicate, useInRange) {\n if (useInRange === void 0) { useInRange = true; }\n var field = predicate.field, timeUnit = predicate.timeUnit;\n var fieldExpr = timeUnit ?\n // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n // TODO: support utc\n ('time(' + timeunit_1.fieldExpr(timeUnit, field) + ')') :\n fielddef_1.vgField(predicate, { expr: 'datum' });\n if (isFieldEqualPredicate(predicate)) {\n return fieldExpr + '===' + predicateValueExpr(predicate.equal, timeUnit);\n }\n else if (isFieldLTPredicate(predicate)) {\n var upper = predicate.lt;\n return fieldExpr + \"<\" + predicateValueExpr(upper, timeUnit);\n }\n else if (isFieldGTPredicate(predicate)) {\n var lower = predicate.gt;\n return fieldExpr + \">\" + predicateValueExpr(lower, timeUnit);\n }\n else if (isFieldLTEPredicate(predicate)) {\n var upper = predicate.lte;\n return fieldExpr + \"<=\" + predicateValueExpr(upper, timeUnit);\n }\n else if (isFieldGTEPredicate(predicate)) {\n var lower = predicate.gte;\n return fieldExpr + \">=\" + predicateValueExpr(lower, timeUnit);\n }\n else if (isFieldOneOfPredicate(predicate)) {\n // \"oneOf\" was formerly \"in\" -- so we need to add backward compatibility\n var oneOf = predicate.oneOf;\n oneOf = oneOf || predicate['in'];\n return 'indexof([' +\n predicateValuesExpr(oneOf, timeUnit).join(',') +\n '], ' + fieldExpr + ') !== -1';\n }\n else if (isFieldRangePredicate(predicate)) {\n var lower = predicate.range[0];\n var upper = predicate.range[1];\n if (lower !== null && upper !== null && useInRange) {\n return 'inrange(' + fieldExpr + ', [' +\n predicateValueExpr(lower, timeUnit) + ', ' +\n predicateValueExpr(upper, timeUnit) + '])';\n }\n var exprs = [];\n if (lower !== null) {\n exprs.push(fieldExpr + \" >= \" + predicateValueExpr(lower, timeUnit));\n }\n if (upper !== null) {\n exprs.push(fieldExpr + \" <= \" + predicateValueExpr(upper, timeUnit));\n }\n return exprs.length > 0 ? exprs.join(' && ') : 'true';\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(\"Invalid field predicate: \" + JSON.stringify(predicate));\n}\nexports.fieldFilterExpression = fieldFilterExpression;\nfunction normalizePredicate(f) {\n if (isFieldPredicate(f) && f.timeUnit) {\n return tslib_1.__assign({}, f, { timeUnit: timeunit_1.normalizeTimeUnit(f.timeUnit) });\n }\n return f;\n}\nexports.normalizePredicate = normalizePredicate;\n//# sourceMappingURL=predicate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PROJECTION_PROPERTIES = [\n 'type',\n 'clipAngle',\n 'clipExtent',\n 'center',\n 'rotate',\n 'precision',\n 'coefficient',\n 'distance',\n 'fraction',\n 'lobes',\n 'parallel',\n 'radius',\n 'ratio',\n 'spacing',\n 'tilt'\n];\n//# sourceMappingURL=projection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"./channel\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar type_1 = require(\"./type\");\nvar util_1 = require(\"./util\");\nvar ScaleType;\n(function (ScaleType) {\n // Continuous - Quantitative\n ScaleType.LINEAR = 'linear';\n ScaleType.BIN_LINEAR = 'bin-linear';\n ScaleType.LOG = 'log';\n ScaleType.POW = 'pow';\n ScaleType.SQRT = 'sqrt';\n // Continuous - Time\n ScaleType.TIME = 'time';\n ScaleType.UTC = 'utc';\n // sequential\n ScaleType.SEQUENTIAL = 'sequential';\n // Quantile, Quantize, threshold\n ScaleType.QUANTILE = 'quantile';\n ScaleType.QUANTIZE = 'quantize';\n ScaleType.THRESHOLD = 'threshold';\n ScaleType.ORDINAL = 'ordinal';\n ScaleType.BIN_ORDINAL = 'bin-ordinal';\n ScaleType.POINT = 'point';\n ScaleType.BAND = 'band';\n})(ScaleType = exports.ScaleType || (exports.ScaleType = {}));\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nvar SCALE_CATEGORY_INDEX = {\n linear: 'numeric',\n log: 'numeric',\n pow: 'numeric',\n sqrt: 'numeric',\n 'bin-linear': 'bin-linear',\n time: 'time',\n utc: 'time',\n sequential: 'sequential',\n ordinal: 'ordinal',\n 'bin-ordinal': 'bin-ordinal',\n point: 'ordinal-position',\n band: 'ordinal-position'\n};\nexports.SCALE_TYPES = util_1.keys(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nfunction scaleCompatible(scaleType1, scaleType2) {\n var scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n var scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n return scaleCategory1 === scaleCategory2 ||\n (scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time') ||\n (scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time');\n}\nexports.scaleCompatible = scaleCompatible;\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nvar SCALE_PRECEDENCE_INDEX = {\n // numeric\n linear: 0,\n log: 1,\n pow: 1,\n sqrt: 1,\n // time\n time: 0,\n utc: 0,\n // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n point: 10,\n band: 11,\n // non grouped types\n 'bin-linear': 0,\n sequential: 0,\n ordinal: 0,\n 'bin-ordinal': 0,\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nfunction scaleTypePrecedence(scaleType) {\n return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nexports.scaleTypePrecedence = scaleTypePrecedence;\nexports.CONTINUOUS_TO_CONTINUOUS_SCALES = ['linear', 'bin-linear', 'log', 'pow', 'sqrt', 'time', 'utc'];\nvar CONTINUOUS_TO_CONTINUOUS_INDEX = vega_util_1.toSet(exports.CONTINUOUS_TO_CONTINUOUS_SCALES);\nexports.CONTINUOUS_DOMAIN_SCALES = exports.CONTINUOUS_TO_CONTINUOUS_SCALES.concat(['sequential' /* TODO add 'quantile', 'quantize', 'threshold'*/]);\nvar CONTINUOUS_DOMAIN_INDEX = vega_util_1.toSet(exports.CONTINUOUS_DOMAIN_SCALES);\nexports.DISCRETE_DOMAIN_SCALES = ['ordinal', 'bin-ordinal', 'point', 'band'];\nvar DISCRETE_DOMAIN_INDEX = vega_util_1.toSet(exports.DISCRETE_DOMAIN_SCALES);\nvar BIN_SCALES_INDEX = vega_util_1.toSet(['bin-linear', 'bin-ordinal']);\nexports.TIME_SCALE_TYPES = ['time', 'utc'];\nfunction hasDiscreteDomain(type) {\n return type in DISCRETE_DOMAIN_INDEX;\n}\nexports.hasDiscreteDomain = hasDiscreteDomain;\nfunction isBinScale(type) {\n return type in BIN_SCALES_INDEX;\n}\nexports.isBinScale = isBinScale;\nfunction hasContinuousDomain(type) {\n return type in CONTINUOUS_DOMAIN_INDEX;\n}\nexports.hasContinuousDomain = hasContinuousDomain;\nfunction isContinuousToContinuous(type) {\n return type in CONTINUOUS_TO_CONTINUOUS_INDEX;\n}\nexports.isContinuousToContinuous = isContinuousToContinuous;\nexports.defaultScaleConfig = {\n textXRangeStep: 90,\n rangeStep: 21,\n pointPadding: 0.5,\n bandPaddingInner: 0.1,\n facetSpacing: 16,\n minBandSize: 2,\n minFontSize: 8,\n maxFontSize: 40,\n minOpacity: 0.3,\n maxOpacity: 0.8,\n // FIXME: revise if these *can* become ratios of rangeStep\n minSize: 9,\n minStrokeWidth: 1,\n maxStrokeWidth: 4\n};\nfunction isExtendedScheme(scheme) {\n return scheme && !!scheme['name'];\n}\nexports.isExtendedScheme = isExtendedScheme;\nfunction isSelectionDomain(domain) {\n return domain && domain['selection'];\n}\nexports.isSelectionDomain = isSelectionDomain;\nvar SCALE_PROPERTY_INDEX = {\n type: 1,\n domain: 1,\n range: 1,\n rangeStep: 1,\n scheme: 1,\n // Other properties\n reverse: 1,\n round: 1,\n // quantitative / time\n clamp: 1,\n nice: 1,\n // quantitative\n base: 1,\n exponent: 1,\n interpolate: 1,\n zero: 1,\n // band/point\n padding: 1,\n paddingInner: 1,\n paddingOuter: 1\n};\nexports.SCALE_PROPERTIES = util_1.flagKeys(SCALE_PROPERTY_INDEX);\nvar type = SCALE_PROPERTY_INDEX.type, domain = SCALE_PROPERTY_INDEX.domain, range = SCALE_PROPERTY_INDEX.range, rangeStep = SCALE_PROPERTY_INDEX.rangeStep, scheme = SCALE_PROPERTY_INDEX.scheme, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = tslib_1.__rest(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"rangeStep\", \"scheme\"]);\nexports.NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = util_1.flagKeys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nexports.SCALE_TYPE_INDEX = generateScaleTypeIndex();\nfunction scaleTypeSupportProperty(scaleType, propName) {\n switch (propName) {\n case 'type':\n case 'domain':\n case 'reverse':\n case 'range':\n return true;\n case 'scheme':\n return util_1.contains(['sequential', 'ordinal', 'bin-ordinal', 'quantile', 'quantize'], scaleType);\n case 'interpolate':\n // FIXME(https://github.com/vega/vega-lite/issues/2902) how about ordinal?\n return util_1.contains(['linear', 'bin-linear', 'pow', 'log', 'sqrt', 'utc', 'time'], scaleType);\n case 'round':\n return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n case 'padding':\n return isContinuousToContinuous(scaleType) || util_1.contains(['point', 'band'], scaleType);\n case 'paddingOuter':\n case 'rangeStep':\n return util_1.contains(['point', 'band'], scaleType);\n case 'paddingInner':\n return scaleType === 'band';\n case 'clamp':\n return isContinuousToContinuous(scaleType) || scaleType === 'sequential';\n case 'nice':\n return isContinuousToContinuous(scaleType) || scaleType === 'sequential' || scaleType === 'quantize';\n case 'exponent':\n return scaleType === 'pow';\n case 'base':\n return scaleType === 'log';\n case 'zero':\n return hasContinuousDomain(scaleType) && !util_1.contains([\n 'log',\n 'time', 'utc',\n 'bin-linear',\n 'threshold',\n 'quantile' // quantile depends on distribution so zero does not matter\n ], scaleType);\n }\n /* istanbul ignore next: should never reach here*/\n throw new Error(\"Invalid scale property \" + propName + \".\");\n}\nexports.scaleTypeSupportProperty = scaleTypeSupportProperty;\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nfunction channelScalePropertyIncompatability(channel, propName) {\n switch (propName) {\n case 'interpolate':\n case 'scheme':\n if (!channel_1.isColorChannel(channel)) {\n return log.message.cannotUseScalePropertyWithNonColor(channel);\n }\n return undefined;\n case 'type':\n case 'domain':\n case 'range':\n case 'base':\n case 'exponent':\n case 'nice':\n case 'padding':\n case 'paddingInner':\n case 'paddingOuter':\n case 'rangeStep':\n case 'reverse':\n case 'round':\n case 'clamp':\n case 'zero':\n return undefined; // GOOD!\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(\"Invalid scale property \\\"\" + propName + \"\\\".\");\n}\nexports.channelScalePropertyIncompatability = channelScalePropertyIncompatability;\nfunction scaleTypeSupportDataType(specifiedType, fieldDefType, bin) {\n if (util_1.contains([type_1.Type.ORDINAL, type_1.Type.NOMINAL], fieldDefType)) {\n return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n }\n else if (fieldDefType === type_1.Type.TEMPORAL) {\n return util_1.contains([ScaleType.TIME, ScaleType.UTC, ScaleType.SEQUENTIAL, undefined], specifiedType);\n }\n else if (fieldDefType === type_1.Type.QUANTITATIVE) {\n if (bin) {\n return util_1.contains([ScaleType.BIN_LINEAR, ScaleType.BIN_ORDINAL, ScaleType.LINEAR], specifiedType);\n }\n return util_1.contains([ScaleType.LOG, ScaleType.POW, ScaleType.SQRT, ScaleType.QUANTILE, ScaleType.QUANTIZE, ScaleType.LINEAR, ScaleType.SEQUENTIAL, undefined], specifiedType);\n }\n return true;\n}\nexports.scaleTypeSupportDataType = scaleTypeSupportDataType;\nfunction channelSupportScaleType(channel, scaleType) {\n switch (channel) {\n case channel_1.Channel.X:\n case channel_1.Channel.Y:\n case channel_1.Channel.SIZE: // TODO: size and opacity can support ordinal with more modification\n case channel_1.Channel.OPACITY:\n // Although it generally doesn't make sense to use band with size and opacity,\n // it can also work since we use band: 0.5 to get midpoint.\n return isContinuousToContinuous(scaleType) || util_1.contains(['band', 'point'], scaleType);\n case channel_1.Channel.COLOR:\n case channel_1.Channel.FILL:\n case channel_1.Channel.STROKE:\n return scaleType !== 'band'; // band does not make sense with color\n case channel_1.Channel.SHAPE:\n return scaleType === 'ordinal'; // shape = lookup only\n }\n /* istanbul ignore next: it should never reach here */\n return false;\n}\nexports.channelSupportScaleType = channelSupportScaleType;\nfunction getSupportedScaleType(channel, fieldDefType, bin) {\n return exports.SCALE_TYPE_INDEX[generateScaleTypeIndexKey(channel, fieldDefType, bin)];\n}\nexports.getSupportedScaleType = getSupportedScaleType;\n// generates ScaleTypeIndex where keys are encoding channels and values are list of valid ScaleTypes\nfunction generateScaleTypeIndex() {\n var index = {};\n for (var _i = 0, CHANNELS_1 = channel_1.CHANNELS; _i < CHANNELS_1.length; _i++) {\n var channel = CHANNELS_1[_i];\n for (var _a = 0, _b = util_1.keys(type_1.TYPE_INDEX); _a < _b.length; _a++) {\n var fieldDefType = _b[_a];\n for (var _c = 0, SCALE_TYPES_1 = exports.SCALE_TYPES; _c < SCALE_TYPES_1.length; _c++) {\n var scaleType = SCALE_TYPES_1[_c];\n for (var _d = 0, _e = [false, true]; _d < _e.length; _d++) {\n var bin = _e[_d];\n var key = generateScaleTypeIndexKey(channel, fieldDefType, bin);\n if (channelSupportScaleType(channel, scaleType) && scaleTypeSupportDataType(scaleType, fieldDefType, bin)) {\n index[key] = index[key] || [];\n index[key].push(scaleType);\n }\n }\n }\n }\n }\n return index;\n}\nfunction generateScaleTypeIndexKey(channel, fieldDefType, bin) {\n var key = channel + '_' + fieldDefType;\n return bin ? key + '_bin' : key;\n}\n//# sourceMappingURL=scale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SELECTION_ID = '_vgsid_';\nexports.defaultConfig = {\n single: {\n on: 'click',\n fields: [exports.SELECTION_ID],\n resolve: 'global',\n empty: 'all'\n },\n multi: {\n on: 'click',\n fields: [exports.SELECTION_ID],\n toggle: 'event.shiftKey',\n resolve: 'global',\n empty: 'all'\n },\n interval: {\n on: '[mousedown, window:mouseup] > window:mousemove!',\n encodings: ['x', 'y'],\n translate: '[mousedown, window:mouseup] > window:mousemove!',\n zoom: 'wheel!',\n mark: { fill: '#333', fillOpacity: 0.125, stroke: 'white' },\n resolve: 'global'\n }\n};\n//# sourceMappingURL=selection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nfunction isSortField(sort) {\n return !!sort && (sort['op'] === 'count' || !!sort['field']) && !!sort['op'];\n}\nexports.isSortField = isSortField;\nfunction isSortArray(sort) {\n return !!sort && vega_util_1.isArray(sort);\n}\nexports.isSortArray = isSortArray;\n//# sourceMappingURL=sort.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar channel_1 = require(\"./channel\");\nvar compositeMark = tslib_1.__importStar(require(\"./compositemark\"));\nvar vlEncoding = tslib_1.__importStar(require(\"./encoding\"));\nvar encoding_1 = require(\"./encoding\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar mark_1 = require(\"./mark\");\nvar stack_1 = require(\"./stack\");\nvar util_1 = require(\"./util\");\n/* Custom type guards */\nfunction isFacetSpec(spec) {\n return spec['facet'] !== undefined;\n}\nexports.isFacetSpec = isFacetSpec;\nfunction isUnitSpec(spec) {\n return !!spec['mark'];\n}\nexports.isUnitSpec = isUnitSpec;\nfunction isLayerSpec(spec) {\n return spec['layer'] !== undefined;\n}\nexports.isLayerSpec = isLayerSpec;\nfunction isRepeatSpec(spec) {\n return spec['repeat'] !== undefined;\n}\nexports.isRepeatSpec = isRepeatSpec;\nfunction isConcatSpec(spec) {\n return isVConcatSpec(spec) || isHConcatSpec(spec);\n}\nexports.isConcatSpec = isConcatSpec;\nfunction isVConcatSpec(spec) {\n return spec['vconcat'] !== undefined;\n}\nexports.isVConcatSpec = isVConcatSpec;\nfunction isHConcatSpec(spec) {\n return spec['hconcat'] !== undefined;\n}\nexports.isHConcatSpec = isHConcatSpec;\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n */\n// TODO: consider moving this to another file. Maybe vl.spec.normalize or vl.normalize\nfunction normalize(spec, config) {\n if (isFacetSpec(spec)) {\n return normalizeFacet(spec, config);\n }\n if (isLayerSpec(spec)) {\n return normalizeLayer(spec, config);\n }\n if (isRepeatSpec(spec)) {\n return normalizeRepeat(spec, config);\n }\n if (isVConcatSpec(spec)) {\n return normalizeVConcat(spec, config);\n }\n if (isHConcatSpec(spec)) {\n return normalizeHConcat(spec, config);\n }\n if (isUnitSpec(spec)) {\n var hasRow = encoding_1.channelHasField(spec.encoding, channel_1.ROW);\n var hasColumn = encoding_1.channelHasField(spec.encoding, channel_1.COLUMN);\n if (hasRow || hasColumn) {\n return normalizeFacetedUnit(spec, config);\n }\n return normalizeNonFacetUnit(spec, config);\n }\n throw new Error(log.message.INVALID_SPEC);\n}\nexports.normalize = normalize;\nfunction normalizeFacet(spec, config) {\n var subspec = spec.spec, rest = tslib_1.__rest(spec, [\"spec\"]);\n return tslib_1.__assign({}, rest, { \n // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n spec: normalize(subspec, config) });\n}\nfunction mergeEncoding(opt) {\n var parentEncoding = opt.parentEncoding, encoding = opt.encoding;\n if (parentEncoding && encoding) {\n var overriden = util_1.keys(parentEncoding).reduce(function (o, key) {\n if (encoding[key]) {\n o.push(key);\n }\n return o;\n }, []);\n if (overriden.length > 0) {\n log.warn(log.message.encodingOverridden(overriden));\n }\n }\n var merged = tslib_1.__assign({}, (parentEncoding || {}), (encoding || {}));\n return util_1.keys(merged).length > 0 ? merged : undefined;\n}\nfunction mergeProjection(opt) {\n var parentProjection = opt.parentProjection, projection = opt.projection;\n if (parentProjection && projection) {\n log.warn(log.message.projectionOverridden({ parentProjection: parentProjection, projection: projection }));\n }\n return projection || parentProjection;\n}\nfunction normalizeLayer(spec, config, parentEncoding, parentProjection) {\n var layer = spec.layer, encoding = spec.encoding, projection = spec.projection, rest = tslib_1.__rest(spec, [\"layer\", \"encoding\", \"projection\"]);\n var mergedEncoding = mergeEncoding({ parentEncoding: parentEncoding, encoding: encoding });\n var mergedProjection = mergeProjection({ parentProjection: parentProjection, projection: projection });\n return tslib_1.__assign({}, rest, { layer: layer.map(function (subspec) {\n if (isLayerSpec(subspec)) {\n return normalizeLayer(subspec, config, mergedEncoding, mergedProjection);\n }\n return normalizeNonFacetUnit(subspec, config, mergedEncoding, mergedProjection);\n }) });\n}\nfunction normalizeRepeat(spec, config) {\n var subspec = spec.spec, rest = tslib_1.__rest(spec, [\"spec\"]);\n return tslib_1.__assign({}, rest, { spec: normalize(subspec, config) });\n}\nfunction normalizeVConcat(spec, config) {\n var vconcat = spec.vconcat, rest = tslib_1.__rest(spec, [\"vconcat\"]);\n return tslib_1.__assign({}, rest, { vconcat: vconcat.map(function (subspec) { return normalize(subspec, config); }) });\n}\nfunction normalizeHConcat(spec, config) {\n var hconcat = spec.hconcat, rest = tslib_1.__rest(spec, [\"hconcat\"]);\n return tslib_1.__assign({}, rest, { hconcat: hconcat.map(function (subspec) { return normalize(subspec, config); }) });\n}\nfunction normalizeFacetedUnit(spec, config) {\n // New encoding in the inside spec should not contain row / column\n // as row/column should be moved to facet\n var _a = spec.encoding, row = _a.row, column = _a.column, encoding = tslib_1.__rest(_a, [\"row\", \"column\"]);\n // Mark and encoding should be moved into the inner spec\n var mark = spec.mark, width = spec.width, projection = spec.projection, height = spec.height, selection = spec.selection, _ = spec.encoding, outerSpec = tslib_1.__rest(spec, [\"mark\", \"width\", \"projection\", \"height\", \"selection\", \"encoding\"]);\n return tslib_1.__assign({}, outerSpec, { facet: tslib_1.__assign({}, (row ? { row: row } : {}), (column ? { column: column } : {})), spec: normalizeNonFacetUnit(tslib_1.__assign({}, (projection ? { projection: projection } : {}), { mark: mark }, (width ? { width: width } : {}), (height ? { height: height } : {}), { encoding: encoding }, (selection ? { selection: selection } : {})), config) });\n}\nfunction isNonFacetUnitSpecWithPrimitiveMark(spec) {\n return mark_1.isPrimitiveMark(spec.mark);\n}\nfunction getPointOverlay(markDef, markConfig, encoding) {\n if (markDef.point === 'transparent') {\n return { opacity: 0 };\n }\n else if (markDef.point) { // truthy : true or object\n return vega_util_1.isObject(markDef.point) ? markDef.point : {};\n }\n else if (markDef.point !== undefined) { // false or null\n return null;\n }\n else { // undefined (not disabled)\n if (markConfig.point || encoding.shape) {\n // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n return vega_util_1.isObject(markConfig.point) ? markConfig.point : {};\n }\n // markDef.point is defined as falsy\n return null;\n }\n}\nfunction getLineOverlay(markDef, markConfig) {\n if (markDef.line) { // true or object\n return markDef.line === true ? {} : markDef.line;\n }\n else if (markDef.line !== undefined) { // false or null\n return null;\n }\n else { // undefined (not disabled)\n if (markConfig.line) {\n // enable line overlay if config[mark].line is truthy\n return markConfig.line === true ? {} : markConfig.line;\n }\n // markDef.point is defined as falsy\n return null;\n }\n}\nfunction normalizeNonFacetUnit(spec, config, parentEncoding, parentProjection) {\n var encoding = spec.encoding, projection = spec.projection;\n var mark = mark_1.isMarkDef(spec.mark) ? spec.mark.type : spec.mark;\n // merge parent encoding / projection first\n if (parentEncoding || parentProjection) {\n var mergedProjection = mergeProjection({ parentProjection: parentProjection, projection: projection });\n var mergedEncoding = mergeEncoding({ parentEncoding: parentEncoding, encoding: encoding });\n return normalizeNonFacetUnit(tslib_1.__assign({}, spec, (mergedProjection ? { projection: mergedProjection } : {}), (mergedEncoding ? { encoding: mergedEncoding } : {})), config);\n }\n if (isNonFacetUnitSpecWithPrimitiveMark(spec)) {\n // TODO: thoroughly test\n if (encoding_1.isRanged(encoding)) {\n return normalizeRangedUnit(spec);\n }\n if (mark === 'line' && (encoding.x2 || encoding.y2)) {\n log.warn(log.message.lineWithRange(!!encoding.x2, !!encoding.y2));\n return normalizeNonFacetUnit(tslib_1.__assign({ mark: 'rule' }, spec), config, parentEncoding, parentProjection);\n }\n if (mark_1.isPathMark(mark)) {\n return normalizePathOverlay(spec, config);\n }\n return spec; // Nothing to normalize\n }\n else {\n return compositeMark.normalize(spec, config);\n }\n}\nfunction normalizeRangedUnit(spec) {\n var hasX = encoding_1.channelHasField(spec.encoding, channel_1.X);\n var hasY = encoding_1.channelHasField(spec.encoding, channel_1.Y);\n var hasX2 = encoding_1.channelHasField(spec.encoding, channel_1.X2);\n var hasY2 = encoding_1.channelHasField(spec.encoding, channel_1.Y2);\n if ((hasX2 && !hasX) || (hasY2 && !hasY)) {\n var normalizedSpec = util_1.duplicate(spec);\n if (hasX2 && !hasX) {\n normalizedSpec.encoding.x = normalizedSpec.encoding.x2;\n delete normalizedSpec.encoding.x2;\n }\n if (hasY2 && !hasY) {\n normalizedSpec.encoding.y = normalizedSpec.encoding.y2;\n delete normalizedSpec.encoding.y2;\n }\n return normalizedSpec;\n }\n return spec;\n}\nfunction dropLineAndPoint(markDef) {\n var _point = markDef.point, _line = markDef.line, mark = tslib_1.__rest(markDef, [\"point\", \"line\"]);\n return util_1.keys(mark).length > 1 ? mark : mark.type;\n}\nfunction normalizePathOverlay(spec, config) {\n if (config === void 0) { config = {}; }\n var _a;\n // _ is used to denote a dropped property of the unit spec\n // which should not be carried over to the layer spec\n var selection = spec.selection, projection = spec.projection, encoding = spec.encoding, mark = spec.mark, outerSpec = tslib_1.__rest(spec, [\"selection\", \"projection\", \"encoding\", \"mark\"]);\n var markDef = mark_1.isMarkDef(mark) ? mark : { type: mark };\n var pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n var lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n if (!pointOverlay && !lineOverlay) {\n return tslib_1.__assign({}, spec, { \n // Do not include point / line overlay in the normalize spec\n mark: dropLineAndPoint(markDef) });\n }\n var layer = [tslib_1.__assign({}, (selection ? { selection: selection } : {}), { \n // Do not include point / line overlay in the normalize spec\n mark: dropLineAndPoint(tslib_1.__assign({}, markDef, (markDef.type === 'area' ? { opacity: 0.7 } : {}))), \n // drop shape from encoding as this might be used to trigger point overlay\n encoding: util_1.omit(encoding, ['shape']) })];\n // FIXME: determine rules for applying selections.\n // Need to copy stack config to overlayed layer\n var stackProps = stack_1.stack(markDef, encoding, config ? config.stack : undefined);\n var overlayEncoding = encoding;\n if (stackProps) {\n var stackFieldChannel = stackProps.fieldChannel, offset = stackProps.offset;\n overlayEncoding = tslib_1.__assign({}, encoding, (_a = {}, _a[stackFieldChannel] = tslib_1.__assign({}, encoding[stackFieldChannel], (offset ? { stack: offset } : {})), _a));\n }\n if (lineOverlay) {\n layer.push(tslib_1.__assign({}, (projection ? { projection: projection } : {}), { mark: tslib_1.__assign({ type: 'line' }, util_1.pick(markDef, ['clip', 'interpolate']), lineOverlay), encoding: overlayEncoding }));\n }\n if (pointOverlay) {\n layer.push(tslib_1.__assign({}, (projection ? { projection: projection } : {}), { mark: tslib_1.__assign({ type: 'point', opacity: 1, filled: true }, util_1.pick(markDef, ['clip']), pointOverlay), encoding: overlayEncoding }));\n }\n return tslib_1.__assign({}, outerSpec, { layer: layer });\n}\n// TODO: add vl.spec.validate & move stuff from vl.validate to here\n/* Accumulate non-duplicate fieldDefs in a dictionary */\nfunction accumulate(dict, defs) {\n defs.forEach(function (fieldDef) {\n // Consider only pure fieldDef properties (ignoring scale, axis, legend)\n var pureFieldDef = ['field', 'type', 'value', 'timeUnit', 'bin', 'aggregate'].reduce(function (f, key) {\n if (fieldDef[key] !== undefined) {\n f[key] = fieldDef[key];\n }\n return f;\n }, {});\n var key = util_1.hash(pureFieldDef);\n dict[key] = dict[key] || fieldDef;\n });\n return dict;\n}\n/* Recursively get fieldDefs from a spec, returns a dictionary of fieldDefs */\nfunction fieldDefIndex(spec, dict) {\n if (dict === void 0) { dict = {}; }\n // FIXME(https://github.com/vega/vega-lite/issues/2207): Support fieldDefIndex for repeat\n if (isLayerSpec(spec)) {\n spec.layer.forEach(function (layer) {\n if (isUnitSpec(layer)) {\n accumulate(dict, vlEncoding.fieldDefs(layer.encoding));\n }\n else {\n fieldDefIndex(layer, dict);\n }\n });\n }\n else if (isFacetSpec(spec)) {\n accumulate(dict, vlEncoding.fieldDefs(spec.facet));\n fieldDefIndex(spec.spec, dict);\n }\n else if (isRepeatSpec(spec)) {\n fieldDefIndex(spec.spec, dict);\n }\n else if (isConcatSpec(spec)) {\n var childSpec = isVConcatSpec(spec) ? spec.vconcat : spec.hconcat;\n childSpec.forEach(function (child) { return fieldDefIndex(child, dict); });\n }\n else { // Unit Spec\n accumulate(dict, vlEncoding.fieldDefs(spec.encoding));\n }\n return dict;\n}\n/* Returns all non-duplicate fieldDefs in a spec in a flat array */\nfunction fieldDefs(spec) {\n return util_1.vals(fieldDefIndex(spec));\n}\nexports.fieldDefs = fieldDefs;\nfunction isStacked(spec, config) {\n config = config || spec.config;\n if (mark_1.isPrimitiveMark(spec.mark)) {\n return stack_1.stack(spec.mark, spec.encoding, config ? config.stack : undefined) !== null;\n }\n return false;\n}\nexports.isStacked = isStacked;\n//# sourceMappingURL=spec.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar aggregate_1 = require(\"./aggregate\");\nvar channel_1 = require(\"./channel\");\nvar encoding_1 = require(\"./encoding\");\nvar fielddef_1 = require(\"./fielddef\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar mark_1 = require(\"./mark\");\nvar scale_1 = require(\"./scale\");\nvar util_1 = require(\"./util\");\nvar STACK_OFFSET_INDEX = {\n zero: 1,\n center: 1,\n normalize: 1\n};\nfunction isStackOffset(s) {\n return !!STACK_OFFSET_INDEX[s];\n}\nexports.isStackOffset = isStackOffset;\nexports.STACKABLE_MARKS = [mark_1.BAR, mark_1.AREA, mark_1.RULE, mark_1.POINT, mark_1.CIRCLE, mark_1.SQUARE, mark_1.LINE, mark_1.TEXT, mark_1.TICK];\nexports.STACK_BY_DEFAULT_MARKS = [mark_1.BAR, mark_1.AREA];\nfunction potentialStackedChannel(encoding) {\n var xDef = encoding.x;\n var yDef = encoding.y;\n if (fielddef_1.isFieldDef(xDef) && fielddef_1.isFieldDef(yDef)) {\n if (xDef.type === 'quantitative' && yDef.type === 'quantitative') {\n if (xDef.stack) {\n return 'x';\n }\n else if (yDef.stack) {\n return 'y';\n }\n // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n if ((!!xDef.aggregate) !== (!!yDef.aggregate)) {\n return xDef.aggregate ? 'x' : 'y';\n }\n }\n else if (xDef.type === 'quantitative') {\n return 'x';\n }\n else if (yDef.type === 'quantitative') {\n return 'y';\n }\n }\n else if (fielddef_1.isFieldDef(xDef) && xDef.type === 'quantitative') {\n return 'x';\n }\n else if (fielddef_1.isFieldDef(yDef) && yDef.type === 'quantitative') {\n return 'y';\n }\n return undefined;\n}\n// Note: CompassQL uses this method and only pass in required properties of each argument object.\n// If required properties change, make sure to update CompassQL.\nfunction stack(m, encoding, stackConfig) {\n var mark = mark_1.isMarkDef(m) ? m.type : m;\n // Should have stackable mark\n if (!util_1.contains(exports.STACKABLE_MARKS, mark)) {\n return null;\n }\n var fieldChannel = potentialStackedChannel(encoding);\n if (!fieldChannel) {\n return null;\n }\n var stackedFieldDef = encoding[fieldChannel];\n var stackedField = fielddef_1.isStringFieldDef(stackedFieldDef) ? fielddef_1.vgField(stackedFieldDef, {}) : undefined;\n var dimensionChannel = fieldChannel === 'x' ? 'y' : 'x';\n var dimensionDef = encoding[dimensionChannel];\n var dimensionField = fielddef_1.isStringFieldDef(dimensionDef) ? fielddef_1.vgField(dimensionDef, {}) : undefined;\n // Should have grouping level of detail that is different from the dimension field\n var stackBy = channel_1.NONPOSITION_CHANNELS.reduce(function (sc, channel) {\n if (encoding_1.channelHasField(encoding, channel)) {\n var channelDef = encoding[channel];\n (vega_util_1.isArray(channelDef) ? channelDef : [channelDef]).forEach(function (cDef) {\n var fieldDef = fielddef_1.getFieldDef(cDef);\n if (fieldDef.aggregate) {\n return;\n }\n // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n var f = fielddef_1.isStringFieldDef(fieldDef) ? fielddef_1.vgField(fieldDef, {}) : undefined;\n if (\n // if fielddef is a repeat, just include it in the stack by\n !f ||\n // otherwise, the field must be different from x and y fields.\n (f !== dimensionField && f !== stackedField)) {\n sc.push({ channel: channel, fieldDef: fieldDef });\n }\n });\n }\n return sc;\n }, []);\n if (stackBy.length === 0) {\n return null;\n }\n // Automatically determine offset\n var offset = undefined;\n if (stackedFieldDef.stack !== undefined) {\n offset = stackedFieldDef.stack;\n }\n else if (util_1.contains(exports.STACK_BY_DEFAULT_MARKS, mark)) {\n // Bar and Area with sum ops are automatically stacked by default\n offset = stackConfig === undefined ? 'zero' : stackConfig;\n }\n else {\n offset = stackConfig;\n }\n if (!offset || !isStackOffset(offset)) {\n return null;\n }\n // warn when stacking non-linear\n if (stackedFieldDef.scale && stackedFieldDef.scale.type && stackedFieldDef.scale.type !== scale_1.ScaleType.LINEAR) {\n log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type));\n }\n // Check if it is a ranged mark\n if (encoding_1.channelHasField(encoding, fieldChannel === channel_1.X ? channel_1.X2 : channel_1.Y2)) {\n if (stackedFieldDef.stack !== undefined) {\n log.warn(log.message.cannotStackRangedMark(fieldChannel));\n }\n return null;\n }\n // Warn if stacking summative aggregate\n if (stackedFieldDef.aggregate && !util_1.contains(aggregate_1.SUM_OPS, stackedFieldDef.aggregate)) {\n log.warn(log.message.stackNonSummativeAggregate(stackedFieldDef.aggregate));\n }\n return {\n groupbyChannel: dimensionDef ? dimensionChannel : undefined,\n fieldChannel: fieldChannel,\n impute: mark_1.isPathMark(mark),\n stackBy: stackBy,\n offset: offset\n };\n}\nexports.stack = stack;\n//# sourceMappingURL=stack.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar datetime_1 = require(\"./datetime\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nvar util_1 = require(\"./util\");\nvar TimeUnit;\n(function (TimeUnit) {\n TimeUnit.YEAR = 'year';\n TimeUnit.MONTH = 'month';\n TimeUnit.DAY = 'day';\n TimeUnit.DATE = 'date';\n TimeUnit.HOURS = 'hours';\n TimeUnit.MINUTES = 'minutes';\n TimeUnit.SECONDS = 'seconds';\n TimeUnit.MILLISECONDS = 'milliseconds';\n TimeUnit.YEARMONTH = 'yearmonth';\n TimeUnit.YEARMONTHDATE = 'yearmonthdate';\n TimeUnit.YEARMONTHDATEHOURS = 'yearmonthdatehours';\n TimeUnit.YEARMONTHDATEHOURSMINUTES = 'yearmonthdatehoursminutes';\n TimeUnit.YEARMONTHDATEHOURSMINUTESSECONDS = 'yearmonthdatehoursminutesseconds';\n // MONTHDATE always include 29 February since we use year 0th (which is a leap year);\n TimeUnit.MONTHDATE = 'monthdate';\n TimeUnit.HOURSMINUTES = 'hoursminutes';\n TimeUnit.HOURSMINUTESSECONDS = 'hoursminutesseconds';\n TimeUnit.MINUTESSECONDS = 'minutesseconds';\n TimeUnit.SECONDSMILLISECONDS = 'secondsmilliseconds';\n TimeUnit.QUARTER = 'quarter';\n TimeUnit.YEARQUARTER = 'yearquarter';\n TimeUnit.QUARTERMONTH = 'quartermonth';\n TimeUnit.YEARQUARTERMONTH = 'yearquartermonth';\n TimeUnit.UTCYEAR = 'utcyear';\n TimeUnit.UTCMONTH = 'utcmonth';\n TimeUnit.UTCDAY = 'utcday';\n TimeUnit.UTCDATE = 'utcdate';\n TimeUnit.UTCHOURS = 'utchours';\n TimeUnit.UTCMINUTES = 'utcminutes';\n TimeUnit.UTCSECONDS = 'utcseconds';\n TimeUnit.UTCMILLISECONDS = 'utcmilliseconds';\n TimeUnit.UTCYEARMONTH = 'utcyearmonth';\n TimeUnit.UTCYEARMONTHDATE = 'utcyearmonthdate';\n TimeUnit.UTCYEARMONTHDATEHOURS = 'utcyearmonthdatehours';\n TimeUnit.UTCYEARMONTHDATEHOURSMINUTES = 'utcyearmonthdatehoursminutes';\n TimeUnit.UTCYEARMONTHDATEHOURSMINUTESSECONDS = 'utcyearmonthdatehoursminutesseconds';\n // MONTHDATE always include 29 February since we use year 0th (which is a leap year);\n TimeUnit.UTCMONTHDATE = 'utcmonthdate';\n TimeUnit.UTCHOURSMINUTES = 'utchoursminutes';\n TimeUnit.UTCHOURSMINUTESSECONDS = 'utchoursminutesseconds';\n TimeUnit.UTCMINUTESSECONDS = 'utcminutesseconds';\n TimeUnit.UTCSECONDSMILLISECONDS = 'utcsecondsmilliseconds';\n TimeUnit.UTCQUARTER = 'utcquarter';\n TimeUnit.UTCYEARQUARTER = 'utcyearquarter';\n TimeUnit.UTCQUARTERMONTH = 'utcquartermonth';\n TimeUnit.UTCYEARQUARTERMONTH = 'utcyearquartermonth';\n})(TimeUnit = exports.TimeUnit || (exports.TimeUnit = {}));\n/** Time Unit that only corresponds to only one part of Date objects. */\nvar LOCAL_SINGLE_TIMEUNIT_INDEX = {\n year: 1,\n quarter: 1,\n month: 1,\n day: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nexports.TIMEUNIT_PARTS = util_1.flagKeys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nfunction isLocalSingleTimeUnit(timeUnit) {\n return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nexports.isLocalSingleTimeUnit = isLocalSingleTimeUnit;\nvar UTC_SINGLE_TIMEUNIT_INDEX = {\n utcyear: 1,\n utcquarter: 1,\n utcmonth: 1,\n utcday: 1,\n utcdate: 1,\n utchours: 1,\n utcminutes: 1,\n utcseconds: 1,\n utcmilliseconds: 1\n};\nfunction isUtcSingleTimeUnit(timeUnit) {\n return !!UTC_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nexports.isUtcSingleTimeUnit = isUtcSingleTimeUnit;\nvar LOCAL_MULTI_TIMEUNIT_INDEX = {\n yearquarter: 1,\n yearquartermonth: 1,\n yearmonth: 1,\n yearmonthdate: 1,\n yearmonthdatehours: 1,\n yearmonthdatehoursminutes: 1,\n yearmonthdatehoursminutesseconds: 1,\n quartermonth: 1,\n monthdate: 1,\n hoursminutes: 1,\n hoursminutesseconds: 1,\n minutesseconds: 1,\n secondsmilliseconds: 1\n};\nvar UTC_MULTI_TIMEUNIT_INDEX = {\n utcyearquarter: 1,\n utcyearquartermonth: 1,\n utcyearmonth: 1,\n utcyearmonthdate: 1,\n utcyearmonthdatehours: 1,\n utcyearmonthdatehoursminutes: 1,\n utcyearmonthdatehoursminutesseconds: 1,\n utcquartermonth: 1,\n utcmonthdate: 1,\n utchoursminutes: 1,\n utchoursminutesseconds: 1,\n utcminutesseconds: 1,\n utcsecondsmilliseconds: 1\n};\nvar UTC_TIMEUNIT_INDEX = tslib_1.__assign({}, UTC_SINGLE_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX);\nfunction isUTCTimeUnit(t) {\n return !!UTC_TIMEUNIT_INDEX[t];\n}\nexports.isUTCTimeUnit = isUTCTimeUnit;\nfunction getLocalTimeUnit(t) {\n return t.substr(3);\n}\nexports.getLocalTimeUnit = getLocalTimeUnit;\nvar TIMEUNIT_INDEX = tslib_1.__assign({}, LOCAL_SINGLE_TIMEUNIT_INDEX, UTC_SINGLE_TIMEUNIT_INDEX, LOCAL_MULTI_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX);\nexports.TIMEUNITS = util_1.flagKeys(TIMEUNIT_INDEX);\nfunction isTimeUnit(t) {\n return !!TIMEUNIT_INDEX[t];\n}\nexports.isTimeUnit = isTimeUnit;\nvar SET_DATE_METHOD = {\n year: 'setFullYear',\n month: 'setMonth',\n date: 'setDate',\n hours: 'setHours',\n minutes: 'setMinutes',\n seconds: 'setSeconds',\n milliseconds: 'setMilliseconds',\n // Day and quarter have their own special cases\n quarter: null,\n day: null,\n};\n/**\n * Converts a date to only have the measurements relevant to the specified unit\n * i.e. ('yearmonth', '2000-12-04 07:58:14') -> '2000-12-01 00:00:00'\n * Note: the base date is Jan 01 1900 00:00:00\n */\nfunction convert(unit, date) {\n var isUTC = isUTCTimeUnit(unit);\n var result = isUTC ?\n // start with uniform date\n new Date(Date.UTC(0, 0, 1, 0, 0, 0, 0)) :\n new Date(0, 0, 1, 0, 0, 0, 0);\n for (var _i = 0, TIMEUNIT_PARTS_1 = exports.TIMEUNIT_PARTS; _i < TIMEUNIT_PARTS_1.length; _i++) {\n var timeUnitPart = TIMEUNIT_PARTS_1[_i];\n if (containsTimeUnit(unit, timeUnitPart)) {\n switch (timeUnitPart) {\n case TimeUnit.DAY:\n throw new Error('Cannot convert to TimeUnits containing \\'day\\'');\n case TimeUnit.QUARTER: {\n var _a = dateMethods('month', isUTC), getDateMethod_1 = _a.getDateMethod, setDateMethod_1 = _a.setDateMethod;\n // indicate quarter by setting month to be the first of the quarter i.e. may (4) -> april (3)\n result[setDateMethod_1]((Math.floor(date[getDateMethod_1]() / 3)) * 3);\n break;\n }\n default:\n var _b = dateMethods(timeUnitPart, isUTC), getDateMethod = _b.getDateMethod, setDateMethod = _b.setDateMethod;\n result[setDateMethod](date[getDateMethod]());\n }\n }\n }\n return result;\n}\nexports.convert = convert;\nfunction dateMethods(singleUnit, isUtc) {\n var rawSetDateMethod = SET_DATE_METHOD[singleUnit];\n var setDateMethod = isUtc ? 'setUTC' + rawSetDateMethod.substr(3) : rawSetDateMethod;\n var getDateMethod = 'get' + (isUtc ? 'UTC' : '') + rawSetDateMethod.substr(3);\n return { setDateMethod: setDateMethod, getDateMethod: getDateMethod };\n}\nfunction getTimeUnitParts(timeUnit) {\n return exports.TIMEUNIT_PARTS.reduce(function (parts, part) {\n if (containsTimeUnit(timeUnit, part)) {\n return parts.concat(part);\n }\n return parts;\n }, []);\n}\nexports.getTimeUnitParts = getTimeUnitParts;\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nfunction containsTimeUnit(fullTimeUnit, timeUnit) {\n var index = fullTimeUnit.indexOf(timeUnit);\n return index > -1 &&\n (timeUnit !== TimeUnit.SECONDS ||\n index === 0 ||\n fullTimeUnit.charAt(index - 1) !== 'i' // exclude milliseconds\n );\n}\nexports.containsTimeUnit = containsTimeUnit;\n/**\n * Returns Vega expresssion for a given timeUnit and fieldRef\n */\nfunction fieldExpr(fullTimeUnit, field) {\n var fieldRef = util_1.accessPathWithDatum(field);\n var utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n function func(timeUnit) {\n if (timeUnit === TimeUnit.QUARTER) {\n // quarter starting at 0 (0,3,6,9).\n return \"(\" + utc + \"quarter(\" + fieldRef + \")-1)\";\n }\n else {\n return \"\" + utc + timeUnit + \"(\" + fieldRef + \")\";\n }\n }\n var d = exports.TIMEUNIT_PARTS.reduce(function (dateExpr, tu) {\n if (containsTimeUnit(fullTimeUnit, tu)) {\n dateExpr[tu] = func(tu);\n }\n return dateExpr;\n }, {});\n return datetime_1.dateTimeExpr(d);\n}\nexports.fieldExpr = fieldExpr;\n/**\n * returns the signal expression used for axis labels for a time unit\n */\nfunction formatExpression(timeUnit, field, shortTimeLabels, isUTCScale) {\n if (!timeUnit) {\n return undefined;\n }\n var dateComponents = [];\n var expression = '';\n var hasYear = containsTimeUnit(timeUnit, TimeUnit.YEAR);\n if (containsTimeUnit(timeUnit, TimeUnit.QUARTER)) {\n // special expression for quarter as prefix\n expression = \"'Q' + quarter(\" + field + \")\";\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MONTH)) {\n // By default use short month name\n dateComponents.push(shortTimeLabels !== false ? '%b' : '%B');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.DAY)) {\n dateComponents.push(shortTimeLabels ? '%a' : '%A');\n }\n else if (containsTimeUnit(timeUnit, TimeUnit.DATE)) {\n dateComponents.push('%d' + (hasYear ? ',' : '')); // add comma if there is year\n }\n if (hasYear) {\n dateComponents.push(shortTimeLabels ? '%y' : '%Y');\n }\n var timeComponents = [];\n if (containsTimeUnit(timeUnit, TimeUnit.HOURS)) {\n timeComponents.push('%H');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MINUTES)) {\n timeComponents.push('%M');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.SECONDS)) {\n timeComponents.push('%S');\n }\n if (containsTimeUnit(timeUnit, TimeUnit.MILLISECONDS)) {\n timeComponents.push('%L');\n }\n var dateTimeComponents = [];\n if (dateComponents.length > 0) {\n dateTimeComponents.push(dateComponents.join(' '));\n }\n if (timeComponents.length > 0) {\n dateTimeComponents.push(timeComponents.join(':'));\n }\n if (dateTimeComponents.length > 0) {\n if (expression) {\n // Add space between quarter and main time format\n expression += \" + ' ' + \";\n }\n // We only use utcFormat for utc scale\n // For utc time units, the data is already converted as a part of timeUnit transform.\n // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n if (isUTCScale) {\n expression += \"utcFormat(\" + field + \", '\" + dateTimeComponents.join(' ') + \"')\";\n }\n else {\n expression += \"timeFormat(\" + field + \", '\" + dateTimeComponents.join(' ') + \"')\";\n }\n }\n // If expression is still an empty string, return undefined instead.\n return expression || undefined;\n}\nexports.formatExpression = formatExpression;\nfunction normalizeTimeUnit(timeUnit) {\n if (timeUnit !== 'day' && timeUnit.indexOf('day') >= 0) {\n log.warn(log.message.dayReplacedWithDate(timeUnit));\n return timeUnit.replace('day', 'date');\n }\n return timeUnit;\n}\nexports.normalizeTimeUnit = normalizeTimeUnit;\n//# sourceMappingURL=timeunit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nfunction extractTitleConfig(titleConfig) {\n var \n // These are non-mark title config that need to be hardcoded\n anchor = titleConfig.anchor, offset = titleConfig.offset, orient = titleConfig.orient, \n // color needs to be redirect to fill\n color = titleConfig.color, \n // The rest are mark config.\n titleMarkConfig = tslib_1.__rest(titleConfig, [\"anchor\", \"offset\", \"orient\", \"color\"]);\n var mark = tslib_1.__assign({}, titleMarkConfig, color ? { fill: color } : {});\n var nonMark = tslib_1.__assign({}, anchor ? { anchor: anchor } : {}, offset ? { offset: offset } : {}, orient ? { orient: orient } : {});\n return { mark: mark, nonMark: nonMark };\n}\nexports.extractTitleConfig = extractTitleConfig;\n//# sourceMappingURL=title.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar vega_util_1 = require(\"vega-util\");\nvar log = tslib_1.__importStar(require(\"./log\"));\nfunction extractCompositionLayout(layout) {\n var _a = layout || {}, _b = _a.align, align = _b === void 0 ? undefined : _b, _c = _a.center, center = _c === void 0 ? undefined : _c, _d = _a.bounds, bounds = _d === void 0 ? undefined : _d, _e = _a.spacing, spacing = _e === void 0 ? undefined : _e;\n return { align: align, bounds: bounds, center: center, spacing: spacing };\n}\nexports.extractCompositionLayout = extractCompositionLayout;\nfunction _normalizeAutoSize(autosize) {\n return vega_util_1.isString(autosize) ? { type: autosize } : autosize || {};\n}\nfunction normalizeAutoSize(topLevelAutosize, configAutosize, isUnitOrLayer) {\n if (isUnitOrLayer === void 0) { isUnitOrLayer = true; }\n var autosize = tslib_1.__assign({ type: 'pad' }, _normalizeAutoSize(configAutosize), _normalizeAutoSize(topLevelAutosize));\n if (autosize.type === 'fit') {\n if (!isUnitOrLayer) {\n log.warn(log.message.FIT_NON_SINGLE);\n autosize.type = 'pad';\n }\n }\n return autosize;\n}\nexports.normalizeAutoSize = normalizeAutoSize;\nvar TOP_LEVEL_PROPERTIES = [\n 'background', 'padding', 'datasets'\n // We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\nfunction extractTopLevelProperties(t) {\n return TOP_LEVEL_PROPERTIES.reduce(function (o, p) {\n if (t && t[p] !== undefined) {\n o[p] = t[p];\n }\n return o;\n }, {});\n}\nexports.extractTopLevelProperties = extractTopLevelProperties;\n//# sourceMappingURL=toplevelprops.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logical_1 = require(\"./logical\");\nvar predicate_1 = require(\"./predicate\");\nfunction isFilter(t) {\n return t['filter'] !== undefined;\n}\nexports.isFilter = isFilter;\nfunction isLookup(t) {\n return t['lookup'] !== undefined;\n}\nexports.isLookup = isLookup;\nfunction isWindow(t) {\n return t['window'] !== undefined;\n}\nexports.isWindow = isWindow;\nfunction isCalculate(t) {\n return t['calculate'] !== undefined;\n}\nexports.isCalculate = isCalculate;\nfunction isBin(t) {\n return !!t['bin'];\n}\nexports.isBin = isBin;\nfunction isTimeUnit(t) {\n return t['timeUnit'] !== undefined;\n}\nexports.isTimeUnit = isTimeUnit;\nfunction isAggregate(t) {\n return t['aggregate'] !== undefined;\n}\nexports.isAggregate = isAggregate;\nfunction isStack(t) {\n return t['stack'] !== undefined;\n}\nexports.isStack = isStack;\nfunction normalizeTransform(transform) {\n return transform.map(function (t) {\n if (isFilter(t)) {\n return {\n filter: logical_1.normalizeLogicalOperand(t.filter, predicate_1.normalizePredicate)\n };\n }\n return t;\n });\n}\nexports.normalizeTransform = normalizeTransform;\n//# sourceMappingURL=transform.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** Constants and utilities for data type */\n/** Data type based on level of measurement */\nvar Type;\n(function (Type) {\n Type.QUANTITATIVE = 'quantitative';\n Type.ORDINAL = 'ordinal';\n Type.TEMPORAL = 'temporal';\n Type.NOMINAL = 'nominal';\n Type.LATITUDE = 'latitude';\n Type.LONGITUDE = 'longitude';\n Type.GEOJSON = 'geojson';\n})(Type = exports.Type || (exports.Type = {}));\nexports.TYPE_INDEX = {\n quantitative: 1,\n ordinal: 1,\n temporal: 1,\n nominal: 1,\n latitude: 1,\n longitude: 1,\n geojson: 1\n};\nfunction isType(t) {\n return !!exports.TYPE_INDEX[t];\n}\nexports.isType = isType;\nexports.QUANTITATIVE = Type.QUANTITATIVE;\nexports.ORDINAL = Type.ORDINAL;\nexports.TEMPORAL = Type.TEMPORAL;\nexports.NOMINAL = Type.NOMINAL;\nexports.GEOJSON = Type.GEOJSON;\n/**\n * Get full, lowercase type name for a given type.\n * @param type\n * @return Full type name.\n */\nfunction getFullName(type) {\n if (type) {\n type = type.toLowerCase();\n switch (type) {\n case 'q':\n case exports.QUANTITATIVE:\n return 'quantitative';\n case 't':\n case exports.TEMPORAL:\n return 'temporal';\n case 'o':\n case exports.ORDINAL:\n return 'ordinal';\n case 'n':\n case exports.NOMINAL:\n return 'nominal';\n case Type.LATITUDE:\n return 'latitude';\n case Type.LONGITUDE:\n return 'longitude';\n case exports.GEOJSON:\n return 'geojson';\n }\n }\n // If we get invalid input, return undefined type.\n return undefined;\n}\nexports.getFullName = getFullName;\n//# sourceMappingURL=type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar json_stable_stringify_1 = tslib_1.__importDefault(require(\"json-stable-stringify\"));\nvar vega_util_1 = require(\"vega-util\");\nvar logical_1 = require(\"./logical\");\n/**\n * Creates an object composed of the picked object properties.\n *\n * Example: (from lodash)\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n *\n */\nfunction pick(obj, props) {\n var copy = {};\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n if (obj.hasOwnProperty(prop)) {\n copy[prop] = obj[prop];\n }\n }\n return copy;\n}\nexports.pick = pick;\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\nfunction omit(obj, props) {\n var copy = tslib_1.__assign({}, obj);\n for (var _i = 0, props_2 = props; _i < props_2.length; _i++) {\n var prop = props_2[_i];\n delete copy[prop];\n }\n return copy;\n}\nexports.omit = omit;\n/**\n * Converts any object into a string representation that can be consumed by humans.\n */\nexports.stringify = json_stable_stringify_1.default;\n/**\n * Converts any object into a string of limited size, or a number.\n */\nfunction hash(a) {\n if (vega_util_1.isNumber(a)) {\n return a;\n }\n var str = vega_util_1.isString(a) ? a : json_stable_stringify_1.default(a);\n // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n if (str.length < 100) {\n return str;\n }\n // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n var h = 0;\n for (var i = 0; i < str.length; i++) {\n var char = str.charCodeAt(i);\n h = ((h << 5) - h) + char;\n h = h & h; // Convert to 32bit integer\n }\n return h;\n}\nexports.hash = hash;\nfunction contains(array, item) {\n return array.indexOf(item) > -1;\n}\nexports.contains = contains;\n/** Returns the array without the elements in item */\nfunction without(array, excludedItems) {\n return array.filter(function (item) { return !contains(excludedItems, item); });\n}\nexports.without = without;\nfunction union(array, other) {\n return array.concat(without(other, array));\n}\nexports.union = union;\n/**\n * Returns true if any item returns true.\n */\nfunction some(arr, f) {\n var i = 0;\n for (var k = 0; k < arr.length; k++) {\n if (f(arr[k], k, i++)) {\n return true;\n }\n }\n return false;\n}\nexports.some = some;\n/**\n * Returns true if all items return true.\n */\nfunction every(arr, f) {\n var i = 0;\n for (var k = 0; k < arr.length; k++) {\n if (!f(arr[k], k, i++)) {\n return false;\n }\n }\n return true;\n}\nexports.every = every;\nfunction flatten(arrays) {\n return [].concat.apply([], arrays);\n}\nexports.flatten = flatten;\n/**\n * recursively merges src into dest\n */\nfunction mergeDeep(dest) {\n var src = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n src[_i - 1] = arguments[_i];\n }\n for (var _a = 0, src_1 = src; _a < src_1.length; _a++) {\n var s = src_1[_a];\n dest = deepMerge_(dest, s);\n }\n return dest;\n}\nexports.mergeDeep = mergeDeep;\n// recursively merges src into dest\nfunction deepMerge_(dest, src) {\n if (typeof src !== 'object' || src === null) {\n return dest;\n }\n for (var p in src) {\n if (!src.hasOwnProperty(p)) {\n continue;\n }\n if (src[p] === undefined) {\n continue;\n }\n if (typeof src[p] !== 'object' || vega_util_1.isArray(src[p]) || src[p] === null) {\n dest[p] = src[p];\n }\n else if (typeof dest[p] !== 'object' || dest[p] === null) {\n dest[p] = mergeDeep(vega_util_1.isArray(src[p].constructor) ? [] : {}, src[p]);\n }\n else {\n mergeDeep(dest[p], src[p]);\n }\n }\n return dest;\n}\nfunction unique(values, f) {\n var results = [];\n var u = {};\n var v;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var val = values_1[_i];\n v = f(val);\n if (v in u) {\n continue;\n }\n u[v] = 1;\n results.push(val);\n }\n return results;\n}\nexports.unique = unique;\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nfunction differ(dict, other) {\n for (var key in dict) {\n if (dict.hasOwnProperty(key)) {\n if (other[key] && dict[key] && other[key] !== dict[key]) {\n return true;\n }\n }\n }\n return false;\n}\nexports.differ = differ;\nfunction hasIntersection(a, b) {\n for (var key in a) {\n if (key in b) {\n return true;\n }\n }\n return false;\n}\nexports.hasIntersection = hasIntersection;\nfunction isNumeric(num) {\n return !isNaN(num);\n}\nexports.isNumeric = isNumeric;\nfunction differArray(array, other) {\n if (array.length !== other.length) {\n return true;\n }\n array.sort();\n other.sort();\n for (var i = 0; i < array.length; i++) {\n if (other[i] !== array[i]) {\n return true;\n }\n }\n return false;\n}\nexports.differArray = differArray;\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\nexports.keys = Object.keys;\nfunction vals(x) {\n var _vals = [];\n for (var k in x) {\n if (x.hasOwnProperty(k)) {\n _vals.push(x[k]);\n }\n }\n return _vals;\n}\nexports.vals = vals;\nfunction flagKeys(f) {\n return exports.keys(f);\n}\nexports.flagKeys = flagKeys;\nfunction duplicate(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexports.duplicate = duplicate;\nfunction isBoolean(b) {\n return b === true || b === false;\n}\nexports.isBoolean = isBoolean;\n/**\n * Convert a string into a valid variable name\n */\nfunction varName(s) {\n // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n var alphanumericS = s.replace(/\\W/g, '_');\n // Add _ if the string has leading numbers.\n return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nexports.varName = varName;\nfunction logicalExpr(op, cb) {\n if (logical_1.isLogicalNot(op)) {\n return '!(' + logicalExpr(op.not, cb) + ')';\n }\n else if (logical_1.isLogicalAnd(op)) {\n return '(' + op.and.map(function (and) { return logicalExpr(and, cb); }).join(') && (') + ')';\n }\n else if (logical_1.isLogicalOr(op)) {\n return '(' + op.or.map(function (or) { return logicalExpr(or, cb); }).join(') || (') + ')';\n }\n else {\n return cb(op);\n }\n}\nexports.logicalExpr = logicalExpr;\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nfunction deleteNestedProperty(obj, orderedProps) {\n if (orderedProps.length === 0) {\n return true;\n }\n var prop = orderedProps.shift();\n if (deleteNestedProperty(obj[prop], orderedProps)) {\n delete obj[prop];\n }\n return Object.keys(obj).length === 0;\n}\nexports.deleteNestedProperty = deleteNestedProperty;\nfunction titlecase(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n}\nexports.titlecase = titlecase;\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nfunction accessPathWithDatum(path, datum) {\n if (datum === void 0) { datum = 'datum'; }\n var pieces = vega_util_1.splitAccessPath(path);\n var prefixes = [];\n for (var i = 1; i <= pieces.length; i++) {\n var prefix = \"[\" + pieces.slice(0, i).map(vega_util_1.stringValue).join('][') + \"]\";\n prefixes.push(\"\" + datum + prefix);\n }\n return prefixes.join(' && ');\n}\nexports.accessPathWithDatum = accessPathWithDatum;\n/**\n * Return access with datum to the falttened field.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nfunction flatAccessWithDatum(path, datum) {\n if (datum === void 0) { datum = 'datum'; }\n return datum + \"[\" + vega_util_1.stringValue(vega_util_1.splitAccessPath(path).join('.')) + \"]\";\n}\nexports.flatAccessWithDatum = flatAccessWithDatum;\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nfunction replacePathInField(path) {\n return \"\" + vega_util_1.splitAccessPath(path).map(function (p) { return p.replace('.', '\\\\.'); }).join('\\\\.');\n}\nexports.replacePathInField = replacePathInField;\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nfunction removePathFromField(path) {\n return \"\" + vega_util_1.splitAccessPath(path).join('.');\n}\nexports.removePathFromField = removePathFromField;\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nfunction accessPathDepth(path) {\n if (!path) {\n return 0;\n }\n return vega_util_1.splitAccessPath(path).length;\n}\nexports.accessPathDepth = accessPathDepth;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar mark_1 = require(\"./mark\");\nvar mark_2 = require(\"./mark\");\n/**\n * Required Encoding Channels for each mark type\n */\nexports.DEFAULT_REQUIRED_CHANNEL_MAP = {\n text: ['text'],\n line: ['x', 'y'],\n trail: ['x', 'y'],\n area: ['x', 'y']\n};\n/**\n * Supported Encoding Channel for each mark type\n */\nexports.DEFAULT_SUPPORTED_CHANNEL_TYPE = {\n bar: vega_util_1.toSet(['row', 'column', 'x', 'y', 'size', 'color', 'fill', 'stroke', 'detail']),\n line: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'color', 'detail']),\n trail: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'color', 'detail', 'size']),\n area: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'detail']),\n tick: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'detail']),\n circle: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'size', 'detail']),\n square: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'size', 'detail']),\n point: vega_util_1.toSet(['row', 'column', 'x', 'y', 'color', 'fill', 'stroke', 'size', 'detail', 'shape']),\n geoshape: vega_util_1.toSet(['row', 'column', 'color', 'fill', 'stroke', 'detail', 'shape']),\n text: vega_util_1.toSet(['row', 'column', 'size', 'color', 'fill', 'stroke', 'text']) // TODO(#724) revise\n};\n// TODO: consider if we should add validate method and\n// requires ZSchema in the main vega-lite repo\n/**\n * Further check if encoding mapping of a spec is invalid and\n * return error if it is invalid.\n *\n * This checks if\n * (1) all the required encoding channels for the mark type are specified\n * (2) all the specified encoding channels are supported by the mark type\n * @param {[type]} spec [description]\n * @param {RequiredChannelMap = DefaultRequiredChannelMap} requiredChannelMap\n * @param {SupportedChannelMap = DefaultSupportedChannelMap} supportedChannelMap\n * @return {String} Return one reason why the encoding is invalid,\n * or null if the encoding is valid.\n */\nfunction getEncodingMappingError(spec, requiredChannelMap, supportedChannelMap) {\n if (requiredChannelMap === void 0) { requiredChannelMap = exports.DEFAULT_REQUIRED_CHANNEL_MAP; }\n if (supportedChannelMap === void 0) { supportedChannelMap = exports.DEFAULT_SUPPORTED_CHANNEL_TYPE; }\n var mark = mark_1.isMarkDef(spec.mark) ? spec.mark.type : spec.mark;\n var encoding = spec.encoding;\n var requiredChannels = requiredChannelMap[mark];\n var supportedChannels = supportedChannelMap[mark];\n for (var i in requiredChannels) { // all required channels are in encoding`\n if (!(requiredChannels[i] in encoding)) {\n return 'Missing encoding channel \\\"' + requiredChannels[i] +\n '\\\" for mark \\\"' + mark + '\\\"';\n }\n }\n for (var channel in encoding) { // all channels in encoding are supported\n if (!supportedChannels[channel]) {\n return 'Encoding channel \\\"' + channel +\n '\\\" is not supported by mark type \\\"' + mark + '\\\"';\n }\n }\n if (mark === mark_2.BAR && !encoding.x && !encoding.y) {\n return 'Missing both x and y for bar';\n }\n return null;\n}\nexports.getEncodingMappingError = getEncodingMappingError;\n//# sourceMappingURL=validate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vega_util_1 = require(\"vega-util\");\nvar util_1 = require(\"./util\");\nfunction isVgSignalRef(o) {\n return !!o['signal'];\n}\nexports.isVgSignalRef = isVgSignalRef;\nfunction isVgRangeStep(range) {\n return !!range['step'];\n}\nexports.isVgRangeStep = isVgRangeStep;\nfunction isDataRefUnionedDomain(domain) {\n if (!vega_util_1.isArray(domain)) {\n return 'fields' in domain && !('data' in domain);\n }\n return false;\n}\nexports.isDataRefUnionedDomain = isDataRefUnionedDomain;\nfunction isFieldRefUnionDomain(domain) {\n if (!vega_util_1.isArray(domain)) {\n return 'fields' in domain && 'data' in domain;\n }\n return false;\n}\nexports.isFieldRefUnionDomain = isFieldRefUnionDomain;\nfunction isDataRefDomain(domain) {\n if (!vega_util_1.isArray(domain)) {\n return 'field' in domain && 'data' in domain;\n }\n return false;\n}\nexports.isDataRefDomain = isDataRefDomain;\nfunction isSignalRefDomain(domain) {\n if (!vega_util_1.isArray(domain)) {\n return 'signal' in domain;\n }\n return false;\n}\nexports.isSignalRefDomain = isSignalRefDomain;\nvar VG_MARK_CONFIG_INDEX = {\n opacity: 1,\n fill: 1,\n fillOpacity: 1,\n stroke: 1,\n strokeCap: 1,\n strokeWidth: 1,\n strokeOpacity: 1,\n strokeDash: 1,\n strokeDashOffset: 1,\n strokeJoin: 1,\n strokeMiterLimit: 1,\n size: 1,\n shape: 1,\n interpolate: 1,\n tension: 1,\n orient: 1,\n align: 1,\n baseline: 1,\n text: 1,\n dir: 1,\n dx: 1,\n dy: 1,\n ellipsis: 1,\n limit: 1,\n radius: 1,\n theta: 1,\n angle: 1,\n font: 1,\n fontSize: 1,\n fontWeight: 1,\n fontStyle: 1,\n cursor: 1,\n href: 1,\n tooltip: 1,\n cornerRadius: 1,\n};\nexports.VG_MARK_CONFIGS = util_1.flagKeys(VG_MARK_CONFIG_INDEX);\n//# sourceMappingURL=vega.schema.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Parse a vega schema url into library and version.\n */\nfunction default_1(url) {\n var regex = /\\/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g;\n var _a = regex.exec(url).slice(1, 3), library = _a[0], version = _a[1];\n return { library: library, version: version };\n}\nexports.default = default_1;\n//# sourceMappingURL=index.js.map","function accessor (fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\nfunction accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n return obj[field];\n};\n\nconst getN = path => {\n const len = path.length;\n return function (obj) {\n for (let i = 0; i < len; ++i) {\n obj = obj[path[i]];\n }\n\n return obj;\n };\n};\n\nfunction error (message) {\n throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n const path = [],\n n = p.length;\n let q = null,\n b = 0,\n s = '',\n i,\n j,\n c;\n p = p + '';\n\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n\n for (i = j = 0; j < n; ++j) {\n c = p[j];\n\n if (c === '\\\\') {\n s += p.substring(i, j);\n s += p.substring(++j, ++j);\n i = j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n\n if (j > i) {\n j++;\n push();\n }\n\n return path;\n}\n\nfunction field (field, name, opt) {\n const path = splitAccessPath(field);\n field = path.length === 1 ? path[0] : field;\n return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n const args = [level].concat([].slice.call(input));\n console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method, handler = log$1) {\n let level = _ || None;\n return {\n level(_) {\n if (arguments.length) {\n level = +_;\n return this;\n } else {\n return level;\n }\n },\n\n error() {\n if (level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n return this;\n },\n\n warn() {\n if (level >= Warn) handler(method || 'warn', 'WARN', arguments);\n return this;\n },\n\n info() {\n if (level >= Info) handler(method || 'log', 'INFO', arguments);\n return this;\n },\n\n debug() {\n if (level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n return this;\n }\n\n };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n return configs.reduce((out, source) => {\n for (const key in source) {\n if (key === 'signals') {\n // for signals, we merge the signals arrays\n // source signals take precedence over\n // existing signals with the same name\n out.signals = mergeNamed(out.signals, source.signals);\n } else {\n // otherwise, merge objects subject to recursion constraints\n // for legend block, recurse for the layout entry only\n // for style block, recurse for all properties\n // otherwise, no recursion: objects overwrite, no merging\n const r = key === 'legend' ? {\n layout: 1\n } : key === 'style' ? true : null;\n writeConfig(out, key, source[key], r);\n }\n }\n\n return out;\n }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n if (!isLegalKey(key)) return;\n let k, o;\n\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : output[key] = {};\n\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n writeConfig(o, k, value[k]);\n } else if (isLegalKey(k)) {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\n\nfunction mergeNamed(a, b) {\n if (a == null) return b;\n const map = {},\n out = [];\n\n function add(_) {\n if (!map[_.name]) {\n map[_.name] = 1;\n out.push(_);\n }\n }\n\n b.forEach(add);\n a.forEach(add);\n return out;\n}\n\nfunction peek (array) {\n return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n const sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n let lo = range[0],\n hi = range[1],\n span;\n\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n\n span = hi - lo;\n return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n opt = opt || {};\n orders = array(orders) || [];\n const ord = [],\n get = [],\n fmap = {},\n gen = opt.comparator || comparator;\n array(fields).forEach((f, i) => {\n if (f == null) return;\n ord.push(orders[i] === DESCENDING ? -1 : 1);\n get.push(f = isFunction(f) ? f : field(f, null, opt));\n (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n });\n return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n orders.push(0); // pad zero for convenient lookup\n\n return function (a, b) {\n let f,\n c = 0,\n i = -1;\n\n while (c === 0 && ++i < n) {\n f = fields[i];\n c = ascending(f(a), f(b));\n }\n\n return c * orders[i];\n };\n};\n\nfunction constant (_) {\n return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n let tid;\n return e => {\n if (tid) clearTimeout(tid);\n tid = setTimeout(() => (handler(e), tid = null), delay);\n };\n}\n\nfunction extend (_) {\n for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n x = arguments[i];\n\n for (k in x) {\n _[k] = x[k];\n }\n }\n\n return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n let i = 0,\n n,\n v,\n min,\n max;\n\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n min = max = v; // visit all other values\n\n for (; i < n; ++i) {\n v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n min = max = v; // visit all other values\n\n for (; i < n; ++i) {\n v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n\n return [min, max];\n}\n\nfunction extentIndex (array, f) {\n const n = array.length;\n let i = -1,\n a,\n b,\n c,\n u,\n v;\n\n if (f == null) {\n while (++i < n) {\n b = array[i];\n\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n if (i === n) return [-1, -1];\n u = v = i;\n\n while (++i < n) {\n b = array[i];\n\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n if (i === n) return [-1, -1];\n u = v = i;\n\n while (++i < n) {\n b = f(array[i], i, array);\n\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n\n return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n let obj = {},\n test;\n\n function has$1(key) {\n return has(obj, key) && obj[key] !== NULL;\n }\n\n const map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has$1,\n\n get(key) {\n return has$1(key) ? obj[key] : undefined;\n },\n\n set(key, value) {\n if (!has$1(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n\n obj[key] = value;\n return this;\n },\n\n delete(key) {\n if (has$1(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n\n return this;\n },\n\n clear() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n\n test(_) {\n if (arguments.length) {\n test = _;\n return map;\n } else {\n return test;\n }\n },\n\n clean() {\n const next = {};\n let size = 0;\n\n for (const key in obj) {\n const value = obj[key];\n\n if (value !== NULL && (!test || !test(value))) {\n next[key] = value;\n ++size;\n }\n }\n\n map.size = size;\n map.empty = 0;\n map.object = obj = next;\n }\n\n };\n if (input) Object.keys(input).forEach(key => {\n map.set(key, input[key]);\n });\n return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n const t = +threshold;\n let a = range[0],\n b = peek(range),\n l; // swap endpoints if range is reversed\n\n if (b < a) {\n l = a;\n a = b;\n b = l;\n } // compare value to endpoints\n\n\n l = Math.abs(value - a);\n const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n const proto = child.prototype = Object.create(parent.prototype);\n Object.defineProperty(proto, 'constructor', {\n value: child,\n writable: true,\n enumerable: true,\n configurable: true\n });\n return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n let r0 = range[0],\n r1 = range[range.length - 1],\n t;\n\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n\n left = left === undefined || left;\n right = right === undefined || right;\n return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n if (fields) {\n fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n }\n\n const len = fields && fields.length,\n gen = opt && opt.get || getter,\n map = f => gen(flat ? [f] : splitAccessPath(f));\n\n let fn;\n\n if (!len) {\n fn = function () {\n return '';\n };\n } else if (len === 1) {\n const get = map(fields[0]);\n\n fn = function (_) {\n return '' + get(_);\n };\n } else {\n const get = fields.map(map);\n\n fn = function (_) {\n let s = '' + get[0](_),\n i = 0;\n\n while (++i < len) s += '|' + get[i](_);\n\n return s;\n };\n }\n\n return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n const lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n maxsize = +maxsize || DEFAULT_MAX_SIZE;\n let curr, prev, size;\n\n const clear = () => {\n curr = {};\n prev = {};\n size = 0;\n };\n\n const update = (key, value) => {\n if (++size > maxsize) {\n prev = curr;\n curr = {};\n size = 1;\n }\n\n return curr[key] = value;\n };\n\n clear();\n return {\n clear,\n has: key => has(curr, key) || has(prev, key),\n get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n };\n}\n\nfunction merge (compare, array0, array1, output) {\n const n0 = array0.length,\n n1 = array1.length;\n if (!n1) return array0;\n if (!n0) return array1;\n const merged = output || new array0.constructor(n0 + n1);\n let i0 = 0,\n i1 = 0,\n i = 0;\n\n for (; i0 < n0 && i1 < n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n }\n\n for (; i0 < n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n\n for (; i1 < n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n\n return merged;\n}\n\nfunction repeat (str, reps) {\n let s = '';\n\n while (--reps >= 0) s += str;\n\n return s;\n}\n\nfunction pad (str, length, padchar, align) {\n const c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n const s = {},\n n = _.length;\n\n for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n const e = ellipsis != null ? ellipsis : '\\u2026',\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n if (array) {\n if (filter) {\n const n = array.length;\n\n for (let i = 0; i < n; ++i) {\n const t = filter(array[i]);\n if (t) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\n\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };\n"],"names":["exports","str","bytes","i","result","l","length","base64abc","bytesToBase64","arguments","undefined","TextEncoder","encode","CodeMirror","ie_lt8","test","navigator","userAgent","document","documentMode","Pos","matching","bracketRegex","config","findMatchingBracket","cm","where","line","getLineHandle","pos","ch","afterCursor","getWrapperElement","className","re","match","text","charAt","dir","strict","style","getTokenTypeAt","found","scanForBracket","from","to","forward","maxScanLen","maxScanLineLength","maxScanLines","stack","lineEnd","Math","min","lastLine","max","firstLine","lineNo","getLine","end","push","pop","matchBrackets","autoclear","maxHighlightLen","state","maxHighlightLineLength","highlightNonMatching","marks","ranges","listSelections","empty","head","markText","focused","focus","clear","operation","setTimeout","doMatchBrackets","currentlyHighlighted","clearHighlighted","defineOption","val","old","Init","off","on","defineExtension","this","oldConfig","mod","WORD","registerHelper","editor","options","word","range","cur","getCursor","curLine","start","curWord","slice","list","seen","RegExp","source","endLine","m","exec","lastIndexOf","Object","prototype","hasOwnProperty","call","ACTIVE_HINT_ELEMENT_CLASS","Completion","widget","debounce","tick","startPos","startLen","getSelection","updateOnCursorActivity","self","activityFunc","cursorActivity","showHint","getHints","async","newOpts","hint","prop","hintOptions","out","defaultOptions","resolve","parseOptions","selections","somethingSelected","supportsSelection","anchor","completionActive","close","completion","signal","update","requestAnimationFrame","window","fn","cancelAnimationFrame","clearTimeout","getText","getHintElement","hintsElement","el","nodeName","toUpperCase","parentNode","Widget","data","id","floor","random","picked","ownerDocument","getInputField","parentWindow","defaultView","hints","createElement","setAttribute","theme","selectedHint","completions","elt","appendChild","render","createTextNode","displayText","hintId","container","body","cursorCoords","alignWithWord","left","top","bottom","below","offsetLeft","offsetTop","offsetParent","indexOf","getComputedStyle","position","offsetParentPosition","getBoundingClientRect","bodyPosition","scrollLeft","scrollTop","winW","innerWidth","offsetWidth","documentElement","winH","innerHeight","offsetHeight","startScroll","box","moveOnOverlap","DOMRect","scrolls","paddingForScrollbar","scrollHeight","clientHeight","getScrollInfo","height","cursor","closingOnBlur","overlapX","right","display","nativeBarWidth","width","node","firstChild","nextSibling","paddingRight","addKeyMap","keyMap","handle","baseMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","platform","custom","customKeys","ourMap","addBinding","key","bound","extra","extraKeys","buildKeyMap","n","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onBlur","onFocus","onScroll","curScroll","newTop","point","pageYOffset","e","t","target","srcElement","completeOnSingleClick","selectedHintRange","getSelectedHintRange","scrollToActive","childNodes","fetchHints","callback","then","active","replaceRange","scrollIntoView","closeOnPick","identStart","closeCharacters","disable","first","myTick","finishUpdate","completeSingle","removeChild","removeKeyMap","input","removeAttribute","replace","node1","node2","firstNode","margin","scrollMargin","words","helpers","getHelpers","resolved","app","applicableHelpers","run","getHelper","fromList","anyword","term","token","getTokenAt","string","substr","commands","autocomplete","auto","tables","defaultTable","keywords","identifierQuote","CONS","QUERY_DIV","ALIAS_KEYWORD","cmpPos","isArray","toString","item","wrapTable","name","value","columns","getTable","shallowClone","object","len","sub","addMatches","search","wordlist","formatter","cleanName","nameParts","split","join","insertIdentifierQuotes","escaped","eachWord","lineText","f","findTableByAlias","alias","doc","fullQuery","getValue","aliasUpperCase","previousWord","table","separator","validRange","indexOfSeparator","posFromIndex","unshift","prevItem","current","query","getRange","wordUpperCase","parseTables","defaultTableName","disableKeywords","mode","modeOption","resolveMode","getKeywords","getIdentifierQuote","useIdentifierQuotes","cont","w","aliasTable","oldTable","tableInsert","nameCompletion","objectOrClass","keySet","array","keys","toLowerCase","defineMode","parserConfig","inline","propertyKeywords","type","override","indentUnit","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","tp","tokenBase","stream","next","eatWhile","eat","tokenize","tokenString","tokenParenthesized","peek","quote","backUp","Context","indent","prev","pushContext","context","indentation","popContext","pass","states","popAndPass","wordAsValue","stateArg","_stream","atBlock","startState","base","eatSpace","textAfter","cx","electricChars","blockCommentStart","blockCommentEnd","blockCommentContinue","fold","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","colorKeywords_","valueKeywords_","allWords","concat","tokenCComment","maybeEnd","defineMIME","skipToEnd","helperType","defaultTags","script","attrRegexpCache","getAttrValue","attr","getAttrRegexp","getTagRegexp","tagName","anchored","addTags","tag","dest","htmlMode","getMode","multilineTagIndentFactor","multilineTagIndentPastTag","allowMissingTagName","tags","configTags","configScript","scriptTypes","matches","html","htmlState","inTag","modeSpec","tagInfo","tagText","spec","findMatchingMode","endTagA","endTag","localState","localMode","pat","maybeBackup","eol","copyState","local","Pass","innerMode","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","setStyle","defaults","inText","chain","parser","inBlock","doctype","closure","baseState","tagStart","isInAttribute","stringStartCol","column","terminator","depth","lower","startOfLine","indented","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","sol","fullLine","alignCDATA","tagAfter","grabbers","electricInput","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","reverse","mimeModes","json","JSON","module","obj","opts","cmp","space","Array","cycles","replacer","a","b","aobj","bobj","stringify","parent","level","colonSeparator","toJSON","TypeError","objectKeys","sort","keyValue","splice","x","has","stringOrChar","get","defaultValue","addMargin","maxLength","Infinity","_stringify","currentIndent","reserved","prettified","tokens","prettify","delimiters","nextIndent","items","comma","index","forEach","keyPart","parse","at","escapee","r","error","message","c","number","isFinite","hex","uffff","parseInt","String","fromCharCode","white","reviver","walk","holder","k","v","gap","rep","escapable","meta","lastIndex","charCodeAt","partial","mind","apply","Error","__assign","assign","s","p","none","selector","querySelector","EnterNode","datum","namespaceURI","_next","_parent","__data__","create","constructor","child","insertBefore","querySelectorAll","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","NaN","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","attrRemove","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","propertyRemove","propertyConstant","propertyFunction","classArray","trim","classList","ClassList","_node","_names","getAttribute","classedAdd","names","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","previousSibling","creatorInherit","uri","createElementNS","creatorFixed","namespace","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","contains","filterEvents","filterContextListener","listener","contextListener","event","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","typename","__on","o","j","removeEventListener","capture","onAdd","wrap","d","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","mouseenter","mouseleave","root","Selection","groups","parents","_groups","_parents","select","subgroups","subnode","subgroup","selectAll","selectorAll","filter","matcher","size","each","bind","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","map","sparse","onenter","onupdate","onexit","append","merge","order","selection","groups0","groups1","m0","m1","merges","group0","group1","compare","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","getPropertyValue","styleValue","property","classed","creator","insert","before","deep","typenames","parseTypenames","dispatch","UniqueList","idFunc","$","identity","ids","_","idx","TUPLE_ID_KEY","Symbol","TUPLE_ID","isTuple","tupleid","setid","ingest","derive","rederive","isChangeSet","changeset","rem","remp","modp","reflow","isFunction","modify","field","constant","tuple","set","pulse","tuples","modifies","CACHE","Parameters","defineProperty","writable","force","modified","OP_ID","NO_PARAMS","Operator","init","react","stamp","rank","qrank","flags","_update","parameters","flag","bit","targets","_targets","skip","initonly","argval","_argval","argops","_argops","deps","op","marshall","evaluate","StopPropagation","rv","STREAM_ID","EventStream","receive","_filter","_apply","truthy","consume","_consume","evt","trg","preventDefault","stopPropagation","throttle","pause","now","Date","delay","df","dataflow","between","protocol_re","fileProtocol","sanitize","load","file","http","loader","opt","url","href","localFile","extend","Promise","accept","reject","isFile","hasProtocol","loadFile","baseURL","startsWith","fs","defaultProtocol","stringValue","fetch","request","response","ok","status","statusText","filename","readFile","typeParsers","boolean","toBoolean","integer","toNumber","date","toDate","unknown","typeTests","isNumber","isNaN","typeList","inferType","values","reduce","u","inferTypes","fields","types","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","Function","inferColumns","rows","columnSet","row","pad","delimiter","reFormat","DELIMITER","parseRows","N","I","eof","preformatBody","formatValue","formatRow","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","year","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","formatDate","convert","customConverter","format","formatBody","formatRows","delimitedFormat","delim","header","dsv","isObject","Buffer","isBuffer","parseJSON","topology","objects","features","geometries","bbox","properties","geometry","transformPoint","transform","x0","y0","kx","scale","ky","dx","translate","dy","output","arcs","arc","points","ring","polygon","coordinates","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","flush","g","p1","p0","dp","ends","fg","gf","meshArcs","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","extractArcs","stitch","csv","tsv","topojson","method","feature","mesh","formats","reader","t0","t1","newInterval","floori","offseti","count","interval","ceil","round","d0","d1","offset","step","stop","setTime","every","durationSecond","durationMinute","durationHour","durationDay","durationWeek","utcWeekday","setUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","weekday","setDate","getDate","getDay","setHours","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","day","setMonth","setFullYear","getFullYear","utcYear","setUTCMonth","setUTCFullYear","localDate","y","H","M","S","L","utcDate","UTC","newDate","locale","timeFormat","timeParse","utcFormat","utcParse","pads","numberRe","percentRe","requoteRe","fill","sign","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","q","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","getHours","formatHour12","formatDayOfYear","formatMilliseconds","getMilliseconds","formatMicroseconds","formatMonthNumber","getMonth","formatMinutes","getMinutes","formatSeconds","getSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","z","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","defaultLocale","definition","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newFormat","specifier","newParse","week","X","formatLocale","schema","dateParse","parsers","parts","pattern","onStream","func","touch","onOperator","Pulse","addFilter","materialize","visitArray","visit","MultiPulse","pulses","hash","changed","ADD","REM","MOD","changes","ADD_REM","ADD_MOD","ALL","REFLOW","SOURCE","NO_SOURCE","NO_FIELDS","fork","addAll","src","addF","remF","modF","srcF","runAfter","some","visitor","sum","inherits","invokeCallback","err","NO_OPT","Heap","comparator","siftdown","pidx","siftup","ridx","cidx","Dataflow","_log","logger","logLevel","_clock","_rank","_loader","_touched","_pulses","_pulse","_heap","_postrun","last","retval","pushpop","ref","logMethod","Transform","cleanThreshold","shift","connect","sources","targetRank","rerank","queue","_enqueue","read","pending","_pending","requests","done","loadPending","catch","events","send","dt","info","Info","debug","_getPulse","Debug","_onrun","postrun","runAsync","enqueue","warn","transforms","Definition","groupkey","measureName","as","AggregateOps","measure","req","ValidAggregateOps","createMeasure","compareIndex","compileMeasures","agg","all","collect","helper","ctr","valueof","compareDefined","log","exp","sd","sqrt","swap","Float64Array","value0","subarray","median","quantiles","quantileSorted","quartiles","estimateBandwidth","delta","mean","variance","deviation","h","abs","pow","bin","maxb","maxbins","logb","div","divide","minstep","extent","span","steps","precision","eps","nice","setRandom","bootstrapCI","samples","alpha","mu","dotbin","smooth","thresh","smoothing","lcg","seed","dist","sample","pdf","cdf","icdf","SQRT2PI","PI","SQRT2","nextSample","sampleNormal","stdev","rds","densityNormal","cumulativeNormal","cd","quantileNormal","Number","erfinv","gaussian","sigma","kde","support","bandwidth","kernel","sampleLogNormal","densityLogNormal","cumulativeLogNormal","quantileLogNormal","lognormal","mixture","dists","weights","normalize","distributions","sampleUniform","densityUniform","cumulativeUniform","quantileUniform","uniform","ols","uX","uY","uXY","uX2","slope","Y","xv","yv","ux","uy","visitPoints","rSquared","predict","SSE","SST","sse","sst","linear","XY","X2","coef","ly","xy","YL","XYL","X2Y","c0","c1","YS","lx","quad","x2","X3","X4","X2X2","poly","lhs","rhs","matrix","gaussianElimination","uncenter","maxiters","epsilon","loess","bw","yhat","residuals","robustWeights","iter","edge","denom","xk","yk","tricube","xkw","updateInterval","medianResidual","arg","cnt","MIN_RADIANS","sampleCurve","minSteps","maxSteps","minX","maxX","sx","sy","ymin","ymax","scaleY","pm","angleDelta","a0","atan2","a1","TupleStore","_key","reset","Aggregate","_adds","_mods","_alen","_mlen","_drop","_cross","_dims","_dnames","_measures","_countOnly","_counts","_prev","_inputs","_outputs","_add","_rem","_ext","_get","_q","distinct","extentIndex","argmin","argmax","quartile","q1","q2","q3","ci","_ci","ci0","ci1","Bin","aggr","drop","cross","curr","dims","vals","cells","generate","cell","inputs","outputs","inputMap","inputVisit","accessorFields","groupby","dname","accessorName","cellkey","mname","outname","ops","num","newcell","newtuple","store","measures","celltuple","counts","adds","mods","resort","Collect","Compare","orders","CountPattern","bins","_bins","b0","b1","accessor","SortedList","Cross","process","tcase","case","_parameterCheck","_match","_stop","_finish","stopwords","_tuples","Distributions","normal","FUNCTION","def","Density","Expression","expr","Extent","Subflow","distribution","domain","Facet","_keys","fastmap","Field","Filter","fieldNames","Flatten","Fold","Formula","Generate","activate","flow","subflow","flows","sf","_group","cache","rekey","delete","k0","k1","clean","isMod","revisit","arrays","maxlen","fnames","gen","generator","Methods","Empty","Impute","JoinAggregate","gVals","kVal","impute","getField","fName","kName","gNames","keyvals","gKey","kMap","gMap","partition","_impute","Key","flat","Load","Lookup","MultiExtent","ext","extents","MultiValues","Params","Pivot","default","PreFacet","Project","Proxy","Relay","Sample","Sequence","Sieve","TupleIndex","Values","_transform","limit","pivotKeys","aggregateParams","lut","project","res","cap","WindowOps","row_number","dense_rank","drank","percent_rank","cume_dist","cume","ntile","lag","lead","first_value","last_value","nth_value","nth","ValidWindowOps","WindowState","windows","countOnly","visitInputs","param","zero","WindowOp","lo","hi","mid","ascendingComparator","center","Window","wind","processPartition","ignorePeers","frame","bisector","setWindow","adjustRange","bisect","r0","r1","Top","Left","Right","Bottom","Group","AxisRole","LegendRole","RowHeader","RowFooter","RowTitle","ColHeader","ColFooter","ColTitle","All","Each","Column","Row","Bounds","union","x1","MAX_VALUE","y1","y2","expand","rotate","angle","cos","sin","cy","intersect","encloses","alignsWith","intersects","gradient_id","gradient","stops","color","Item","mark","bounds","GroupItem","domCanvas","getContext","domImage","Image","ResourceLoader","customLoader","increment","decrement","that","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","BasisClosed","BasisOpen","Bundle","beta","_basis","_beta","sanitizeURL","loadImage","img","onload","loaded","onerror","ready","poll","areaStart","_line","areaEnd","lineStart","_point","lineTo","closePath","moveTo","noop","_x2","_x3","_x4","_y2","_y3","_y4","_x","_y","bundle","_k","Cardinal","tension","cardinal","CardinalOpen","CardinalClosed","_x5","_y5","pi","halfPi","tau","asin","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","Linear","LinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t","_t0","px","py","lookup","curve","horizontal","vertical","curves","orientation","entry","cmdlen","regexp","pathstr","path","chunks","parsed","cmd","segmentCache","bezierCache","bezier","th0","th1","rx","ry","sin_th","cos_th","a00","a01","a10","a11","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","x3","y3","temp","tempX","tempY","tempControlX","tempControlY","controlX","controlY","beginPath","quadraticCurveTo","drawArc","coords","seg","large","sweep","rotateX","ox","oy","th","pl","sfactor_sq","sfactor","xc","yc","th_arc","segs","th2","th3","segments","bez","halfSqrt3","builtins","draw","rect","symbols","customSymbol","tauEpsilon","Path","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","ccw","cw","da","rectangleX","rectangleY","rectangleWidth","rectangleHeight","cornerRadius","rectangle","buffer","cr","defined","w2","r2","ud","trail","defined0","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","arcShape","padRadius","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","ax","ay","bx","by","kc","lc","centroid","areavShape","areahShape","lineShape","rectShape","symbolShape","circle","symbol","shape","trailShape","stroke","opacity","strokeOpacity","strokeWidth","circleThreshold","linearGradient","createLinearGradient","addColorStop","fillOpacity","globalAlpha","fillStyle","sa","ea","xmin","xmax","lw","strokeStyle","lineWidth","lineCap","strokeCap","lineJoin","strokeJoin","miterLimit","strokeMiterLimit","setLineDash","strokeDash","lineDashOffset","strokeDashOffset","zindex","zorder","scene","zdirty","zitems","pickVisit","hit","drawAll","drawPath","drawOne","trueFunc","gx","gy","pixelRatio","hitPath","filled","isPointInStroke","isPointInPath","pickPath","nested","emit","translateItem","boundStroke","markItemPath","tip","markMultiItemPath","interp","interpolate","orient","clip_id","resetSVGClipId","renderer","clip","defs","_defs","clipping","backgroundPath","hitBackground","noBound","save","restore","handler","interactive","marktype","pickMark","background","foreground","getImage","image","imageXOffset","align","imageYOffset","baseline","aspect","ar0","ar1","drawImage","xOffset","yOffset","pathCache","currFontHeight","textMetrics","fontSize","measureWidth","estimateWidth","canvas","useCanvas","estimate","textValue","font","measureText","use","ellipsis","rtl","truncate","fontFamily","fontStyle","fontVariant","fontWeight","textAlign","tempBounds","noRotate","radius","theta","fillText","strokeText","ix","iy","rule","DUMMY","hasItems","boundItem","sceneToJSON","sceneFromJSON","initialize","boundMark","Scenegraph","createMark","role","domCreate","ns","domFind","domChild","domClear","cssClass","clientX","clientLeft","clientY","clientTop","customTooltip","_active","_handlers","_tooltip","defaultTooltip","element","markdef","Renderer","_el","_bgcolor","origin","_obj","_origin","_scene","_handlerIndex","handlers","eventName","handleHref","MouseEvent","handleTooltip","show","tooltip","mdef","resolveItem","getItemBoundingClientRect","itemBounds","scaleFactor","resize","bgcolor","_width","_height","_scale","dirty","_call","_render","renderAsync","_ready","_load","redraw","TooltipShowEvent","TooltipHideEvent","HrefEvent","CanvasHandler","_down","_touch","_first","move","moveEvent","overEvent","outEvent","pickEvent","fire","inactive","_canvas","DOMMouseScroll","mousemove","dragover","mouseout","dragleave","mousedown","click","touchstart","changedTouches","touchmove","touchend","vegaType","devicePixelRatio","CanvasRenderer","_redraw","_dirty","SVGHandler","_hrefHandler","_tooltipHandler","inDOM","HTMLElement","ratio","setTransform","clipToBounds","ctx","clearRect","fillRect","openTag","raw","closeTag","_svg","styles","styleProperties","metadata","SVGRenderer","_dirtyID","_root","updateGradient","grad","updateClipping","mask","dirtyParents","sibling","__values__","bg","ownerSVGElement","hasSiblings","padding","class","viewBox","_dirtyCheck","_dirtyAll","_resetDefs","updateDefs","isDirty","isGroup","lastChild","recurse","mark_extras","SVGStringRenderer","_text","foot","loc","location","prefixed","applyStyles","buildDefs","attributes","_hrefs","markGroup","Canvas","RenderType","PNG","SVG","None","modules","renderModule","headless","clipBounds","TOLERANCE","sceneEqual","pathEqual","ka","kb","objectEqual","Bound","rebound","view","markBounds","boundClip","COUNTER_NAME","Identifier","Mark","Overlap","counter","_signals","getCounter","scenegraph","methods","parity","greedy","hasOverlap","hasBounds","Render","bboxFlush","bboxFull","boundFlush","boundFull","offsetValue","layoutHeaders","headers","ncols","isX","bf","stride","back","band","layoutTitle","boundScale","boundTolerance","tolerance","boundTest","boundOrient","ViewLayout","isYAxis","axisLayout","axis","indices","grid","ticks","labels","axisIndices","minExtent","maxExtent","title","titlePadding","axisTitleLayout","legendPreprocess","legends","legend","legendGroupLayout","legendLayout","xBounds","yBounds","axisBounds","entries","widths","leftWidth","layout","views","rowheaders","rowfooters","colheaders","colfooters","rowtitle","coltitle","extractGroups","alignCol","alignRow","padCol","padRow","nrows","xExtent","xMax","yExtent","yMax","headerBand","footerBand","titleBand","gridLayout","viewBounds","legendMargin","autosize","titleLayout","viewWidth","viewHeight","_autosize","_resizeView","viewSizeLayout","layoutGroup","Log","Pow","Sqrt","Point","Ordinal","Quantile","Quantize","Threshold","BinOrdinal","Sequential","paddingInner","paddingOuter","ascendingBisect","bisectRight","bisectLeft","e10","e5","e2","tickIncrement","power","LN10","step0","step1","Map","sortValues","rollup","nest","sortKeys","createResult","setResult","valuesByKey","sortKey","createObject","setObject","createMap","setMap","Set","proto","implicit","copy","factory","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","rgb_formatRgb","Hsl","hslConvert","hsl","hsl2rgb","m2","v0","v1","v2","v3","t2","t3","hue","nogamma","channels","displayable","formatHsl","rgbGamma","exponential","gamma","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","isNumberArray","ArrayBuffer","isView","DataView","numberArray","genericArray","nb","na","reA","reB","am","bm","bs","bi","one","valueOf","unit","clamper","bimap","polymap","clamp","untransform","piecewise","rescale","invert","rangeRound","continuous","prefixExponent","formatSpecifier","FormatSpecifier","formatDecimalParts","toExponential","coefficient","exponent","toFixed","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","tickFormat","precisionPrefix","precisionRound","precisionFixed","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","transformPow","transformSqrt","transformSquare","month","hour","minute","second","millisecond","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","tickInterval","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","ordinalRange","bandSpace","invertRange","scales","invertExtent","invertRangeExtent","logs","pows","E","log10","log2","logp","powp","ordinal","quantile","thresholds","quantize","threshold","utc","sequential","interpolator","binLinear","setDomain","binOrdinal","cssNode","cssRoot","cssView","svgNode","translateX","translateY","skewX","scaleX","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","decompose","interpolateTransformSvg","baseVal","consolidate","rho","rho2","rho4","epsilon2","cosh","ux0","uy0","w0","ux1","uy1","w1","coshr0","tanh","sinh","duration","hslLong","deg2rad","rad2deg","Xn","Yn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hcl","hclConvert","hclLong","A","B","C","ED","EB","BC_DA","Cubehelix","bl","cubehelixConvert","cubehelix","cubehelixGamma","cubehelixLong","interpolateRange","scaleFraction","lerp","category20","category20b","category20c","tableau10","tableau20","blueOrange","ramp","magma","inferno","plasma","warm","cool","ts","pi_1_3","pi_2_3","scheme","discretized","blueorange","schemes","category10","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","viridis","rainbow","sinebow","part","schemeDiscretized","schemeArray","timeInterval","utcInterval","tickCount","isString","validTicks","endpoints","tickValues","sourceFormat","targetFormat","decimalChar","dec","rightmostDigit","trimZeroes","variablePrecision","AxisTicks","DataJoin","defaultItemCreate","isExit","Encode","label","encoders","reenter","falsy","LegendEntries","fraction","labelValues","formatRange","formatDiscrete","formatPoint","labelFormat","perc","adjust","labelFraction","perc2","Paths","sr","ta","tr","tx","ty","sc","ss","tc","mr","sourceX","sourceY","targetX","targetY","LinkPath","rr","Pie","INCLUDE_ZERO","toSet","INCLUDE_PAD","Scale","domainCheck","adjustScheme","flip","SortItems","rangeStep","outer","inner","configureRangeStep","discrete","schemeExtent","schemeCount","configureScheme","interpolateGamma","configureRange","rawDomain","domainRaw","frac","zoomLog","zoomPow","zoomLinear","padDomain","domainMin","domainMax","domainMid","domainImplicit","configureDomain","Zero","Center","Normalize","DefOutput","Stack","stackCenter","stackNormalize","stackZero","lastPos","lastNeg","LN2","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","cases","smoothLinear","contours","tz","contour","polygons","holes","startIndex","endIndex","isorings","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","CONTOUR_PARAMS","DENSITY_PARAMS","Contour","weight","density","values0","Float32Array","values1","wi","transformPolygon","transformRing","cellSize","ex","FeatureCollection","GeoJSON","_features","_points","lon","lat","geojson","streamGeometry","streamGeometryType","streamObjectType","Feature","Sphere","sphere","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","closed","coordinate","polygonStart","polygonEnd","Adder","_partials","_n","quarterPi","hypot","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","boundsStream","X0","Y0","Z0","X1","Y1","Z1","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","projection","projectionStream","contextStream","lines","rejoin","Intersection","other","compareIntersection","startInside","subject","segment","pointEqual","isSubject","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","longitude","flatten","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","sinPhi","winding","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","absDelta","antimeridian","intersection","phiArc","polygonContains","pointLine","ringSegments","validSegment","_circle","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","direction","circleRadius","cosRadius","clipMax","clipMin","clipRectangle","visible","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","compose","rotationIdentity","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","delta2","resampleLineTo","phi2","lambda2","dx2","dy2","dz","lambda00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","ai","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cacheStream","preclip","postclip","recenter","resample","transformRotate","clipAngle","smallRadius","notHemisphere","two","n1","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","code","v00","point2","sinRadius","circleStream","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","cylindricalEqualAreaRaw","r0y","conicEqualArea","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","fy","equirectangularRaw","conicEquidistantRaw","nx","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","adder","bv","av","merged","sqrt2","SQRT1_2","mollweideBromleyTheta","cp","cpsinPhi","mollweideRaw","mollweideBromleyRaw","defaultPath","projectionProperties","proj","projections","getProjectionPath","albers","albersusa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalequalarea","azimuthalequidistant","conicconformal","conicequalarea","conicequidistant","equalEarth","equirectangular","gnomonic","mercator","mollweide","naturalEarth1","orthographic","stereographic","transversemercator","GeoPath","GeoPoint","GeoShape","graticuleX","graticuleY","Graticule","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","Projection","tree","xm","ym","xp","yp","leaf","quadtree","Quadtree","leaf_copy","initPath","shapeGenerator","treeProto","vx","vy","nodeById","nodeId","cover","xz","yz","find","quads","retainer","removeAll","visitAfter","Dispatch","T","args","taskHead","taskTail","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","setFrame","clearNow","Timer","_time","timer","restart","wake","timerFlush","sleep","nap","poke","clearInterval","setInterval","initialAngle","ForceMap","collide","radii","strength","iterations","ri","ri2","prepare","rj","jiggle","nbody","strengths","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","link","links","distances","bias","distance","initializeStrength","initializeDistance","Forces","ForceParams","ForceConfig","ForceOutput","Force","setup","sim","forces","getForce","numForces","setForceParam","children","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","Nest","HierarchyLayout","defaultSeparation","change","iters","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","stepper","fx","initializeNodes","initializeForce","closest","stopped","static","finish","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","setParams","separation","setFields","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","enclosesWeak","encloseBasis","r21","r3","a2","a3","b2","b3","c3","d3","ab","place","score","packEnclose","circles","aa","sj","sk","pack","shuffle","enclose","required","constantZero","defaultRadius","radiusLeaf","packChildren","translateChild","Output","Pack","Partition","positionNode","preroot","ambiguous","defaultId","defaultParentId","parentId","stratify","nodeKey","nodeByKey","Stratify","nextLeft","nextRight","moveSubtree","wm","wp","nextAncestor","vim","TreeNode","meanXReduce","maxYReduce","parentKey","Layouts","tidy","nodeSize","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","som","apportion","cluster","previousNode","meanX","maxY","leafLeft","leafRight","Tree","TreeLinks","squarifyRatio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","dice","squarify","resquarify","_squarify","Tiles","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","slicedice","Treemap","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","tile","paddingStack","paddingTop","paddingBottom","paddingLeft","treemap","after","grandpa","uncle","createEdge","edges","setEdgeEnd","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","cellHalfedgeAngle","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","Voronoi","triangles","e1","_found","defaultExtent","diagram","voronoi","cloudRadians","cloudSprite","contextAndRatio","di","sprite","w32","maxh","wcr","wsr","hcr","hsr","xoff","yoff","hasText","pixels","getImageData","seenRow","cloudCollide","board","sw","msx","cloudBounds","archimedeanSpiral","functor","spirals","archimedean","rectangular","Wordcloud","spiral","cloud","dxdy","maxDelta","zeroArray","array8","Uint8Array","array16","Uint16Array","array32","Uint32Array","added","dim","SortedIndex","oldv","oldi","n0","addv","addi","index0","value1","index1","reindex","CrossFilter","lengthen","_index","Bitmaps","_indices","fontSizeRange","fsize","sizeScale","ResolveFilter","reinit","eval","fname","Dimension","remMap","modMap","bits","indexMap","filters","incrementOne","incrementAll","lo1","hi1","lo0","hi0","ignore","bitmap","Default","dataref","_runtime","dataset","_viewWidth","_viewHeight","VIEW","NO_TRAP","trap","itemFilter","markTarget","invoke","vega","RadioClass","OptionClass","elements","checked","option","valuesEqual","selected","selectedIndex","_background","_scenegraph","OUTER","OUTER_INVALID","outerError","scope","signals","addSignal","ASTNode","TokenName","lookahead","callee","consequent","alternate","argument","TokenBooleanLiteral","TokenEOF","TokenIdentifier","TokenKeyword","TokenNullLiteral","TokenNumericLiteral","TokenPunctuator","TokenStringLiteral","SyntaxArrayExpression","SyntaxBinaryExpression","SyntaxCallExpression","SyntaxConditionalExpression","SyntaxIdentifier","SyntaxLiteral","SyntaxLogicalExpression","SyntaxMemberExpression","SyntaxObjectExpression","SyntaxProperty","SyntaxUnaryExpression","MessageUnexpectedToken","MessageUnexpectedNumber","MessageUnexpectedString","MessageUnexpectedIdentifier","MessageUnexpectedReserved","MessageUnexpectedEOS","MessageInvalidRegExp","MessageUnterminatedRegExp","MessageStrictOctalLiteral","MessageStrictDuplicateProperty","ILLEGAL","DISABLED","RegexNonAsciiIdentifierStart","RegexNonAsciiIdentifierPart","assert","condition","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","isIdentifierPart","skipComment","scanHexEscape","throwError","scanUnicodeCodePointEscape","cu1","cu2","getEscapedIdentifier","scanPunctuator","code2","ch2","ch3","ch4","ch1","scanNumericLiteral","scanHexLiteral","octal","scanOctalLiteral","parseFloat","advance","getIdentifier","scanStringLiteral","lex","finishBinaryExpression","operator","finishIdentifier","finishLiteral","regex","finishMemberExpression","computed","member","finishProperty","kind","messageFormat","msg","whole","description","throwUnexpected","expect","matchKeyword","keyword","parseObjectPropertyKey","parseObjectProperty","parseConditionalExpression","legalKeywords","parsePrimaryExpression","parseExpression","parseGroupExpression","finishArrayExpression","parseArrayInitialiser","finishObjectExpression","parseObjectInitialiser","classMarker","terminated","literal","scanRegExpBody","scanRegExpFlags","tmp","$0","$1","exception","testRegExp","scanRegExp","parseArguments","parseComputedMember","parsePostfixExpression","isIdentifierName","parseLeftHandSideExpressionAllowCall","parseUnaryExpression","finishUnaryExpression","binaryPrecedence","prec","marker","markers","parseBinaryExpression","finishConditionalExpression","LOG2E","LOG10E","MIN_VALUE","codegen","cast","fncall","DATE","STRING","REGEXP","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","indexof","lastindexof","upper","if","formatCache","dateObj","inrange","_window","scalePrefix","dataPrefix","getScale","addScaleDependency","scaleName","scaleRef","scaleVisitor","phi00","areaRing","dLambda","sdLambda","adLambda","W0","W1","z0","deltaSum","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","inflection","phii","lambdai","rangeCompare","rangeContains","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","geoMethod","methodName","globalMethod","geoArea","geoBounds","deltaMax","geoCentroid","dataVisitor","dataName","getData","tuplesRef","EMPTY","treeNodes","equal","equalArray","removePredicate","props","INTERSECT","UNIT_INDEX","testPoint","dval","getter","isDate","vlSelectionVisitor","indexName","indataRef","BIN","testInterval","ivals","intervals","vlSelection","miss","unitIdx","vlPoint","vlMultiVisitor","vlPointDomain","encoding","units","encodings","acc","continuousDomain","discreteDomain","intersectInterval","unionInterval","functionContext","isBoolean","isRegExp","sequence","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","quarter","utcquarter","inScope","clampRange","pinchDistance","touches","pinchAngle","screen","containerSize","clientWidth","windowSize","bandspace","setdata","pathShape","panLinear","panLog","panPow","toggle","predicate","_trigger","eventFunctions","thisPrefix","astVisitors","expressionFunction","codeGenerator","functions","Gradient","resUnit","codegenParams","blacklist","whitelist","fieldvar","globalvar","constants","visitors","outputGlobal","globals","memberDepth","ast","Generators","Literal","MemberExpression","stripQuotes","CallExpression","ArrayExpression","BinaryExpression","UnaryExpression","ConditionalExpression","LogicalExpression","ObjectExpression","Property","signalPrefix","preamble","signalName","getSignal","signalRef","$expr","$fields","$params","Entry","$ref","refs","tupleidRef","$tupleid","fieldRef","$field","$name","keyFieldRef","compareRef","$compare","$order","aggrField","Scope","View","isSignal","hasSignal","specValue","deref","parseStream","mergeStream","nestedStream","eventStream","streamParameters","addStream","markname","markrole","FIELD_REF_ID","allTypes","discreteTypes","continuousTypes","ordinalTypes","isOrdinal","isDiscretizing","isQuantile","parseScale","parseScaleDomain","parseScaleRange","parseLiteral","parseScaleInterpolate","parseScaleNice","dataLookupError","explicitDomain","multipleDomain","singularDomain","valuesRef","parseSort","domainRef","extentRef","dom","coll","$ingest","addDataPipeline","ordinalMultipleDomain","quantileMultipleDomain","numericMultipleDomain","countsRef","sortRef","multidomain","parseArray","parseParameter","Vertical","Index","Label","Offset","Perc","Perc2","Size","Value","GuideLabelStyle","GuideTitleStyle","GroupTitleStyle","LegendScales","Skip","Swap","expression","splitAccessPath","channel","enc","scaleType","hasBandwidth","mult","rules","parseEncode","$output","MarkRole","AxisDomainRole","AxisGridRole","AxisLabelRole","AxisTickRole","AxisTitleRole","LegendBandRole","LegendEntryRole","LegendGradientRole","LegendLabelRole","LegendSymbolRole","LegendTitleRole","encoder","addEncode","extendEncode","$encode","defaultEncode","applyDefaults","dataRef","extras","isVertical","configVal","gradientLength","gradientWidth","gradientThickness","gradientHeight","entryColumns","symbolDirection","getEncoding","GroupMark","RectMark","RuleMark","SymbolMark","TextMark","userEncode","gradientDirection","thickness","vv","alignExpr","baselineExpr","overlap","labelLimit","gradientLabelLimit","labelOffset","gradientLabelOffset","symbolOffset","valueRef","xSignal","yEncode","symbolBaseFillColor","symbolBaseStrokeColor","facet","parseParameters","proxy","pdef","lookupRef","parseIndexParameter","parseSubParameter","parseSubParameters","projectionRef","parameterValue","isExpr","isField","isCompare","exprRef","outerField","isData","getDataRef","DataScope","aggregate","fromEntries","fieldKey","addSortField","ds","optype","trigger","sieve","joinRef","markRef","encodeRef","layoutRef","boundRef","keyRef","$context","markpath","generates","objectProperty","operators","pushState","subscope","addData","$subflow","toRuntime","popState","tol","parseOverlap","anchorExpr","startValue","endValue","centerValue","multExpr","flushExpr","preprocessed","addProjection","addScale","initScale","upstream","$format","$load","$request","analyze","parseData","isSubscope","addUpdate","streamSource","axes","ticksRef","axisX","axisY","or","axisBand","axisEncode","tickPos","vscale","gridScale","tickSize","isXAxis","flushOffset","flushOn","labelAlign","labelBaseline","u2","titlePos","entryEncode","entryLayout","entryRef","legendEncode","scaleCount","isContinuous","legendType","buildLegendEncode","legendSymbolLayout","getStyle","getFontSize","sizeExpression","opp","buildTitle","parseLambdas","bindings","lambdas","updates","eventConfig","_id","_subid","_nextsub","_encode","_lookup","_markpath","Subscope","propertyLambda","arrayLambda","objectLambda","vref","annotate","stable","check","sig","$key","$flat","addScaleProj","projectionType","dataScope","defaultFont","defaultSymbolSize","defaultStrokeWidth","defaultColor","lightGray","parseView","configs","allow","square","bandPosition","domainWidth","domainColor","gridWidth","gridColor","labelAngle","labelPadding","tickColor","tickOffset","tickRound","tickWidth","titleAlign","gridAlign","columnPadding","rowPadding","gradientStrokeColor","gradientStrokeWidth","labelOverlap","symbolType","symbolSize","symbolStrokeWidth","titleBaseline","titleLimit","category","heatmap","diverging","eventExpression","encodeExpression","PARSERS","parameterExpression","subctx","canonicalType","operatorExpression","parseOperatorParameters","srcid","handlerExpression","ContextFork","subcontext","unresolved","getState","setState","substate","Width","Height","dataTest","signalTest","formatArray","formatTooltip","_renderType","_renderer","_handler","_preventDefault","_timers","_eventListeners","_resizeListeners","runtime","_bind","_eventConfig","prevent","initializeEventConfig","_resize","resetSize","_resizeWidth","_resizeHeight","resizePadding","initializeResize","user","setCursor","lookupSignal","findOperatorHandler","addOperatorListener","removeOperatorListener","_resetRenderer","rerun","addResizeListener","removeResizeListener","addSignalListener","removeSignalListener","addDataListener","removeDataListener","total","elapsed","timestamp","itemGroup","extension","finalize","timers","listeners","hover","hoverSet","leaveSet","elBind","Handler","prevHandler","binding","toImageURL","blob","Blob","URL","createObjectURL","toDataURL","toCanvas","toSVG","lightColor","darkTheme","subtitleColor","markColor$7","excelTheme","gridOpacity","tickExtra","labelFontSize","markColor$6","axisColor$2","backgroundColor$2","blackTitle","fiveThirtyEightTheme","labelColor","titleColor","titleFontSize","bar","binSpacing","markColor$5","ggplot2Theme","titleFontWeight","labelFont$1","markColor$4","titleFont","colorSchemes$1","latimesTheme","labelFont","labelFontWeight","titleAngle","titleX","titleY","markColor$3","axisColor$1","quartzTheme","markColor$2","voxTheme","gridDash","markColor$1","axisColor","colorSchemes","urbanInstituteTheme","markColor","googlechartsTheme","ptToPx","fontSmallPx","legendFontPx","fontLargePx","fontStandard","fontTitle","firstLevelElementColor","secondLevelElementColor","backgroundColor","paletteColor1","divergentColorMin","divergentPalette","powerbiTheme","axisQuantitative","labelFlush","version","EL_ID","DEFAULT_OPTIONS","offsetX","offsetY","styleId","disableDefaultStyle","escapeHTML","elementId","tooltip_handler","getElementById","createDefaultStyle","valueToHtml","content","_a","rest","getOwnPropertySymbols","propertyIsEnumerable","_i","keys_1","tooltipBox","calculatePosition","mergeDeep","src_1","deepMerge_","vl","NAMES","VERSION","PREPROCESSOR","vgjson","vljson","compile","SVG_CIRCLES","viewSource","sourceHeader","sourceFooter","footer","win","open","write","thisArg","_arguments","actions","ID","vgSpec","wrapper","ctrl","_loop_1","editorUrl_1","sent","trys","verb","iterator","_b","export","png","compiled","Warn","defaultStyle","innerText","getElementsByTagName","providedMode","$schema","library","console","satisfies","guessMode","onBeforeParse","_this","editorUrl","listen","postMessage","post","fulfilled","rejected","adopt","SemVer","env","NODE_DEBUG","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","loose","includePrerelease","er","major","minor","patch","prerelease","build","valid","compareMain","comparePre","compareIdentifiers","inc","release","identifier","diff","version1","version2","eq","defaultResult","numeric","anum","bnum","gt","lt","neq","gte","lte","Comparator","comp","semver","ANY","rcompareIdentifiers","compareLoose","rcompare","rsort","Range","parseRange","hyphenReplace","fM","fp","fpr","tM","tm","tpr","tb","testSet","allowed","outside","hilo","gtfn","ltefn","ltfn","ecomp","comparators","high","low","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","hr","compRe","pr","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","thisComparator","rangeComparators","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","ltr","gtr","coerce","LBRACK","RBRACK","LBRACE","RBRACE","COLON","COMMA","NAME","GT","DEFAULT_MARKS","DEFAULT_SOURCE","MARKS","eventSelector","parseMerge","parseSelector","endChar","pushChar","popChar","parseBetween","parseThrottle","vega_util_1","util_1","AGGREGATE_OP_INDEX","average","missing","stderr","stdevp","variancep","AGGREGATE_OPS","flagKeys","isAggregateOp","COUNTING_OPS","isCountingAggregateOp","SUM_OPS","SHARED_DOMAIN_OPS","SHARED_DOMAIN_OP_INDEX","tslib_1","AXIS_PARTS","AXIS_PROPERTY_TYPE","COMMON_AXIS_PROPERTIES_INDEX","labelBound","AXIS_PROPERTIES_INDEX","titleMaxLength","VG_AXIS_PROPERTIES_INDEX","isAxisProperty","VG_AXIS_PROPERTIES","AXIS_PROPERTIES","channel_1","binToString","varName","isBinParams","autoMaxBins","ROW","COLUMN","SIZE","COLOR","FILL","STROKE","OPACITY","SHAPE","Channel","LATITUDE","LONGITUDE","LATITUDE2","LONGITUDE2","TEXT","ORDER","DETAIL","KEY","TOOLTIP","HREF","GEOPOSITION_CHANNEL_INDEX","longitude2","latitude","latitude2","GEOPOSITION_CHANNELS","UNIT_CHANNEL_INDEX","isColorChannel","CHANNEL_INDEX","CHANNELS","SINGLE_DEF_CHANNEL_INDEX","__rest","SINGLE_DEF_CHANNELS","isChannel","UNIT_CHANNELS","NONPOSITION_CHANNEL_INDEX","NONPOSITION_CHANNELS","POSITION_SCALE_CHANNEL_INDEX","POSITION_SCALE_CHANNELS","NONPOSITION_SCALE_CHANNEL_INDEX","NONPOSITION_SCALE_CHANNELS","SCALE_CHANNEL_INDEX","getSupportedMark","geoshape","SCALE_CHANNELS","isScaleChannel","supportMark","rangeType","axis_1","fielddef_1","assembleAxis","axisCmpt","combine","propType","mainExtracted","AXIS_PARTS_1","hasAxisPart","titleString","fieldDef","assembleTitle","assembleAxes","axisComponents","AxisComponent","_super","explicit","__extends","duplicate","Split","getAxisConfig","configTypes_1","configType","scale_1","type_1","common_1","config_1","NOMINAL","ORDINAL","model","specifiedLabelsSpec","labelsSpec","isTimeFieldDef","isUTCScale","getScaleComponent","ScaleType","timeFormatExpression","timeUnit","shortTimeLabels","resolve_1","split_1","component_1","__importStar","parseUnitAxis","component","parseAxis","OPPOSITE_ORIENT","mergeAxisComponents","mergedAxisCmpts","childAxisCmpts","axisComponent","length_1","mergedOrient","getWithExplicit","childOrient","mergeAxisComponent","mergedValueWithExplicit","mergeValuesWithExplicit","mergeTitleComponent","defaultTieBreaker","setWithExplicit","VG_AXIS_PROPERTIES_1","getFieldDefTitle","channel2","fieldDef2","title1","title2","mergeTitle","specifiedAxis","numberFormat","getSpecifiedOrDefaultValue","sizeType","getSizeSignalRef","fieldDefTitle","specifiedTitle","mergeTitleFieldDefs","toFieldDefBase","getProperty","configValue","axisEncoding","axisEncodingPart","guideEncodeEntry","parseLayerAxis","axisCount","parseAxisAndHeader","_c","_d","parseGuideResolve","_e","_f","_g","_h","_j","_l","oppositeOrient","bin_1","hasDiscreteDomain","gridChannel","INVALID_CHANNEL_FOR_AXIS","fieldTitle","valueArray","QUANTITATIVE","scaleDomain","isSelectionDomain","getName","parse_1","assemble_1","BaseConcatModel","parentGivenName","repeater","parseSelection","parseMarkGroup","assembleSelectionTopLevelSignals","sg","assembleSelectionSignals","assembleLayoutSignals","assembleSelectionData","db","assembleMarks","assembleGroupStyle","layoutSizeEncodeEntry","assembleLayoutSize","assembleGroup","Model","spec_1","concat_1","facet_1","layer_1","repeat_1","unit_1","buildModel","unitSize","isFacetSpec","FacetModel","isLayerSpec","LayerModel","isUnitSpec","UnitModel","isRepeatSpec","RepeatModel","isConcatSpec","ConcatModel","INVALID_SPEC","timeunit_1","mixins_1","getStyles","getMarkConfig","markSpecificConfig","styles_1","styleConfig","specifiedFormat","formatExpr","numberFormatExpr","binFormatExpression","startField","endField","timeFormatConfig","alwaysReturn","formatExpression","f1","f2","fdToMerge","merged_1","fieldDef1","applyConfig","propsList","propsList_1","applyMarkConfig","propsList_2","markDef","formatSignalRef","vgField","binSuffix","isScaleFieldDef","specifiedValue","sortParams","orderDef","fieldRefOption","orderChannelDef","binRequiresRange","valueDef","wrapCondition","vlFieldDef","toplevelprops_1","buildmodel_1","optimize_1","inputSpec","setTitleFormatter","initConfig","normalizeAutoSize","optimizeDataflow","topLevelProperties","vgConfig","stripAndRedirectConfig","assembleRootData","datasets","assembleProjections","layoutSignals","assembleTopLevelModel","topLevelSpec","extractTopLevelProperties","getTopLevelProperties","resetTitleFormatter","baseconcat_1","CONCAT_CANNOT_SHARE_AXIS","isVConcat","isVConcatSpec","vconcat","hconcat","parseLayoutSize","parseConcatLayoutSize","parseAxisGroup","assembleDefaultLayout","AggregateNode","dimensions","makeFromEncoding","isAggregate","forEachFieldDef","fd","meas","addDimension","makeFromTransform","differ","parentMeasures","childMeasures","mergeMeasures","addDimensions","dependentFields","producedFields","assemble","DataFlowNode","data_1","aggregate_1","calculate_1","dataflow_1","filter_1","filterinvalid_1","formatparse_1","geojson_1","geopoint_1","identifier_1","lookup_1","source_1","stack_1","window_1","makeWalkTree","datasetIndex","walkTree","dataSource","SourceNode","isUrlData","ParseNode","assembleFormatParse","assembleTransforms","FacetNode","FilterNode","CalculateNode","GeoPointNode","GeoJSONNode","LookupNode","WindowTransformNode","IdentifierNode","FilterInvalidNode","BinNode","TimeUnitNode","StackNode","OutputNode","setSource","numChildren","source_2","assembleFacetData","dataComponent","roots","sourceIndex","hasName","newData","whereTo","data_2","outputNodes","getSource","data_3","model_1","createBinComponent","isBinTransform","normalizeBin","binKey","extentSignal","getSignalsFromModel","binComponent","reduceFieldDef","binComponentIndex","guide","isUnitModel","formulaAs","formula","rangeFormula","binTrans","predicate_1","sort_1","parseAllForSortIndex","isSortArray","field_1","timeUnit_1","calculate","sortValue","fieldFilterExpression","sortArrayIndexField","debugName","_children","addChild","enumerable","configurable","oldChild","insertAsParentOf","swapWithParent","newParent","refCounts","_source","_name","cloneObj","isRequired","vega_schema_1","domain_1","isSortField","sortField","sortIndexField","childModel","getChildIndependentFieldsWithStep","childIndependentFieldsWithStep","childScaleComponent","isVgRangeStep","assembleDomain","getFieldFromDomain","assembleRowColumnData","crossedDataName","childChannel","mark_1","fieldDefs","make","invalidValues","aggregator","scaleComponent","hasContinuousDomain","isPathMark","vegaFilters","datetime_1","logical_1","_parse","makeExplicit","ancestorParse","makeWithAncestors","makeImplicitFromFilterTransform","forEachLeaf","isFieldPredicate","isFieldEqualPredicate","isFieldRangePredicate","isFieldOneOfPredicate","oneOf","isDateTime","makeImplicitFromEncoding","isFacetModel","isNumberFieldDef","accessPathDepth","parsedAs","differentParse","copyAll","parseNothing","formatParse","onlyNested","accessPathWithDatum","unrecognizedParse","removePathFromField","parseAll","geoJsonCounter","pair","channelHasField","GEOJSON","projectionName","selection_1","SELECTION_ID","AncestorParse","secondary","fromSource","fromOutputName","fromOutputNode","outputNodeRefCounts","foreign","asName","NO_FIELDS_NEEDS_AS","optimizers","moveFacetDown","moveMainDownToFacet","main","copy_1","newName","FACET_SCALE_PREFIX","MAIN","removeUnnecessaryNodes","getLeaves","iterateFromLeaves","removeUnusedSubtrees","moveParseUp","removeDuplicateTimeUnits","optimizeNextFromLeaves","hasIntersection","pfields","transform_1","index_1","parseTransformArray","lookupCounter","isCalculate","isFilter","isBin","isTimeUnit","requiresSelectionId","isLookup","isWindow","window_2","isStack","invalidTransformIgnored","facetRoot","parseRoot","isLayerModel","parentIsLayer","rawName","RAW","mainName","facetName","makeFromFacet","isInlineData","_data","defaultExtension","isNamedData","_hash","_stack","stackTransform","sortFields","sortOrder","normalizedAs","isValidAsArray","stackField","facetby","dimensionFieldDef","stackProperties","groupbyChannel","stackby","stackBy","_field","getStackByFields","isFieldDef","fieldChannel","getGroupbyFields","dimensionField","timeUnitComponent","fieldExpr","facetSortFieldName","windowFieldDef","getDefaultName","encoding_1","assemble_2","parse_2","repeater_1","replaceRepeaterInFacet","initFacet","normalizedFacet","emptyFieldDef","incompatibleChannel","parseChildrenLayoutSize","parseHeader","mergeChildAxis","facetFieldDef","makeHeaderComponent","sizeSignal","layoutSize","headerChannel","layoutHeader","headerType","getHeaderType","mainAxis","getHeaderLayoutMixins","layoutMixins","layoutHeaderComponent","headerComponent","bandType","columnDistinctSignal","getCardinalityAggregateForChild","assembleFacet","outputName","headerSortFields","headerSortOrder","getMapping","ModelWithField","header_1","getSort","getHeaderGroup","headerCmpt","getHeaderProperties","HEADER_LABEL_PROPERTIES","HEADER_LABEL_PROPERTIES_MAP","hasAxes","sizeChannel","propertiesMap","properties_1","HEADER_CHANNELS","HEADER_TYPES","getTitleGroup","textOrient","HEADER_TITLE_PROPERTIES","HEADER_TITLE_PROPERTIES_MAP","getHeaderGroups","HEADER_TYPES_1","parse_3","parentGivenSize","initSize","layer","parseLayerLayoutSize","assembleLayout","assembleLayerSelectionMarks","assembleLegends","sizeSignals","stepSignal","sizeExpr","cardinality","layoutSizeCmpt","parseNonUnitLayoutSizeForChannel","mergedSize","childSize","scaleResolve","renameLayoutSize","defaultUnitSize","hasProjection","textXRangeStep","defaultScaleConfig","parseRepeatLayoutSize","sizeTypeToMerge","parseUnitLayoutSize","layoutSizeComponent","legendComponentIndex","legendByDomain","domainHash","domains","mergedLegendComponent","mergeLegendComponent","legendCmpt","LegendComponent","mixins","getMaxValue","channelDef","getConditionValue","conditionalDef","getFirstConditionValue","reducer","hasConditionalValueDef","isValueDef","symbolsSpec","FILL_STROKE_CONFIG","BAR","TICK","CIRCLE","SQUARE","POINT","LINE","GEOSHAPE","AREA","gradientSpec","legend_1","parseLegendForChannel","getLegendDefWithScale","LEGEND_PROPERTIES","specifiedLegend","legendEncoding","legendEncodingPart","mergedLegend","childLegend","typeMerged","_loop_2","makeImplicit","VG_LEGEND_PROPERTIES_1","VG_LEGEND_PROPERTIES","deleteNestedProperty","parseLegend","legendComponent","parseUnitLegend","parseNonUnitLegend","isBinScale","vgMark","encodeEntry","baseEncodeEntry","pointPosition","pointPosition2","defaultSizeRef","discreteBandSize","BAND","bandRef","continuousBandSize","scaleRange","BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL","sizeDef","xDef","x2Def","xScaleName","xScale","xScaleType","binnedPosition","centeredBandPosition","yDef","y2Def","yScaleName","yScale","yScaleType","postEncodingTransform","shapeDef","normalizeMarkDef","isMarkDef","specifiedOrient","RECT","yIsRange","xIsRange","RULE","xIsContinuous","yIsContinuous","xIsTemporal","TEMPORAL","yIsTemporal","orientOverridden","filledConfig","nonPosition","vgChannel","area_1","bar_1","geoshape_1","line_1","point_1","rect_1","rule_1","text_1","tick_1","markCompiler","TRAIL","details","pathGroupingFields","pathMarks","getMarkGroups","fromPrefix","FACETED_PATH_PREFIX","requestDataName","parsePathMark","dimensionChannelDef","scaleClip","getFieldDef","valueOnly","markType","transparentIfNeeded","colorVgChannel","fillStrokeMarkDefAndConfig","droppingColor","validPredicate","vgRef","defaultRef","cDef","midPoint","refFn","vgConditions","conditionValueRef","isConditionalSelection","selectionPredicate","textCommon","getOffset","getDefaultRef","VG_MARK_CONFIGS","markDefProperties","valueIfDefined","centeredBandPositionMixins","cannotApplySizeToNonOrientedMark","defaultPosRef","centerChannel","spacing","baseChannel","position2","fixedShape","shapeMixins","scaleTypeNotWorkWithMark","defaultSize","bandSize","vgSizeChannel","vgThicknessChannel","binMidSignal","aFieldDef","a2fieldDef","markDefOffsetValue","side","textDef","sizeRef","LOG","TIME","nonZeroScaleUsedWithLengthMark","domainDefinitelyIncludeZero","zeroFalse","title_1","assemble_3","assemble_4","assemble_5","NameMap","nameMap","rename","oldName","isRepeatModel","isConcatModel","correctDataNames","lookupDataSource","scaleNameMap","projectionNameMap","layoutSizeNameMap","normalizeTransform","extractCompositionLayout","isFaceted","renameTopLevelLayoutSize","parseProjection","assembleHeaderMarks","headerMarks","HEADER_CHANNELS_1","HEADER_CHANNELS_2","extractTitleConfig","nonMark","cannotSetTitleAnchor","assembleScales","hasDescendantWithFieldOnChannel","fullName","getSizeName","oldSizeName","renameScale","renameProjection","originalScaleName","localScaleComponent","getSelectionComponent","variableName","origName","sel","selectionNotFound","assembleProjectionsForModelAndChildren","assembleProjectionForModel","isVgSignalRef","ProjectionComponent","specifiedProjection","projection_1","posssiblePair","parseUnitProjection","nonUnitProjection","mergable","allPropertiesShared","PROJECTION_PROPERTIES","mergeIfNoConflict","name_1","modelProjection_1","parseNonUnitProjections","repeatValues","REPEAT_CANNOT_SHARE_AXIS","repeat","_initChildren","row_1","rowField","column_1","columnField","childRepeat","replaceRepeat","isRepeatRef","noSuchRepeatedValue","replaceRepeaterInFieldDef","replaceRepeaterInChannelDef","isConditionalDef","hasConditionalFieldDef","replaceRepeater","mapping","replaceRepeaterInEncoding","defaultScaleResolve","channelScaleResolve","independentScaleMeansIndependentGuide","assembleScalesForModel","otherScaleProps","assembleScaleRange","isRawSelectionDomain","selectionScaleDomain","ScaleComponent","typeWithExplicit","util","parseDomainForChannel","scaleConfig","canUseUnaggregatedDomain","reason","useUnaggregatedDomain","normalizeUnaggregatedDomain","specifiedScales","parseSingleChannelDomain","valueExpr","mapDomainToDataSignal","domainSort","replacePathInField","unaggregatedDomainWithLogScale","unaggregateDomainWithNonSharedDomainOp","unaggregateDomainHasNoEffectForRawField","mergeDomains","uniqueDomains","unique","isDataRefDomain","sorts","sort_2","MORE_THAN_ONE_SORT","simpleSorts","domainSortDropped","allData","localScaleComponents","specifiedScale","specifiedDomain","localScaleCmpt","SELECTION_DOMAIN","facetParent","domains_1","parseUnitScaleDomain","childComponent","parseNonUnitScaleDomain","isDataRefUnionedDomain","nonUnionDomain","isFieldRefUnionDomain","range_1","type_2","parseScaleCore","scaleComponents","specifiedScaleType","sType","parseUnitScaleCore","scaleTypeWithExplicitIndex","explicitScaleType","childScaleType","scaleCompatible","scaleTypeTieBreaker","childScale","parseNonUnitScaleCore","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES_1","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES","parseScaleProperty","tieBreakByComparing","st1","st2","scaleTypePrecedence","mergedScaleCmpt","supportedByScaleType","scaleTypeSupportProperty","channelIncompatability","channelScalePropertyIncompatability","scalePropertyNotWorkWithScaleType","copyKeyFromObject","getDefaultValue","parseUnitScaleProperty","parseNonUnitScaleProperty","scalePadding","scalePaddingInner","valueWithExplicit","childValueWithExplicit","barConfig","isContinuousToContinuous","continuousPadding","pointPadding","paddingValue","bandPaddingInner","paddingInnerValue","bandPaddingOuter","scale_2","parseRangeForChannel","sizeSpecified","xyRangeSteps","noRangeStep","RANGE_PROPERTIES_1","RANGE_PROPERTIES","parseScheme","rangeStepDropped","defaultRange","isExtendedScheme","rangeMin","minBandSize","minStrokeWidth","minFontSize","minSize","sizeRangeMin","rangeMax","maxBandSize","minXYRangeStep","maxStrokeWidth","maxFontSize","maxSize","pointStep","sizeRangeMax","minOpacity","maxOpacity","CANNOT_FIX_RANGE_STEP_WITH_FIT","xRange","yRange","getXYRangeStep","rangeWithExplicit","parseUnitScaleRange","specifiedType","defaultScaleType","discreteChannelCannotEncode","invalidFieldType","defaultType","channelSupportScaleType","scaleTypeSupportDataType","scaleTypeNotWorkWithFieldDef","scaleTypeNotWorkWithChannel","log_1","scales_1","__importDefault","BRUSH","SCALE_TRIGGER","selCmpt","hasScales","tupleTriggers","scaleTriggers","filterExpr_1","cs","vname","channelSignalName","scaleStr","coord","channelSignals","toNum","TUPLE","unitName","modifyExpr","positionalProjections","STORE","vgStroke","nearest_1","multi","vega_event_selector_1","interval_1","multi_1","single_1","transforms_1","assembleUnitSelectionMarks","forEachSelection","selCompiler","forEachTransform","txCompiler","name_3","compiler","getFacetModel","MODIFY","parseUnitSelection","selDefs","selCmpts","selectionConfig","selDef","cfg","assembleUnitSelectionSignals","facetModel","name_2","assembleTopLevelSignals","needsUnit","topLevelSignals","assembleUnitSelectionData","dfnode","stores","predicateStr","logicalExpr","tunode","selDomain","sgNames","_signalNames","basename","single","inputBindings","sgname","VORONOI","nearest","nearestNotSupportForContinuous","cellDef","isVoronoi","exists","timeUnits","tuField","cannotProjectOnChannelWithoutField","scaleBindings","SCALE_BINDINGS_CONTINUOUS","TOGGLE","tpl","inputs_1","project_1","toggle_1","translate_1","zoom_1","compilers","zoom","ANCHOR","DELTA","onDelta","sizeSg","scaleCmpt","copyKeyFromSplit","propertyOf","mergeConflictingProperty","tieBreaker","vlEncoding","init_1","mark_2","specifiedAxes","specifiedLegends","normalizeEncoding","initScales","initAxes","initLegend","isGeoShapeMark","hasGeoPosition","_axis","axisSpec","_legend","toSpec","excludeConfig","excludeData","encoding_2","isBoxPlotDef","BOXPLOT","BOXPLOT_STYLES","VL_ONLY_BOXPLOT_CONFIG_PROPERTY_INDEX","boxWhisker","boxMid","supportedChannels","filterUnsupportedChannels","newEncoding","normalizeBoxPlot","outerSpec","kIQRScalar","boxOrient","continuousAxisChannelDef","continuousAxis","continuousAxisWithoutAggregate","boxContinousAxis","isMinMax","postAggregateCalculates","encodingWithoutContinuousAxis","transformedField","boxParams","encodingWithoutSizeColorAndContinuousAxis","sizeMixins","getMarkSpecificConfigMixins","continuousAxisScaleAndAxis","ERRORBAR","normalizeErrorBar","encodingWithoutSize","encodingWithoutX2Y2","encodingWithoutX_X2_Y_Y2","boxplot_1","errorbar_1","boxplot","normalizerRegistry","normalizer","COMPOSITE_MARK_STYLES","VL_ONLY_COMPOSITE_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","compositemark_1","guide_1","defaultViewConfig","defaultConfig","countTitle","defaultMarkConfig","defaultBarConfig","defaultTickConfig","axisLeft","axisRight","axisTop","axisBottom","defaultLegendConfig","MARK_STYLES","PRIMITIVE_MARKS","VL_ONLY_CONFIG_PROPERTIES","VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","redirectConfig","toProp","propConfig","VL_ONLY_CONFIG_PROPERTIES_1","VL_ONLY_GUIDE_CONFIG_1","VL_ONLY_GUIDE_CONFIG","VL_ONLY_GUIDE_CONFIG_2","VL_ONLY_MARK_CONFIG_PROPERTIES_1","VL_ONLY_MARK_CONFIG_PROPERTIES","MARK_STYLES_1","VL_ONLY_MARK_CONFIG_PROPERTIES_2","vlOnlyMarkSpecificConfigs","vlOnlyMarkSpecificConfigs_1","MONTHS","SHORT_MONTHS","DAYS","SHORT_DAYS","dateTimeExpr","droppedDay","lowerM","monthIndex","shortM","shortMonthIndex","invalidTimeUnit","normalizeMonth","normalizeQuarter","lowerD","dayIndex","shortD","shortDayIndex","normalizeDay","normalizedEncoding","invalidEncodingChannel","LINE_WITH_VARYING_SIZE","normalizeFieldDef","Type","newChannel","latLongDeprecated","isRanged","arr","isDiscrete","isCount","verbalTitleFormatter","getTimeUnitParts","titlecase","functionalTitleFormatter","isStringFieldDef","nofn","isOpFieldDef","flatAccessWithDatum","defaultTitleFormatter","titleFormatter","fieldDefWithoutAggregate","invalidAggregate","normalizeTimeUnit","fullType","getFullName","invalidFieldTypeForCountAggregate","newType","emptyOrInvalidFieldType","channelCompatibility","compatible","warning","primitiveType","primitiveChannelDef","COMPATIBLE","facetChannelShouldBeDiscrete","undefinedIfExprNotRequired","isLocalSingleTimeUnit","isUtcSingleTimeUnit","getLocalTimeUnit","titleAnchor","compositeMark","compile_1","validate","COMMON_LEGEND_PROPERTY_INDEX","entryPadding","VG_LEGEND_PROPERTY_INDEX","LocalLogger","warns","infos","debugs","newLogger","FIT_NON_SINGLE","encodingOverridden","projectionOverridden","parentProjection","markOrFacet","when","lineWithRange","hasX2","hasY2","original","actual","CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN","cannotUseScalePropertyWithNonColor","propName","UNABLE_TO_MERGE_DOMAINS","cannotStackRangedMark","cannotStackNonLinearScale","stackNonSummativeAggregate","dayReplacedWithDate","fullTimeUnit","isLogicalOr","isLogicalAnd","and","isLogicalNot","not","normalizeLogicalOperand","MARK_INDEX","isMark","PRIMITIVE_MARK_INDEX","isPrimitiveMark","STROKE_CONFIG","FILL_CONFIG","isSelectionPredicate","isFieldLTPredicate","isFieldLTEPredicate","isFieldGTPredicate","isFieldGTEPredicate","in","predicateValueExpr","useInRange","predicateValuesExpr","exprs","filterOp","normalizePredicate","LINEAR","BIN_LINEAR","POW","SQRT","SEQUENTIAL","QUANTILE","QUANTIZE","THRESHOLD","BIN_ORDINAL","SCALE_CATEGORY_INDEX","SCALE_TYPES","scaleType1","scaleType2","scaleCategory1","scaleCategory2","SCALE_PRECEDENCE_INDEX","CONTINUOUS_TO_CONTINUOUS_SCALES","CONTINUOUS_TO_CONTINUOUS_INDEX","CONTINUOUS_DOMAIN_SCALES","CONTINUOUS_DOMAIN_INDEX","DISCRETE_DOMAIN_SCALES","DISCRETE_DOMAIN_INDEX","BIN_SCALES_INDEX","TIME_SCALE_TYPES","facetSpacing","SCALE_PROPERTY_INDEX","SCALE_PROPERTIES","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX","fieldDefType","generateScaleTypeIndexKey","SCALE_TYPE_INDEX","CHANNELS_1","TYPE_INDEX","SCALE_TYPES_1","generateScaleTypeIndex","getSupportedScaleType","isHConcatSpec","mergeEncoding","parentEncoding","overriden","mergeProjection","normalizeLayer","mergedEncoding","mergedProjection","subspec","normalizeNonFacetUnit","isNonFacetUnitSpecWithPrimitiveMark","hasX","hasY","normalizedSpec","normalizeRangedUnit","pointOverlay","markConfig","getPointOverlay","lineOverlay","getLineOverlay","dropLineAndPoint","omit","stackProps","overlayEncoding","stackFieldChannel","normalizePathOverlay","dict","pureFieldDef","fieldDefIndex","normalizeFacet","normalizeRepeat","normalizeVConcat","normalizeHConcat","hasRow","hasColumn","normalizeFacetedUnit","isStacked","STACK_OFFSET_INDEX","isStackOffset","STACKABLE_MARKS","STACK_BY_DEFAULT_MARKS","stackConfig","potentialStackedChannel","stackedFieldDef","stackedField","dimensionChannel","dimensionDef","TimeUnit","YEAR","MONTH","DAY","HOURS","MINUTES","SECONDS","MILLISECONDS","YEARMONTH","YEARMONTHDATE","YEARMONTHDATEHOURS","YEARMONTHDATEHOURSMINUTES","YEARMONTHDATEHOURSMINUTESSECONDS","MONTHDATE","HOURSMINUTES","HOURSMINUTESSECONDS","MINUTESSECONDS","SECONDSMILLISECONDS","QUARTER","YEARQUARTER","QUARTERMONTH","YEARQUARTERMONTH","UTCYEAR","UTCMONTH","UTCDAY","UTCDATE","UTCHOURS","UTCMINUTES","UTCSECONDS","UTCMILLISECONDS","UTCYEARMONTH","UTCYEARMONTHDATE","UTCYEARMONTHDATEHOURS","UTCYEARMONTHDATEHOURSMINUTES","UTCYEARMONTHDATEHOURSMINUTESSECONDS","UTCMONTHDATE","UTCHOURSMINUTES","UTCHOURSMINUTESSECONDS","UTCMINUTESSECONDS","UTCSECONDSMILLISECONDS","UTCQUARTER","UTCYEARQUARTER","UTCQUARTERMONTH","UTCYEARQUARTERMONTH","LOCAL_SINGLE_TIMEUNIT_INDEX","TIMEUNIT_PARTS","UTC_SINGLE_TIMEUNIT_INDEX","UTC_MULTI_TIMEUNIT_INDEX","utcyearquarter","utcyearquartermonth","utcyearmonth","utcyearmonthdate","utcyearmonthdatehours","utcyearmonthdatehoursminutes","utcyearmonthdatehoursminutesseconds","utcquartermonth","utcmonthdate","utchoursminutes","utchoursminutesseconds","utcminutesseconds","utcsecondsmilliseconds","UTC_TIMEUNIT_INDEX","isUTCTimeUnit","TIMEUNIT_INDEX","yearquarter","yearquartermonth","yearmonth","yearmonthdate","yearmonthdatehours","yearmonthdatehoursminutes","yearmonthdatehoursminutesseconds","quartermonth","monthdate","hoursminutes","hoursminutesseconds","minutesseconds","secondsmilliseconds","TIMEUNITS","SET_DATE_METHOD","dateMethods","singleUnit","isUtc","rawSetDateMethod","setDateMethod","getDateMethod","containsTimeUnit","isUTC","TIMEUNIT_PARTS_1","timeUnitPart","getDateMethod_1","dateExpr","tu","dateComponents","hasYear","timeComponents","dateTimeComponents","titleConfig","titleMarkConfig","_normalizeAutoSize","topLevelAutosize","configAutosize","isUnitOrLayer","TOP_LEVEL_PROPERTIES","quantitative","temporal","nominal","isType","json_stable_stringify_1","without","excludedItems","props_1","props_2","results","values_1","isNumeric","differArray","_vals","alphanumericS","orderedProps","pieces","DEFAULT_REQUIRED_CHANNEL_MAP","DEFAULT_SUPPORTED_CHANNEL_TYPE","getEncodingMappingError","requiredChannelMap","supportedChannelMap","requiredChannels","isSignalRefDomain","extendStatics","setPrototypeOf","__proto__","__","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__awaiter","__generator","__createBinding","k2","__exportStar","__values","__read","ar","__spread","__spreadArrays","il","jl","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__esModule","__classPrivateFieldGet","receiver","privateMap","__classPrivateFieldSet","get1","getN","log$1","Error$1","isLegalKey","mergeConfig","mergeNamed","writeConfig","symlog","log1p","symexp","expm1","pan","lift","ground","dd","panSymlog","zoomSymlog","DESCENDING","ord","fmap","ascending","compare1","compareN","tid","hop","NULL","has$1","members","isIterable","DEFAULT_MAX_SIZE","lruCache","maxsize","array0","array1","reps","padchar","defaultParser"],"sourceRoot":""}