@veritone-ce/design-system 2.9.0-next.2 → 2.9.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bundled_modules/d3-array/src/ascending.js +9 -0
- package/dist/cjs/bundled_modules/d3-array/src/bisect.js +16 -0
- package/dist/cjs/bundled_modules/d3-array/src/bisector.js +62 -0
- package/dist/cjs/bundled_modules/d3-array/src/descending.js +13 -0
- package/dist/cjs/bundled_modules/d3-array/src/deviation.js +12 -0
- package/dist/cjs/bundled_modules/d3-array/src/fsum.js +45 -0
- package/dist/cjs/bundled_modules/d3-array/src/intersection.js +25 -0
- package/dist/cjs/bundled_modules/d3-array/src/max.js +26 -0
- package/dist/cjs/bundled_modules/d3-array/src/mean.js +25 -0
- package/dist/cjs/bundled_modules/d3-array/src/median.js +11 -0
- package/dist/cjs/bundled_modules/d3-array/src/merge.js +15 -0
- package/dist/cjs/bundled_modules/d3-array/src/min.js +26 -0
- package/dist/cjs/bundled_modules/d3-array/src/number.js +27 -0
- package/dist/cjs/bundled_modules/d3-array/src/permute.js +9 -0
- package/dist/cjs/bundled_modules/d3-array/src/quantile.js +36 -0
- package/dist/cjs/bundled_modules/d3-array/src/quickselect.js +59 -0
- package/dist/cjs/bundled_modules/d3-array/src/range.js +19 -0
- package/dist/cjs/bundled_modules/d3-array/src/sort.js +20 -0
- package/dist/cjs/bundled_modules/d3-array/src/sum.js +17 -0
- package/dist/cjs/bundled_modules/d3-array/src/ticks.js +63 -0
- package/dist/cjs/bundled_modules/d3-array/src/union.js +17 -0
- package/dist/cjs/bundled_modules/d3-array/src/variance.js +31 -0
- package/dist/cjs/bundled_modules/d3-color/src/color.js +410 -0
- package/dist/cjs/bundled_modules/d3-color/src/cubehelix.js +68 -0
- package/dist/cjs/bundled_modules/d3-color/src/define.js +17 -0
- package/dist/cjs/bundled_modules/d3-color/src/lab.js +124 -0
- package/dist/cjs/bundled_modules/d3-color/src/math.js +7 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/delaunay.js +254 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/path.js +43 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/polygon.js +23 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/voronoi.js +338 -0
- package/dist/cjs/bundled_modules/d3-dispatch/src/dispatch.js +88 -0
- package/dist/cjs/bundled_modules/d3-dsv/src/dsv.js +170 -0
- package/dist/cjs/bundled_modules/d3-force/src/center.js +46 -0
- package/dist/cjs/bundled_modules/d3-force/src/collide.js +106 -0
- package/dist/cjs/bundled_modules/d3-force/src/constant.js +11 -0
- package/dist/cjs/bundled_modules/d3-force/src/jiggle.js +9 -0
- package/dist/cjs/bundled_modules/d3-force/src/lcg.js +15 -0
- package/dist/cjs/bundled_modules/d3-force/src/link.js +123 -0
- package/dist/cjs/bundled_modules/d3-force/src/manyBody.js +122 -0
- package/dist/cjs/bundled_modules/d3-force/src/simulation.js +164 -0
- package/dist/cjs/bundled_modules/d3-force/src/x.js +47 -0
- package/dist/cjs/bundled_modules/d3-force/src/y.js +47 -0
- package/dist/cjs/bundled_modules/d3-format/src/defaultLocale.js +24 -0
- package/dist/cjs/bundled_modules/d3-format/src/exponent.js +11 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatDecimal.js +27 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatGroup.js +24 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatNumerals.js +13 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatPrefixAuto.js +22 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatRounded.js +17 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatSpecifier.js +54 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatTrim.js +17 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatTypes.js +25 -0
- package/dist/cjs/bundled_modules/d3-format/src/identity.js +9 -0
- package/dist/cjs/bundled_modules/d3-format/src/locale.js +154 -0
- package/dist/cjs/bundled_modules/d3-format/src/precisionFixed.js +11 -0
- package/dist/cjs/bundled_modules/d3-format/src/precisionPrefix.js +11 -0
- package/dist/cjs/bundled_modules/d3-format/src/precisionRound.js +12 -0
- package/dist/cjs/bundled_modules/d3-geo/src/area.js +83 -0
- package/dist/cjs/bundled_modules/d3-geo/src/bounds.js +185 -0
- package/dist/cjs/bundled_modules/d3-geo/src/cartesian.js +43 -0
- package/dist/cjs/bundled_modules/d3-geo/src/centroid.js +149 -0
- package/dist/cjs/bundled_modules/d3-geo/src/circle.js +35 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/antimeridian.js +98 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/buffer.js +30 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/circle.js +183 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/index.js +137 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/line.js +65 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/rectangle.js +174 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/rejoin.js +109 -0
- package/dist/cjs/bundled_modules/d3-geo/src/compose.js +18 -0
- package/dist/cjs/bundled_modules/d3-geo/src/graticule.js +107 -0
- package/dist/cjs/bundled_modules/d3-geo/src/identity.js +7 -0
- package/dist/cjs/bundled_modules/d3-geo/src/math.js +57 -0
- package/dist/cjs/bundled_modules/d3-geo/src/noop.js +7 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/area.js +54 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/bounds.js +32 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/centroid.js +104 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/context.js +51 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/index.js +82 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/measure.js +49 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/string.js +92 -0
- package/dist/cjs/bundled_modules/d3-geo/src/pointEqual.js +11 -0
- package/dist/cjs/bundled_modules/d3-geo/src/polygonContains.js +80 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/albers.js +16 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/albersUsa.js +117 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/azimuthal.js +32 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/azimuthalEqualArea.js +24 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/azimuthalEquidistant.js +24 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conic.js +19 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conicConformal.js +45 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conicEqualArea.js +40 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conicEquidistant.js +39 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/cylindricalEqualArea.js +19 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/equalEarth.js +43 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/equirectangular.js +19 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/fit.js +54 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/gnomonic.js +23 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/identity.js +91 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/index.js +184 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/mercator.js +60 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/naturalEarth1.js +35 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/orthographic.js +22 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/resample.js +108 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/stereographic.js +25 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/transverseMercator.js +34 -0
- package/dist/cjs/bundled_modules/d3-geo/src/rotation.js +86 -0
- package/dist/cjs/bundled_modules/d3-geo/src/stream.js +75 -0
- package/dist/cjs/bundled_modules/d3-geo/src/transform.js +24 -0
- package/dist/cjs/bundled_modules/d3-geo-projection/src/math.js +28 -0
- package/dist/cjs/bundled_modules/d3-geo-projection/src/mollweide.js +38 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/accessors.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/array.js +27 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/cluster.js +90 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/constant.js +16 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/ancestors.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/count.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/descendants.js +9 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/each.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/eachAfter.js +21 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/eachBefore.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/find.js +14 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/index.js +99 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/iterator.js +20 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/leaves.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/links.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/path.js +36 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/sort.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/sum.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/lcg.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/pack/enclose.js +122 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/pack/index.js +87 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/pack/siblings.js +118 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/partition.js +58 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/stratify.js +151 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/tree.js +243 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/binary.js +52 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/dice.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/index.js +100 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/resquarify.js +42 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/round.js +12 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/slice.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/sliceDice.js +12 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/squarify.js +74 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/array.js +29 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/basis.js +26 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/basisClosed.js +19 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/color.js +37 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/constant.js +7 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/cubehelix.js +36 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/date.js +12 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/discrete.js +12 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/hcl.js +28 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/hsl.js +28 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/hue.js +15 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/index.js +53 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/lab.js +22 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/number.js +11 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/numberArray.js +21 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/object.js +29 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/piecewise.js +17 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/quantize.js +11 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/rgb.js +63 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/round.js +11 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/string.js +70 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/transform/decompose.js +33 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/transform/index.js +68 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/transform/parse.js +23 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/value.js +28 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/zoom.js +77 -0
- package/dist/cjs/bundled_modules/d3-path/src/path.js +157 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/add.js +91 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/cover.js +49 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/data.js +13 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/extent.js +11 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/find.js +76 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/quad.js +13 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/quadtree.js +79 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/remove.js +69 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/root.js +9 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/size.js +13 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/visit.js +22 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/visitAfter.js +27 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/x.js +14 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/y.js +14 -0
- package/dist/cjs/bundled_modules/d3-scale/src/constant.js +11 -0
- package/dist/cjs/bundled_modules/d3-scale/src/continuous.js +136 -0
- package/dist/cjs/bundled_modules/d3-scale/src/diverging.js +116 -0
- package/dist/cjs/bundled_modules/d3-scale/src/identity.js +34 -0
- package/dist/cjs/bundled_modules/d3-scale/src/init.js +31 -0
- package/dist/cjs/bundled_modules/d3-scale/src/linear.js +77 -0
- package/dist/cjs/bundled_modules/d3-scale/src/log.js +148 -0
- package/dist/cjs/bundled_modules/d3-scale/src/nice.js +24 -0
- package/dist/cjs/bundled_modules/d3-scale/src/number.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale/src/ordinal.js +53 -0
- package/dist/cjs/bundled_modules/d3-scale/src/pow.js +58 -0
- package/dist/cjs/bundled_modules/d3-scale/src/quantile.js +65 -0
- package/dist/cjs/bundled_modules/d3-scale/src/quantize.js +62 -0
- package/dist/cjs/bundled_modules/d3-scale/src/sequential.js +119 -0
- package/dist/cjs/bundled_modules/d3-scale/src/symlog.js +42 -0
- package/dist/cjs/bundled_modules/d3-scale/src/threshold.js +45 -0
- package/dist/cjs/bundled_modules/d3-scale/src/tickFormat.js +39 -0
- package/dist/cjs/bundled_modules/d3-scale/src/time.js +85 -0
- package/dist/cjs/bundled_modules/d3-scale/src/utcTime.js +21 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Accent.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Dark2.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Paired.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Pastel1.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Pastel2.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Set1.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Set2.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Set3.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/category10.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/observable10.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/colors.js +11 -0
- package/dist/cjs/bundled_modules/d3-shape/src/arc.js +274 -0
- package/dist/cjs/bundled_modules/d3-shape/src/area.js +118 -0
- package/dist/cjs/bundled_modules/d3-shape/src/array.js +11 -0
- package/dist/cjs/bundled_modules/d3-shape/src/constant.js +11 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/basis.js +59 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/basisClosed.js +58 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/basisOpen.js +45 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/bundle.js +62 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/cardinal.js +69 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/cardinalClosed.js +68 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/cardinalOpen.js +56 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/catmullRom.js +95 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/catmullRomClosed.js +80 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/catmullRomOpen.js +68 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/linear.js +37 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/linearClosed.js +31 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/monotone.js +109 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/natural.js +71 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/step.js +61 -0
- package/dist/cjs/bundled_modules/d3-shape/src/line.js +64 -0
- package/dist/cjs/bundled_modules/d3-shape/src/math.js +36 -0
- package/dist/cjs/bundled_modules/d3-shape/src/noop.js +7 -0
- package/dist/cjs/bundled_modules/d3-shape/src/path.js +23 -0
- package/dist/cjs/bundled_modules/d3-shape/src/point.js +12 -0
- package/dist/cjs/bundled_modules/d3-shape/src/symbol/circle.js +15 -0
- package/dist/cjs/bundled_modules/d3-shape/src/symbol.js +38 -0
- package/dist/cjs/bundled_modules/d3-time/src/day.js +41 -0
- package/dist/cjs/bundled_modules/d3-time/src/duration.js +17 -0
- package/dist/cjs/bundled_modules/d3-time/src/hour.js +31 -0
- package/dist/cjs/bundled_modules/d3-time/src/interval.js +73 -0
- package/dist/cjs/bundled_modules/d3-time/src/millisecond.js +29 -0
- package/dist/cjs/bundled_modules/d3-time/src/minute.js +31 -0
- package/dist/cjs/bundled_modules/d3-time/src/month.js +32 -0
- package/dist/cjs/bundled_modules/d3-time/src/second.js +18 -0
- package/dist/cjs/bundled_modules/d3-time/src/ticks.js +64 -0
- package/dist/cjs/bundled_modules/d3-time/src/week.js +73 -0
- package/dist/cjs/bundled_modules/d3-time/src/year.js +54 -0
- package/dist/cjs/bundled_modules/d3-time-format/src/defaultLocale.js +33 -0
- package/dist/cjs/bundled_modules/d3-time-format/src/locale.js +694 -0
- package/dist/cjs/bundled_modules/d3-timer/src/interval.js +23 -0
- package/dist/cjs/bundled_modules/d3-timer/src/timer.js +117 -0
- package/dist/cjs/bundled_modules/delaunator/index.js +485 -0
- package/dist/cjs/bundled_modules/internmap/src/index.js +66 -0
- package/dist/cjs/bundled_modules/json-stringify-pretty-compact/index.js +104 -0
- package/dist/cjs/bundled_modules/robust-predicates/esm/orient2d.js +184 -0
- package/dist/cjs/bundled_modules/robust-predicates/esm/util.js +95 -0
- package/dist/cjs/bundled_modules/topojson-client/src/feature.js +77 -0
- package/dist/cjs/bundled_modules/topojson-client/src/identity.js +9 -0
- package/dist/cjs/bundled_modules/topojson-client/src/mesh.js +60 -0
- package/dist/cjs/bundled_modules/topojson-client/src/reverse.js +10 -0
- package/dist/cjs/bundled_modules/topojson-client/src/stitch.js +79 -0
- package/dist/cjs/bundled_modules/topojson-client/src/transform.js +25 -0
- package/dist/cjs/bundled_modules/vega/build/vega.module.js +272 -0
- package/dist/cjs/bundled_modules/vega-canvas/build/vega-canvas.browser.js +18 -0
- package/dist/cjs/bundled_modules/vega-crossfilter/build/vega-crossfilter.js +676 -0
- package/dist/cjs/bundled_modules/vega-dataflow/build/vega-dataflow.js +2102 -0
- package/dist/cjs/bundled_modules/vega-embed/build/embed.js +2939 -0
- package/dist/cjs/bundled_modules/vega-encode/build/vega-encode.js +962 -0
- package/dist/cjs/bundled_modules/vega-event-selector/build/vega-event-selector.js +192 -0
- package/dist/cjs/bundled_modules/vega-expression/build/vega-expression.js +1615 -0
- package/dist/cjs/bundled_modules/vega-force/build/vega-force.js +295 -0
- package/dist/cjs/bundled_modules/vega-format/build/vega-format.js +201 -0
- package/dist/cjs/bundled_modules/vega-functions/build/vega-functions.js +842 -0
- package/dist/cjs/bundled_modules/vega-geo/build/vega-geo.js +1333 -0
- package/dist/cjs/bundled_modules/vega-hierarchy/build/vega-hierarchy.js +580 -0
- package/dist/cjs/bundled_modules/vega-interpreter/build/vega-interpreter.js +310 -0
- package/dist/cjs/bundled_modules/vega-label/build/vega-label.js +876 -0
- package/dist/cjs/bundled_modules/vega-lite/build/index.js +20157 -0
- package/dist/cjs/bundled_modules/vega-loader/build/vega-loader.browser.js +337 -0
- package/dist/cjs/bundled_modules/vega-parser/build/vega-parser.js +3805 -0
- package/dist/cjs/bundled_modules/vega-projection/build/vega-projection.js +90 -0
- package/dist/cjs/bundled_modules/vega-regression/build/vega-regression.js +236 -0
- package/dist/cjs/bundled_modules/vega-runtime/build/vega-runtime.js +588 -0
- package/dist/cjs/bundled_modules/vega-scale/build/vega-scale.js +846 -0
- package/dist/cjs/bundled_modules/vega-scenegraph/build/vega-scenegraph.js +5040 -0
- package/dist/cjs/bundled_modules/vega-schema-url-parser/dist/parser.modern.js +7 -0
- package/dist/cjs/bundled_modules/vega-selections/build/vega-selection.js +342 -0
- package/dist/cjs/bundled_modules/vega-statistics/build/vega-statistics.js +1193 -0
- package/dist/cjs/bundled_modules/vega-themes/build/index.js +853 -0
- package/dist/cjs/bundled_modules/vega-time/build/vega-time.js +342 -0
- package/dist/cjs/bundled_modules/vega-tooltip/build/index.js +353 -0
- package/dist/cjs/bundled_modules/vega-transforms/build/vega-transforms.js +3781 -0
- package/dist/cjs/bundled_modules/vega-util/build/vega-util.js +824 -0
- package/dist/cjs/bundled_modules/vega-view/build/vega-view.js +1306 -0
- package/dist/cjs/bundled_modules/vega-view-transforms/build/vega-view-transforms.js +1313 -0
- package/dist/cjs/bundled_modules/vega-voronoi/build/vega-voronoi.js +80 -0
- package/dist/cjs/bundled_modules/vega-wordcloud/build/vega-wordcloud.js +540 -0
- package/dist/cjs/unstable/extras/chart/BarChart.js +42 -0
- package/dist/cjs/unstable/extras/chart/Chart.js +100 -0
- package/dist/cjs/unstable/extras/chart/DistributionChart.js +84 -0
- package/dist/cjs/unstable/extras/chart/DonutChart.js +43 -0
- package/dist/cjs/unstable/extras/chart/LineChart.js +45 -0
- package/dist/cjs/unstable/extras/chart/PieChart.js +39 -0
- package/dist/cjs/unstable/extras/chart/TimelineChart.js +48 -0
- package/dist/cjs/unstable/extras/chart/index.js +23 -0
- package/dist/esm/bundled_modules/d3-array/src/ascending.js +5 -0
- package/dist/esm/bundled_modules/d3-array/src/bisect.js +10 -0
- package/dist/esm/bundled_modules/d3-array/src/bisector.js +58 -0
- package/dist/esm/bundled_modules/d3-array/src/descending.js +9 -0
- package/dist/esm/bundled_modules/d3-array/src/deviation.js +8 -0
- package/dist/esm/bundled_modules/d3-array/src/fsum.js +43 -0
- package/dist/esm/bundled_modules/d3-array/src/intersection.js +21 -0
- package/dist/esm/bundled_modules/d3-array/src/max.js +22 -0
- package/dist/esm/bundled_modules/d3-array/src/mean.js +21 -0
- package/dist/esm/bundled_modules/d3-array/src/median.js +7 -0
- package/dist/esm/bundled_modules/d3-array/src/merge.js +11 -0
- package/dist/esm/bundled_modules/d3-array/src/min.js +22 -0
- package/dist/esm/bundled_modules/d3-array/src/number.js +22 -0
- package/dist/esm/bundled_modules/d3-array/src/permute.js +5 -0
- package/dist/esm/bundled_modules/d3-array/src/quantile.js +31 -0
- package/dist/esm/bundled_modules/d3-array/src/quickselect.js +55 -0
- package/dist/esm/bundled_modules/d3-array/src/range.js +15 -0
- package/dist/esm/bundled_modules/d3-array/src/sort.js +17 -0
- package/dist/esm/bundled_modules/d3-array/src/sum.js +13 -0
- package/dist/esm/bundled_modules/d3-array/src/ticks.js +57 -0
- package/dist/esm/bundled_modules/d3-array/src/union.js +13 -0
- package/dist/esm/bundled_modules/d3-array/src/variance.js +27 -0
- package/dist/esm/bundled_modules/d3-color/src/color.js +398 -0
- package/dist/esm/bundled_modules/d3-color/src/cubehelix.js +63 -0
- package/dist/esm/bundled_modules/d3-color/src/define.js +12 -0
- package/dist/esm/bundled_modules/d3-color/src/lab.js +117 -0
- package/dist/esm/bundled_modules/d3-color/src/math.js +4 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/delaunay.js +250 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/path.js +39 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/polygon.js +19 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/voronoi.js +334 -0
- package/dist/esm/bundled_modules/d3-dispatch/src/dispatch.js +84 -0
- package/dist/esm/bundled_modules/d3-dsv/src/dsv.js +166 -0
- package/dist/esm/bundled_modules/d3-force/src/center.js +42 -0
- package/dist/esm/bundled_modules/d3-force/src/collide.js +102 -0
- package/dist/esm/bundled_modules/d3-force/src/constant.js +7 -0
- package/dist/esm/bundled_modules/d3-force/src/jiggle.js +5 -0
- package/dist/esm/bundled_modules/d3-force/src/lcg.js +11 -0
- package/dist/esm/bundled_modules/d3-force/src/link.js +119 -0
- package/dist/esm/bundled_modules/d3-force/src/manyBody.js +118 -0
- package/dist/esm/bundled_modules/d3-force/src/simulation.js +158 -0
- package/dist/esm/bundled_modules/d3-force/src/x.js +43 -0
- package/dist/esm/bundled_modules/d3-force/src/y.js +43 -0
- package/dist/esm/bundled_modules/d3-format/src/defaultLocale.js +20 -0
- package/dist/esm/bundled_modules/d3-format/src/exponent.js +7 -0
- package/dist/esm/bundled_modules/d3-format/src/formatDecimal.js +22 -0
- package/dist/esm/bundled_modules/d3-format/src/formatGroup.js +20 -0
- package/dist/esm/bundled_modules/d3-format/src/formatNumerals.js +9 -0
- package/dist/esm/bundled_modules/d3-format/src/formatPrefixAuto.js +18 -0
- package/dist/esm/bundled_modules/d3-format/src/formatRounded.js +13 -0
- package/dist/esm/bundled_modules/d3-format/src/formatSpecifier.js +49 -0
- package/dist/esm/bundled_modules/d3-format/src/formatTrim.js +13 -0
- package/dist/esm/bundled_modules/d3-format/src/formatTypes.js +21 -0
- package/dist/esm/bundled_modules/d3-format/src/identity.js +5 -0
- package/dist/esm/bundled_modules/d3-format/src/locale.js +150 -0
- package/dist/esm/bundled_modules/d3-format/src/precisionFixed.js +7 -0
- package/dist/esm/bundled_modules/d3-format/src/precisionPrefix.js +7 -0
- package/dist/esm/bundled_modules/d3-format/src/precisionRound.js +8 -0
- package/dist/esm/bundled_modules/d3-geo/src/area.js +78 -0
- package/dist/esm/bundled_modules/d3-geo/src/bounds.js +181 -0
- package/dist/esm/bundled_modules/d3-geo/src/cartesian.js +35 -0
- package/dist/esm/bundled_modules/d3-geo/src/centroid.js +145 -0
- package/dist/esm/bundled_modules/d3-geo/src/circle.js +33 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/antimeridian.js +94 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/buffer.js +26 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/circle.js +179 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/index.js +133 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/line.js +61 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/rectangle.js +170 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/rejoin.js +105 -0
- package/dist/esm/bundled_modules/d3-geo/src/compose.js +14 -0
- package/dist/esm/bundled_modules/d3-geo/src/graticule.js +103 -0
- package/dist/esm/bundled_modules/d3-geo/src/identity.js +3 -0
- package/dist/esm/bundled_modules/d3-geo/src/math.js +33 -0
- package/dist/esm/bundled_modules/d3-geo/src/noop.js +3 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/area.js +50 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/bounds.js +28 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/centroid.js +100 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/context.js +47 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/index.js +78 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/measure.js +45 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/string.js +88 -0
- package/dist/esm/bundled_modules/d3-geo/src/pointEqual.js +7 -0
- package/dist/esm/bundled_modules/d3-geo/src/polygonContains.js +76 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/albers.js +12 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/albersUsa.js +113 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/azimuthal.js +29 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/azimuthalEqualArea.js +19 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/azimuthalEquidistant.js +19 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conic.js +17 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conicConformal.js +40 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conicEqualArea.js +35 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conicEquidistant.js +34 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/cylindricalEqualArea.js +17 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/equalEarth.js +38 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/equirectangular.js +14 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/fit.js +49 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/gnomonic.js +18 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/identity.js +87 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/index.js +179 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/mercator.js +54 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/naturalEarth1.js +30 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/orthographic.js +17 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/resample.js +104 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/stereographic.js +20 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/transverseMercator.js +29 -0
- package/dist/esm/bundled_modules/d3-geo/src/rotation.js +81 -0
- package/dist/esm/bundled_modules/d3-geo/src/stream.js +71 -0
- package/dist/esm/bundled_modules/d3-geo/src/transform.js +22 -0
- package/dist/esm/bundled_modules/d3-geo-projection/src/math.js +18 -0
- package/dist/esm/bundled_modules/d3-geo-projection/src/mollweide.js +31 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/accessors.js +10 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/array.js +22 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/cluster.js +86 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/constant.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/ancestors.js +9 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/count.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/descendants.js +5 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/each.js +9 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/eachAfter.js +17 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/eachBefore.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/find.js +10 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/index.js +93 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/iterator.js +16 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/leaves.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/links.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/path.js +32 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/sort.js +9 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/sum.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/lcg.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/pack/enclose.js +120 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/pack/index.js +83 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/pack/siblings.js +116 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/partition.js +54 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/stratify.js +147 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/tree.js +239 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/binary.js +48 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/dice.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/index.js +96 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/resquarify.js +38 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/round.js +8 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/slice.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/sliceDice.js +8 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/squarify.js +68 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/array.js +24 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/basis.js +21 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/basisClosed.js +15 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/color.js +31 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/constant.js +3 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/cubehelix.js +31 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/date.js +8 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/discrete.js +8 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/hcl.js +23 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/hsl.js +23 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/hue.js +11 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/index.js +21 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/lab.js +18 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/number.js +7 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/numberArray.js +16 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/object.js +25 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/piecewise.js +13 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/quantize.js +7 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/rgb.js +57 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/round.js +7 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/string.js +66 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/transform/decompose.js +28 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/transform/index.js +65 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/transform/parse.js +20 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/value.js +24 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/zoom.js +73 -0
- package/dist/esm/bundled_modules/d3-path/src/path.js +154 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/add.js +86 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/cover.js +45 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/data.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/extent.js +7 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/find.js +72 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/quad.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/quadtree.js +75 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/remove.js +64 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/root.js +5 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/size.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/visit.js +18 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/visitAfter.js +23 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/x.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/y.js +9 -0
- package/dist/esm/bundled_modules/d3-scale/src/constant.js +7 -0
- package/dist/esm/bundled_modules/d3-scale/src/continuous.js +129 -0
- package/dist/esm/bundled_modules/d3-scale/src/diverging.js +108 -0
- package/dist/esm/bundled_modules/d3-scale/src/identity.js +30 -0
- package/dist/esm/bundled_modules/d3-scale/src/init.js +28 -0
- package/dist/esm/bundled_modules/d3-scale/src/linear.js +72 -0
- package/dist/esm/bundled_modules/d3-scale/src/log.js +143 -0
- package/dist/esm/bundled_modules/d3-scale/src/nice.js +20 -0
- package/dist/esm/bundled_modules/d3-scale/src/number.js +5 -0
- package/dist/esm/bundled_modules/d3-scale/src/ordinal.js +48 -0
- package/dist/esm/bundled_modules/d3-scale/src/pow.js +52 -0
- package/dist/esm/bundled_modules/d3-scale/src/quantile.js +61 -0
- package/dist/esm/bundled_modules/d3-scale/src/quantize.js +58 -0
- package/dist/esm/bundled_modules/d3-scale/src/sequential.js +110 -0
- package/dist/esm/bundled_modules/d3-scale/src/symlog.js +37 -0
- package/dist/esm/bundled_modules/d3-scale/src/threshold.js +41 -0
- package/dist/esm/bundled_modules/d3-scale/src/tickFormat.js +35 -0
- package/dist/esm/bundled_modules/d3-scale/src/time.js +80 -0
- package/dist/esm/bundled_modules/d3-scale/src/utcTime.js +17 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Accent.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Dark2.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Paired.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Pastel1.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Pastel2.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Set1.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Set2.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Set3.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/category10.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/observable10.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/colors.js +7 -0
- package/dist/esm/bundled_modules/d3-shape/src/arc.js +270 -0
- package/dist/esm/bundled_modules/d3-shape/src/area.js +114 -0
- package/dist/esm/bundled_modules/d3-shape/src/array.js +7 -0
- package/dist/esm/bundled_modules/d3-shape/src/constant.js +7 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/basis.js +53 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/basisClosed.js +54 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/basisOpen.js +41 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/bundle.js +58 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/cardinal.js +63 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/cardinalClosed.js +63 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/cardinalOpen.js +51 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/catmullRom.js +90 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/catmullRomClosed.js +76 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/catmullRomOpen.js +64 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/linear.js +33 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/linearClosed.js +27 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/monotone.js +106 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/natural.js +67 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/step.js +55 -0
- package/dist/esm/bundled_modules/d3-shape/src/line.js +60 -0
- package/dist/esm/bundled_modules/d3-shape/src/math.js +22 -0
- package/dist/esm/bundled_modules/d3-shape/src/noop.js +3 -0
- package/dist/esm/bundled_modules/d3-shape/src/path.js +21 -0
- package/dist/esm/bundled_modules/d3-shape/src/point.js +9 -0
- package/dist/esm/bundled_modules/d3-shape/src/symbol/circle.js +11 -0
- package/dist/esm/bundled_modules/d3-shape/src/symbol.js +34 -0
- package/dist/esm/bundled_modules/d3-time/src/day.js +37 -0
- package/dist/esm/bundled_modules/d3-time/src/duration.js +9 -0
- package/dist/esm/bundled_modules/d3-time/src/hour.js +28 -0
- package/dist/esm/bundled_modules/d3-time/src/interval.js +71 -0
- package/dist/esm/bundled_modules/d3-time/src/millisecond.js +27 -0
- package/dist/esm/bundled_modules/d3-time/src/minute.js +28 -0
- package/dist/esm/bundled_modules/d3-time/src/month.js +29 -0
- package/dist/esm/bundled_modules/d3-time/src/second.js +16 -0
- package/dist/esm/bundled_modules/d3-time/src/ticks.js +59 -0
- package/dist/esm/bundled_modules/d3-time/src/week.js +58 -0
- package/dist/esm/bundled_modules/d3-time/src/year.js +51 -0
- package/dist/esm/bundled_modules/d3-time-format/src/defaultLocale.js +29 -0
- package/dist/esm/bundled_modules/d3-time-format/src/locale.js +690 -0
- package/dist/esm/bundled_modules/d3-timer/src/interval.js +19 -0
- package/dist/esm/bundled_modules/d3-timer/src/timer.js +112 -0
- package/dist/esm/bundled_modules/delaunator/index.js +481 -0
- package/dist/esm/bundled_modules/internmap/src/index.js +63 -0
- package/dist/esm/bundled_modules/json-stringify-pretty-compact/index.js +100 -0
- package/dist/esm/bundled_modules/robust-predicates/esm/orient2d.js +182 -0
- package/dist/esm/bundled_modules/robust-predicates/esm/util.js +88 -0
- package/dist/esm/bundled_modules/topojson-client/src/feature.js +72 -0
- package/dist/esm/bundled_modules/topojson-client/src/identity.js +5 -0
- package/dist/esm/bundled_modules/topojson-client/src/mesh.js +55 -0
- package/dist/esm/bundled_modules/topojson-client/src/reverse.js +6 -0
- package/dist/esm/bundled_modules/topojson-client/src/stitch.js +75 -0
- package/dist/esm/bundled_modules/topojson-client/src/transform.js +21 -0
- package/dist/esm/bundled_modules/vega/build/vega.module.js +38 -0
- package/dist/esm/bundled_modules/vega-canvas/build/vega-canvas.browser.js +14 -0
- package/dist/esm/bundled_modules/vega-crossfilter/build/vega-crossfilter.js +673 -0
- package/dist/esm/bundled_modules/vega-dataflow/build/vega-dataflow.js +2080 -0
- package/dist/esm/bundled_modules/vega-embed/build/embed.js +2932 -0
- package/dist/esm/bundled_modules/vega-encode/build/vega-encode.js +952 -0
- package/dist/esm/bundled_modules/vega-event-selector/build/vega-event-selector.js +190 -0
- package/dist/esm/bundled_modules/vega-expression/build/vega-expression.js +1597 -0
- package/dist/esm/bundled_modules/vega-force/build/vega-force.js +293 -0
- package/dist/esm/bundled_modules/vega-format/build/vega-format.js +191 -0
- package/dist/esm/bundled_modules/vega-functions/build/vega-functions.js +779 -0
- package/dist/esm/bundled_modules/vega-geo/build/vega-geo.js +1322 -0
- package/dist/esm/bundled_modules/vega-hierarchy/build/vega-hierarchy.js +572 -0
- package/dist/esm/bundled_modules/vega-interpreter/build/vega-interpreter.js +308 -0
- package/dist/esm/bundled_modules/vega-label/build/vega-label.js +874 -0
- package/dist/esm/bundled_modules/vega-lite/build/index.js +20110 -0
- package/dist/esm/bundled_modules/vega-loader/build/vega-loader.browser.js +328 -0
- package/dist/esm/bundled_modules/vega-parser/build/vega-parser.js +3783 -0
- package/dist/esm/bundled_modules/vega-projection/build/vega-projection.js +86 -0
- package/dist/esm/bundled_modules/vega-regression/build/vega-regression.js +233 -0
- package/dist/esm/bundled_modules/vega-runtime/build/vega-runtime.js +586 -0
- package/dist/esm/bundled_modules/vega-scale/build/vega-scale.js +799 -0
- package/dist/esm/bundled_modules/vega-scenegraph/build/vega-scenegraph.js +4982 -0
- package/dist/esm/bundled_modules/vega-schema-url-parser/dist/parser.modern.js +3 -0
- package/dist/esm/bundled_modules/vega-selections/build/vega-selection.js +336 -0
- package/dist/esm/bundled_modules/vega-statistics/build/vega-statistics.js +1157 -0
- package/dist/esm/bundled_modules/vega-themes/build/index.js +837 -0
- package/dist/esm/bundled_modules/vega-time/build/vega-time.js +314 -0
- package/dist/esm/bundled_modules/vega-tooltip/build/index.js +339 -0
- package/dist/esm/bundled_modules/vega-transforms/build/vega-transforms.js +3740 -0
- package/dist/esm/bundled_modules/vega-util/build/vega-util.js +753 -0
- package/dist/esm/bundled_modules/vega-view/build/vega-view.js +1304 -0
- package/dist/esm/bundled_modules/vega-view-transforms/build/vega-view-transforms.js +1306 -0
- package/dist/esm/bundled_modules/vega-voronoi/build/vega-voronoi.js +78 -0
- package/dist/esm/bundled_modules/vega-wordcloud/build/vega-wordcloud.js +538 -0
- package/dist/esm/unstable/extras/chart/BarChart.js +40 -0
- package/dist/esm/unstable/extras/chart/Chart.js +96 -0
- package/dist/esm/unstable/extras/chart/DistributionChart.js +82 -0
- package/dist/esm/unstable/extras/chart/DonutChart.js +41 -0
- package/dist/esm/unstable/extras/chart/LineChart.js +43 -0
- package/dist/esm/unstable/extras/chart/PieChart.js +37 -0
- package/dist/esm/unstable/extras/chart/TimelineChart.js +46 -0
- package/dist/esm/unstable/extras/chart/index.js +8 -0
- package/dist/types/unstable/extras/chart/BarChart.d.ts +16 -0
- package/dist/types/unstable/extras/chart/Chart.d.ts +33 -0
- package/dist/types/unstable/extras/chart/DistributionChart.d.ts +18 -0
- package/dist/types/unstable/extras/chart/DonutChart.d.ts +16 -0
- package/dist/types/unstable/extras/chart/LineChart.d.ts +16 -0
- package/dist/types/unstable/extras/chart/PieChart.d.ts +14 -0
- package/dist/types/unstable/extras/chart/TimelineChart.d.ts +15 -0
- package/dist/types/unstable/extras/chart/index.d.ts +15 -0
- package/package.json +1 -1
|
@@ -0,0 +1,1304 @@
|
|
|
1
|
+
import { inherits, extend, isString, isArray, isObject, isDate, toSet, error, hasOwnProperty as has, truthy, stringValue as $, debounce, array, constant } from '../../vega-util/build/vega-util.js';
|
|
2
|
+
import { Dataflow, transforms, asyncCallback, changeset, isChangeSet, EventStream } from '../../vega-dataflow/build/vega-dataflow.js';
|
|
3
|
+
import { RenderType, Scenegraph, CanvasHandler, renderModule, point } from '../../vega-scenegraph/build/vega-scenegraph.js';
|
|
4
|
+
import { functionContext } from '../../vega-functions/build/vega-functions.js';
|
|
5
|
+
import { context } from '../../vega-runtime/build/vega-runtime.js';
|
|
6
|
+
import { locale } from '../../vega-format/build/vega-format.js';
|
|
7
|
+
import interval from '../../d3-timer/src/interval.js';
|
|
8
|
+
import { tickStep } from '../../d3-array/src/ticks.js';
|
|
9
|
+
|
|
10
|
+
// initialize aria role and label attributes
|
|
11
|
+
function initializeAria(view) {
|
|
12
|
+
const el = view.container();
|
|
13
|
+
if (el) {
|
|
14
|
+
el.setAttribute('role', 'graphics-document');
|
|
15
|
+
el.setAttribute('aria-roleDescription', 'visualization');
|
|
16
|
+
ariaLabel(el, view.description());
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// update aria-label if we have a DOM container element
|
|
21
|
+
function ariaLabel(el, desc) {
|
|
22
|
+
if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function background (view) {
|
|
26
|
+
// respond to background signal
|
|
27
|
+
view.add(null, _ => {
|
|
28
|
+
view._background = _.bg;
|
|
29
|
+
view._resize = 1;
|
|
30
|
+
return _.bg;
|
|
31
|
+
}, {
|
|
32
|
+
bg: view._signals.background
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const Default = 'default';
|
|
37
|
+
function cursor (view) {
|
|
38
|
+
// get cursor signal, add to dataflow if needed
|
|
39
|
+
const cursor = view._signals.cursor || (view._signals.cursor = view.add({
|
|
40
|
+
user: Default,
|
|
41
|
+
item: null
|
|
42
|
+
}));
|
|
43
|
+
|
|
44
|
+
// evaluate cursor on each pointermove event
|
|
45
|
+
view.on(view.events('view', 'pointermove'), cursor, (_, event) => {
|
|
46
|
+
const value = cursor.value,
|
|
47
|
+
user = value ? isString(value) ? value : value.user : Default,
|
|
48
|
+
item = event.item && event.item.cursor || null;
|
|
49
|
+
return value && user === value.user && item == value.item ? value : {
|
|
50
|
+
user: user,
|
|
51
|
+
item: item
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// when cursor signal updates, set visible cursor
|
|
56
|
+
view.add(null, function (_) {
|
|
57
|
+
let user = _.cursor,
|
|
58
|
+
item = this.value;
|
|
59
|
+
if (!isString(user)) {
|
|
60
|
+
item = user.item;
|
|
61
|
+
user = user.user;
|
|
62
|
+
}
|
|
63
|
+
setCursor(view, user && user !== Default ? user : item || user);
|
|
64
|
+
return item;
|
|
65
|
+
}, {
|
|
66
|
+
cursor: cursor
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function setCursor(view, cursor) {
|
|
70
|
+
const el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();
|
|
71
|
+
if (el) {
|
|
72
|
+
return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function dataref(view, name) {
|
|
77
|
+
var data = view._runtime.data;
|
|
78
|
+
if (!has(data, name)) {
|
|
79
|
+
error('Unrecognized data set: ' + name);
|
|
80
|
+
}
|
|
81
|
+
return data[name];
|
|
82
|
+
}
|
|
83
|
+
function data(name, values) {
|
|
84
|
+
return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));
|
|
85
|
+
}
|
|
86
|
+
function change(name, changes) {
|
|
87
|
+
if (!isChangeSet(changes)) {
|
|
88
|
+
error('Second argument to changes must be a changeset.');
|
|
89
|
+
}
|
|
90
|
+
const dataset = dataref(this, name);
|
|
91
|
+
dataset.modified = true;
|
|
92
|
+
return this.pulse(dataset.input, changes);
|
|
93
|
+
}
|
|
94
|
+
function insert(name, _) {
|
|
95
|
+
return change.call(this, name, changeset().insert(_));
|
|
96
|
+
}
|
|
97
|
+
function remove(name, _) {
|
|
98
|
+
return change.call(this, name, changeset().remove(_));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function width(view) {
|
|
102
|
+
var padding = view.padding();
|
|
103
|
+
return Math.max(0, view._viewWidth + padding.left + padding.right);
|
|
104
|
+
}
|
|
105
|
+
function height(view) {
|
|
106
|
+
var padding = view.padding();
|
|
107
|
+
return Math.max(0, view._viewHeight + padding.top + padding.bottom);
|
|
108
|
+
}
|
|
109
|
+
function offset(view) {
|
|
110
|
+
var padding = view.padding(),
|
|
111
|
+
origin = view._origin;
|
|
112
|
+
return [padding.left + origin[0], padding.top + origin[1]];
|
|
113
|
+
}
|
|
114
|
+
function resizeRenderer(view) {
|
|
115
|
+
var origin = offset(view),
|
|
116
|
+
w = width(view),
|
|
117
|
+
h = height(view);
|
|
118
|
+
view._renderer.background(view.background());
|
|
119
|
+
view._renderer.resize(w, h, origin);
|
|
120
|
+
view._handler.origin(origin);
|
|
121
|
+
view._resizeListeners.forEach(handler => {
|
|
122
|
+
try {
|
|
123
|
+
handler(w, h);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
view.error(error);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Extend an event with additional view-specific methods.
|
|
132
|
+
* Adds a new property ('vega') to an event that provides a number
|
|
133
|
+
* of methods for querying information about the current interaction.
|
|
134
|
+
* The vega object provides the following methods:
|
|
135
|
+
* view - Returns the backing View instance.
|
|
136
|
+
* item - Returns the currently active scenegraph item (if any).
|
|
137
|
+
* group - Returns the currently active scenegraph group (if any).
|
|
138
|
+
* This method accepts a single string-typed argument indicating the name
|
|
139
|
+
* of the desired parent group. The scenegraph will be traversed from
|
|
140
|
+
* the item up towards the root to search for a matching group. If no
|
|
141
|
+
* argument is provided the enclosing group for the active item is
|
|
142
|
+
* returned, unless the item it itself a group, in which case it is
|
|
143
|
+
* returned directly.
|
|
144
|
+
* xy - Returns a two-element array containing the x and y coordinates for
|
|
145
|
+
* mouse or touch events. For touch events, this is based on the first
|
|
146
|
+
* elements in the changedTouches array. This method accepts a single
|
|
147
|
+
* argument: either an item instance or mark name that should serve as
|
|
148
|
+
* the reference coordinate system. If no argument is provided the
|
|
149
|
+
* top-level view coordinate system is assumed.
|
|
150
|
+
* x - Returns the current x-coordinate, accepts the same arguments as xy.
|
|
151
|
+
* y - Returns the current y-coordinate, accepts the same arguments as xy.
|
|
152
|
+
* @param {Event} event - The input event to extend.
|
|
153
|
+
* @param {Item} item - The currently active scenegraph item (if any).
|
|
154
|
+
* @return {Event} - The extended input event.
|
|
155
|
+
*/
|
|
156
|
+
function eventExtend (view, event, item) {
|
|
157
|
+
var r = view._renderer,
|
|
158
|
+
el = r && r.canvas(),
|
|
159
|
+
p,
|
|
160
|
+
e,
|
|
161
|
+
translate;
|
|
162
|
+
if (el) {
|
|
163
|
+
translate = offset(view);
|
|
164
|
+
e = event.changedTouches ? event.changedTouches[0] : event;
|
|
165
|
+
p = point(e, el);
|
|
166
|
+
p[0] -= translate[0];
|
|
167
|
+
p[1] -= translate[1];
|
|
168
|
+
}
|
|
169
|
+
event.dataflow = view;
|
|
170
|
+
event.item = item;
|
|
171
|
+
event.vega = extension(view, item, p);
|
|
172
|
+
return event;
|
|
173
|
+
}
|
|
174
|
+
function extension(view, item, point) {
|
|
175
|
+
const itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;
|
|
176
|
+
function group(name) {
|
|
177
|
+
var g = itemGroup,
|
|
178
|
+
i;
|
|
179
|
+
if (name) for (i = item; i; i = i.mark.group) {
|
|
180
|
+
if (i.mark.name === name) {
|
|
181
|
+
g = i;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return g && g.mark && g.mark.interactive ? g : {};
|
|
186
|
+
}
|
|
187
|
+
function xy(item) {
|
|
188
|
+
if (!item) return point;
|
|
189
|
+
if (isString(item)) item = group(item);
|
|
190
|
+
const p = point.slice();
|
|
191
|
+
while (item) {
|
|
192
|
+
p[0] -= item.x || 0;
|
|
193
|
+
p[1] -= item.y || 0;
|
|
194
|
+
item = item.mark && item.mark.group;
|
|
195
|
+
}
|
|
196
|
+
return p;
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
view: constant(view),
|
|
200
|
+
item: constant(item || {}),
|
|
201
|
+
group: group,
|
|
202
|
+
xy: xy,
|
|
203
|
+
x: item => xy(item)[0],
|
|
204
|
+
y: item => xy(item)[1]
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const VIEW = 'view',
|
|
209
|
+
TIMER = 'timer',
|
|
210
|
+
WINDOW = 'window',
|
|
211
|
+
NO_TRAP = {
|
|
212
|
+
trap: false
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Initialize event handling configuration.
|
|
217
|
+
* @param {object} config - The configuration settings.
|
|
218
|
+
* @return {object}
|
|
219
|
+
*/
|
|
220
|
+
function initializeEventConfig(config) {
|
|
221
|
+
const events = extend({
|
|
222
|
+
defaults: {}
|
|
223
|
+
}, config);
|
|
224
|
+
const unpack = (obj, keys) => {
|
|
225
|
+
keys.forEach(k => {
|
|
226
|
+
if (isArray(obj[k])) obj[k] = toSet(obj[k]);
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
unpack(events.defaults, ['prevent', 'allow']);
|
|
230
|
+
unpack(events, ['view', 'window', 'selector']);
|
|
231
|
+
return events;
|
|
232
|
+
}
|
|
233
|
+
function trackEventListener(view, sources, type, handler) {
|
|
234
|
+
view._eventListeners.push({
|
|
235
|
+
type: type,
|
|
236
|
+
sources: array(sources),
|
|
237
|
+
handler: handler
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function prevent(view, type) {
|
|
241
|
+
var def = view._eventConfig.defaults,
|
|
242
|
+
prevent = def.prevent,
|
|
243
|
+
allow = def.allow;
|
|
244
|
+
return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();
|
|
245
|
+
}
|
|
246
|
+
function permit(view, key, type) {
|
|
247
|
+
const rule = view._eventConfig && view._eventConfig[key];
|
|
248
|
+
if (rule === false || isObject(rule) && !rule[type]) {
|
|
249
|
+
view.warn(`Blocked ${key} ${type} event listener.`);
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Create a new event stream from an event source.
|
|
257
|
+
* @param {object} source - The event source to monitor.
|
|
258
|
+
* @param {string} type - The event type.
|
|
259
|
+
* @param {function(object): boolean} [filter] - Event filter function.
|
|
260
|
+
* @return {EventStream}
|
|
261
|
+
*/
|
|
262
|
+
function events(source, type, filter) {
|
|
263
|
+
var view = this,
|
|
264
|
+
s = new EventStream(filter),
|
|
265
|
+
send = function (e, item) {
|
|
266
|
+
view.runAsync(null, () => {
|
|
267
|
+
if (source === VIEW && prevent(view, type)) {
|
|
268
|
+
e.preventDefault();
|
|
269
|
+
}
|
|
270
|
+
s.receive(eventExtend(view, e, item));
|
|
271
|
+
});
|
|
272
|
+
},
|
|
273
|
+
sources;
|
|
274
|
+
if (source === TIMER) {
|
|
275
|
+
if (permit(view, 'timer', type)) {
|
|
276
|
+
view.timer(send, type);
|
|
277
|
+
}
|
|
278
|
+
} else if (source === VIEW) {
|
|
279
|
+
if (permit(view, 'view', type)) {
|
|
280
|
+
// send traps errors, so use {trap: false} option
|
|
281
|
+
view.addEventListener(type, send, NO_TRAP);
|
|
282
|
+
}
|
|
283
|
+
} else {
|
|
284
|
+
if (source === WINDOW) {
|
|
285
|
+
if (permit(view, 'window', type) && typeof window !== 'undefined') {
|
|
286
|
+
sources = [window];
|
|
287
|
+
}
|
|
288
|
+
} else if (typeof document !== 'undefined') {
|
|
289
|
+
if (permit(view, 'selector', type)) {
|
|
290
|
+
sources = Array.from(document.querySelectorAll(source));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (!sources) {
|
|
294
|
+
view.warn('Can not resolve event source: ' + source);
|
|
295
|
+
} else {
|
|
296
|
+
for (var i = 0, n = sources.length; i < n; ++i) {
|
|
297
|
+
sources[i].addEventListener(type, send);
|
|
298
|
+
}
|
|
299
|
+
trackEventListener(view, sources, type, send);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return s;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function itemFilter(event) {
|
|
306
|
+
return event.item;
|
|
307
|
+
}
|
|
308
|
+
function markTarget(event) {
|
|
309
|
+
// grab upstream collector feeding the mark operator
|
|
310
|
+
return event.item.mark.source;
|
|
311
|
+
}
|
|
312
|
+
function invoke(name) {
|
|
313
|
+
return function (_, event) {
|
|
314
|
+
return event.vega.view().changeset().encode(event.item, name);
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
function hover (hoverSet, leaveSet) {
|
|
318
|
+
hoverSet = [hoverSet || 'hover'];
|
|
319
|
+
leaveSet = [leaveSet || 'update', hoverSet[0]];
|
|
320
|
+
|
|
321
|
+
// invoke hover set upon pointerover
|
|
322
|
+
this.on(this.events('view', 'pointerover', itemFilter), markTarget, invoke(hoverSet));
|
|
323
|
+
|
|
324
|
+
// invoke leave set upon pointerout
|
|
325
|
+
this.on(this.events('view', 'pointerout', itemFilter), markTarget, invoke(leaveSet));
|
|
326
|
+
return this;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Finalize a View instance that is being removed.
|
|
331
|
+
* Cancel any running timers.
|
|
332
|
+
* Remove all external event listeners.
|
|
333
|
+
* Remove any currently displayed tooltip.
|
|
334
|
+
*/
|
|
335
|
+
function finalize () {
|
|
336
|
+
var tooltip = this._tooltip,
|
|
337
|
+
timers = this._timers,
|
|
338
|
+
handlers = this._handler.handlers(),
|
|
339
|
+
listeners = this._eventListeners,
|
|
340
|
+
n,
|
|
341
|
+
m,
|
|
342
|
+
e,
|
|
343
|
+
h,
|
|
344
|
+
t;
|
|
345
|
+
n = timers.length;
|
|
346
|
+
while (--n >= 0) {
|
|
347
|
+
timers[n].stop();
|
|
348
|
+
}
|
|
349
|
+
n = listeners.length;
|
|
350
|
+
while (--n >= 0) {
|
|
351
|
+
e = listeners[n];
|
|
352
|
+
m = e.sources.length;
|
|
353
|
+
while (--m >= 0) {
|
|
354
|
+
e.sources[m].removeEventListener(e.type, e.handler);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
if (tooltip) {
|
|
358
|
+
tooltip.call(this, this._handler, null, null, null);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// turn off all registered handlers
|
|
362
|
+
n = handlers.length;
|
|
363
|
+
while (--n >= 0) {
|
|
364
|
+
t = handlers[n].type;
|
|
365
|
+
h = handlers[n].handler;
|
|
366
|
+
this._handler.off(t, h);
|
|
367
|
+
}
|
|
368
|
+
return this;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
function element (tag, attr, text) {
|
|
372
|
+
const el = document.createElement(tag);
|
|
373
|
+
for (const key in attr) el.setAttribute(key, attr[key]);
|
|
374
|
+
if (text != null) el.textContent = text;
|
|
375
|
+
return el;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const BindClass = 'vega-bind',
|
|
379
|
+
NameClass = 'vega-bind-name',
|
|
380
|
+
RadioClass = 'vega-bind-radio';
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Bind a signal to an external HTML input element. The resulting two-way
|
|
384
|
+
* binding will propagate input changes to signals, and propagate signal
|
|
385
|
+
* changes to the input element state. If this view instance has no parent
|
|
386
|
+
* element, we assume the view is headless and no bindings are created.
|
|
387
|
+
* @param {Element|string} el - The parent DOM element to which the input
|
|
388
|
+
* element should be appended as a child. If string-valued, this argument
|
|
389
|
+
* will be treated as a CSS selector. If null or undefined, the parent
|
|
390
|
+
* element of this view will be used as the element.
|
|
391
|
+
* @param {object} param - The binding parameters which specify the signal
|
|
392
|
+
* to bind to, the input element type, and type-specific configuration.
|
|
393
|
+
* @return {View} - This view instance.
|
|
394
|
+
*/
|
|
395
|
+
function bind (view, el, binding) {
|
|
396
|
+
if (!el) return;
|
|
397
|
+
const param = binding.param;
|
|
398
|
+
let bind = binding.state;
|
|
399
|
+
if (!bind) {
|
|
400
|
+
bind = binding.state = {
|
|
401
|
+
elements: null,
|
|
402
|
+
active: false,
|
|
403
|
+
set: null,
|
|
404
|
+
update: value => {
|
|
405
|
+
if (value != view.signal(param.signal)) {
|
|
406
|
+
view.runAsync(null, () => {
|
|
407
|
+
bind.source = true;
|
|
408
|
+
view.signal(param.signal, value);
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
if (param.debounce) {
|
|
414
|
+
bind.update = debounce(param.debounce, bind.update);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
const create = param.input == null && param.element ? target : generate;
|
|
418
|
+
create(bind, el, param, view);
|
|
419
|
+
if (!bind.active) {
|
|
420
|
+
view.on(view._signals[param.signal], null, () => {
|
|
421
|
+
bind.source ? bind.source = false : bind.set(view.signal(param.signal));
|
|
422
|
+
});
|
|
423
|
+
bind.active = true;
|
|
424
|
+
}
|
|
425
|
+
return bind;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* Bind the signal to an external EventTarget.
|
|
430
|
+
*/
|
|
431
|
+
function target(bind, node, param, view) {
|
|
432
|
+
const type = param.event || 'input';
|
|
433
|
+
const handler = () => bind.update(node.value);
|
|
434
|
+
|
|
435
|
+
// initialize signal value to external input value
|
|
436
|
+
view.signal(param.signal, node.value);
|
|
437
|
+
|
|
438
|
+
// listen for changes on the element
|
|
439
|
+
node.addEventListener(type, handler);
|
|
440
|
+
|
|
441
|
+
// register with view, so we can remove it upon finalization
|
|
442
|
+
trackEventListener(view, node, type, handler);
|
|
443
|
+
|
|
444
|
+
// propagate change to element
|
|
445
|
+
bind.set = value => {
|
|
446
|
+
node.value = value;
|
|
447
|
+
node.dispatchEvent(event(type));
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
function event(type) {
|
|
451
|
+
return typeof Event !== 'undefined' ? new Event(type) : {
|
|
452
|
+
type
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Generate an HTML input form element and bind it to a signal.
|
|
458
|
+
*/
|
|
459
|
+
function generate(bind, el, param, view) {
|
|
460
|
+
const value = view.signal(param.signal);
|
|
461
|
+
const div = element('div', {
|
|
462
|
+
'class': BindClass
|
|
463
|
+
});
|
|
464
|
+
const wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));
|
|
465
|
+
wrapper.appendChild(element('span', {
|
|
466
|
+
'class': NameClass
|
|
467
|
+
}, param.name || param.signal));
|
|
468
|
+
el.appendChild(div);
|
|
469
|
+
let input = form;
|
|
470
|
+
switch (param.input) {
|
|
471
|
+
case 'checkbox':
|
|
472
|
+
input = checkbox;
|
|
473
|
+
break;
|
|
474
|
+
case 'select':
|
|
475
|
+
input = select;
|
|
476
|
+
break;
|
|
477
|
+
case 'radio':
|
|
478
|
+
input = radio;
|
|
479
|
+
break;
|
|
480
|
+
case 'range':
|
|
481
|
+
input = range;
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
input(bind, wrapper, param, value);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Generates an arbitrary input form element.
|
|
489
|
+
* The input type is controlled via user-provided parameters.
|
|
490
|
+
*/
|
|
491
|
+
function form(bind, el, param, value) {
|
|
492
|
+
const node = element('input');
|
|
493
|
+
for (const key in param) {
|
|
494
|
+
if (key !== 'signal' && key !== 'element') {
|
|
495
|
+
node.setAttribute(key === 'input' ? 'type' : key, param[key]);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
node.setAttribute('name', param.signal);
|
|
499
|
+
node.value = value;
|
|
500
|
+
el.appendChild(node);
|
|
501
|
+
node.addEventListener('input', () => bind.update(node.value));
|
|
502
|
+
bind.elements = [node];
|
|
503
|
+
bind.set = value => node.value = value;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Generates a checkbox input element.
|
|
508
|
+
*/
|
|
509
|
+
function checkbox(bind, el, param, value) {
|
|
510
|
+
const attr = {
|
|
511
|
+
type: 'checkbox',
|
|
512
|
+
name: param.signal
|
|
513
|
+
};
|
|
514
|
+
if (value) attr.checked = true;
|
|
515
|
+
const node = element('input', attr);
|
|
516
|
+
el.appendChild(node);
|
|
517
|
+
node.addEventListener('change', () => bind.update(node.checked));
|
|
518
|
+
bind.elements = [node];
|
|
519
|
+
bind.set = value => node.checked = !!value || null;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Generates a selection list input element.
|
|
524
|
+
*/
|
|
525
|
+
function select(bind, el, param, value) {
|
|
526
|
+
const node = element('select', {
|
|
527
|
+
name: param.signal
|
|
528
|
+
}),
|
|
529
|
+
labels = param.labels || [];
|
|
530
|
+
param.options.forEach((option, i) => {
|
|
531
|
+
const attr = {
|
|
532
|
+
value: option
|
|
533
|
+
};
|
|
534
|
+
if (valuesEqual(option, value)) attr.selected = true;
|
|
535
|
+
node.appendChild(element('option', attr, (labels[i] || option) + ''));
|
|
536
|
+
});
|
|
537
|
+
el.appendChild(node);
|
|
538
|
+
node.addEventListener('change', () => {
|
|
539
|
+
bind.update(param.options[node.selectedIndex]);
|
|
540
|
+
});
|
|
541
|
+
bind.elements = [node];
|
|
542
|
+
bind.set = value => {
|
|
543
|
+
for (let i = 0, n = param.options.length; i < n; ++i) {
|
|
544
|
+
if (valuesEqual(param.options[i], value)) {
|
|
545
|
+
node.selectedIndex = i;
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/**
|
|
553
|
+
* Generates a radio button group.
|
|
554
|
+
*/
|
|
555
|
+
function radio(bind, el, param, value) {
|
|
556
|
+
const group = element('span', {
|
|
557
|
+
'class': RadioClass
|
|
558
|
+
}),
|
|
559
|
+
labels = param.labels || [];
|
|
560
|
+
el.appendChild(group);
|
|
561
|
+
bind.elements = param.options.map((option, i) => {
|
|
562
|
+
const attr = {
|
|
563
|
+
type: 'radio',
|
|
564
|
+
name: param.signal,
|
|
565
|
+
value: option
|
|
566
|
+
};
|
|
567
|
+
if (valuesEqual(option, value)) attr.checked = true;
|
|
568
|
+
const input = element('input', attr);
|
|
569
|
+
input.addEventListener('change', () => bind.update(option));
|
|
570
|
+
const label = element('label', {}, (labels[i] || option) + '');
|
|
571
|
+
label.prepend(input);
|
|
572
|
+
group.appendChild(label);
|
|
573
|
+
return input;
|
|
574
|
+
});
|
|
575
|
+
bind.set = value => {
|
|
576
|
+
const nodes = bind.elements,
|
|
577
|
+
n = nodes.length;
|
|
578
|
+
for (let i = 0; i < n; ++i) {
|
|
579
|
+
if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Generates a slider input element.
|
|
586
|
+
*/
|
|
587
|
+
function range(bind, el, param, value) {
|
|
588
|
+
value = value !== undefined ? value : (+param.max + +param.min) / 2;
|
|
589
|
+
const max = param.max != null ? param.max : Math.max(100, +value) || 100,
|
|
590
|
+
min = param.min || Math.min(0, max, +value) || 0,
|
|
591
|
+
step = param.step || tickStep(min, max, 100);
|
|
592
|
+
const node = element('input', {
|
|
593
|
+
type: 'range',
|
|
594
|
+
name: param.signal,
|
|
595
|
+
min: min,
|
|
596
|
+
max: max,
|
|
597
|
+
step: step
|
|
598
|
+
});
|
|
599
|
+
node.value = value;
|
|
600
|
+
const span = element('span', {}, +value);
|
|
601
|
+
el.appendChild(node);
|
|
602
|
+
el.appendChild(span);
|
|
603
|
+
const update = () => {
|
|
604
|
+
span.textContent = node.value;
|
|
605
|
+
bind.update(+node.value);
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
// subscribe to both input and change
|
|
609
|
+
node.addEventListener('input', update);
|
|
610
|
+
node.addEventListener('change', update);
|
|
611
|
+
bind.elements = [node];
|
|
612
|
+
bind.set = value => {
|
|
613
|
+
node.value = value;
|
|
614
|
+
span.textContent = value;
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
function valuesEqual(a, b) {
|
|
618
|
+
return a === b || a + '' === b + '';
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
function initializeRenderer (view, r, el, constructor, scaleFactor, opt) {
|
|
622
|
+
r = r || new constructor(view.loader());
|
|
623
|
+
return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
function trap (view, fn) {
|
|
627
|
+
return !fn ? null : function () {
|
|
628
|
+
try {
|
|
629
|
+
fn.apply(this, arguments);
|
|
630
|
+
} catch (error) {
|
|
631
|
+
view.error(error);
|
|
632
|
+
}
|
|
633
|
+
};
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
function initializeHandler (view, prevHandler, el, constructor) {
|
|
637
|
+
// instantiate scenegraph handler
|
|
638
|
+
const handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view);
|
|
639
|
+
|
|
640
|
+
// transfer event handlers
|
|
641
|
+
if (prevHandler) {
|
|
642
|
+
prevHandler.handlers().forEach(h => {
|
|
643
|
+
handler.on(h.type, h.handler);
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
return handler;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
function initialize (el, elBind) {
|
|
650
|
+
const view = this,
|
|
651
|
+
type = view._renderType,
|
|
652
|
+
config = view._eventConfig.bind,
|
|
653
|
+
module = renderModule(type);
|
|
654
|
+
|
|
655
|
+
// containing dom element
|
|
656
|
+
el = view._el = el ? lookup(view, el, true) : null;
|
|
657
|
+
|
|
658
|
+
// initialize aria attributes
|
|
659
|
+
initializeAria(view);
|
|
660
|
+
|
|
661
|
+
// select appropriate renderer & handler
|
|
662
|
+
if (!module) view.error('Unrecognized renderer type: ' + type);
|
|
663
|
+
const Handler = module.handler || CanvasHandler,
|
|
664
|
+
Renderer = el ? module.renderer : module.headless;
|
|
665
|
+
|
|
666
|
+
// initialize renderer and input handler
|
|
667
|
+
view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);
|
|
668
|
+
view._handler = initializeHandler(view, view._handler, el, Handler);
|
|
669
|
+
view._redraw = true;
|
|
670
|
+
|
|
671
|
+
// initialize signal bindings
|
|
672
|
+
if (el && config !== 'none') {
|
|
673
|
+
elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {
|
|
674
|
+
'class': 'vega-bindings'
|
|
675
|
+
}));
|
|
676
|
+
view._bind.forEach(_ => {
|
|
677
|
+
if (_.param.element && config !== 'container') {
|
|
678
|
+
_.element = lookup(view, _.param.element, !!_.param.input);
|
|
679
|
+
}
|
|
680
|
+
});
|
|
681
|
+
view._bind.forEach(_ => {
|
|
682
|
+
bind(view, _.element || elBind, _);
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
return view;
|
|
686
|
+
}
|
|
687
|
+
function lookup(view, el, clear) {
|
|
688
|
+
if (typeof el === 'string') {
|
|
689
|
+
if (typeof document !== 'undefined') {
|
|
690
|
+
el = document.querySelector(el);
|
|
691
|
+
if (!el) {
|
|
692
|
+
view.error('Signal bind element not found: ' + el);
|
|
693
|
+
return null;
|
|
694
|
+
}
|
|
695
|
+
} else {
|
|
696
|
+
view.error('DOM document instance not found.');
|
|
697
|
+
return null;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
if (el && clear) {
|
|
701
|
+
try {
|
|
702
|
+
el.textContent = '';
|
|
703
|
+
} catch (e) {
|
|
704
|
+
el = null;
|
|
705
|
+
view.error(e);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
return el;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
const number = _ => +_ || 0;
|
|
712
|
+
const paddingObject = _ => ({
|
|
713
|
+
top: _,
|
|
714
|
+
bottom: _,
|
|
715
|
+
left: _,
|
|
716
|
+
right: _
|
|
717
|
+
});
|
|
718
|
+
function padding (_) {
|
|
719
|
+
return isObject(_) ? {
|
|
720
|
+
top: number(_.top),
|
|
721
|
+
bottom: number(_.bottom),
|
|
722
|
+
left: number(_.left),
|
|
723
|
+
right: number(_.right)
|
|
724
|
+
} : paddingObject(number(_));
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* Render the current scene in a headless fashion.
|
|
729
|
+
* This method is asynchronous, returning a Promise instance.
|
|
730
|
+
* @return {Promise} - A Promise that resolves to a renderer.
|
|
731
|
+
*/
|
|
732
|
+
async function renderHeadless (view, type, scaleFactor, opt) {
|
|
733
|
+
const module = renderModule(type),
|
|
734
|
+
ctr = module && module.headless;
|
|
735
|
+
if (!ctr) error('Unrecognized renderer type: ' + type);
|
|
736
|
+
await view.runAsync();
|
|
737
|
+
return initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* Produce an image URL for the visualization. Depending on the type
|
|
742
|
+
* parameter, the generated URL contains data for either a PNG or SVG image.
|
|
743
|
+
* The URL can be used (for example) to download images of the visualization.
|
|
744
|
+
* This method is asynchronous, returning a Promise instance.
|
|
745
|
+
* @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.
|
|
746
|
+
* The 'canvas' and 'png' types are synonyms for a PNG image.
|
|
747
|
+
* @return {Promise} - A promise that resolves to an image URL.
|
|
748
|
+
*/
|
|
749
|
+
async function renderToImageURL (type, scaleFactor) {
|
|
750
|
+
if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {
|
|
751
|
+
error('Unrecognized image type: ' + type);
|
|
752
|
+
}
|
|
753
|
+
const r = await renderHeadless(this, type, scaleFactor);
|
|
754
|
+
return type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png');
|
|
755
|
+
}
|
|
756
|
+
function toBlobURL(data, mime) {
|
|
757
|
+
const blob = new Blob([data], {
|
|
758
|
+
type: mime
|
|
759
|
+
});
|
|
760
|
+
return window.URL.createObjectURL(blob);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* Produce a Canvas instance containing a rendered visualization.
|
|
765
|
+
* This method is asynchronous, returning a Promise instance.
|
|
766
|
+
* @return {Promise} - A promise that resolves to a Canvas instance.
|
|
767
|
+
*/
|
|
768
|
+
async function renderToCanvas (scaleFactor, opt) {
|
|
769
|
+
const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);
|
|
770
|
+
return r.canvas();
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* Produce a rendered SVG string of the visualization.
|
|
775
|
+
* This method is asynchronous, returning a Promise instance.
|
|
776
|
+
* @return {Promise} - A promise that resolves to an SVG string.
|
|
777
|
+
*/
|
|
778
|
+
async function renderToSVG (scaleFactor) {
|
|
779
|
+
const r = await renderHeadless(this, RenderType.SVG, scaleFactor);
|
|
780
|
+
return r.svg();
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
function runtime (view, spec, expr) {
|
|
784
|
+
return context(view, transforms, functionContext, expr).parse(spec);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
function scale(name) {
|
|
788
|
+
var scales = this._runtime.scales;
|
|
789
|
+
if (!has(scales, name)) {
|
|
790
|
+
error('Unrecognized scale or projection: ' + name);
|
|
791
|
+
}
|
|
792
|
+
return scales[name].value;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
var Width = 'width',
|
|
796
|
+
Height = 'height',
|
|
797
|
+
Padding = 'padding',
|
|
798
|
+
Skip = {
|
|
799
|
+
skip: true
|
|
800
|
+
};
|
|
801
|
+
function viewWidth(view, width) {
|
|
802
|
+
var a = view.autosize(),
|
|
803
|
+
p = view.padding();
|
|
804
|
+
return width - (a && a.contains === Padding ? p.left + p.right : 0);
|
|
805
|
+
}
|
|
806
|
+
function viewHeight(view, height) {
|
|
807
|
+
var a = view.autosize(),
|
|
808
|
+
p = view.padding();
|
|
809
|
+
return height - (a && a.contains === Padding ? p.top + p.bottom : 0);
|
|
810
|
+
}
|
|
811
|
+
function initializeResize(view) {
|
|
812
|
+
var s = view._signals,
|
|
813
|
+
w = s[Width],
|
|
814
|
+
h = s[Height],
|
|
815
|
+
p = s[Padding];
|
|
816
|
+
function resetSize() {
|
|
817
|
+
view._autosize = view._resize = 1;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
// respond to width signal
|
|
821
|
+
view._resizeWidth = view.add(null, _ => {
|
|
822
|
+
view._width = _.size;
|
|
823
|
+
view._viewWidth = viewWidth(view, _.size);
|
|
824
|
+
resetSize();
|
|
825
|
+
}, {
|
|
826
|
+
size: w
|
|
827
|
+
});
|
|
828
|
+
|
|
829
|
+
// respond to height signal
|
|
830
|
+
view._resizeHeight = view.add(null, _ => {
|
|
831
|
+
view._height = _.size;
|
|
832
|
+
view._viewHeight = viewHeight(view, _.size);
|
|
833
|
+
resetSize();
|
|
834
|
+
}, {
|
|
835
|
+
size: h
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
// respond to padding signal
|
|
839
|
+
const resizePadding = view.add(null, resetSize, {
|
|
840
|
+
pad: p
|
|
841
|
+
});
|
|
842
|
+
|
|
843
|
+
// set rank to run immediately after source signal
|
|
844
|
+
view._resizeWidth.rank = w.rank + 1;
|
|
845
|
+
view._resizeHeight.rank = h.rank + 1;
|
|
846
|
+
resizePadding.rank = p.rank + 1;
|
|
847
|
+
}
|
|
848
|
+
function resizeView(viewWidth, viewHeight, width, height, origin, auto) {
|
|
849
|
+
this.runAfter(view => {
|
|
850
|
+
let rerun = 0;
|
|
851
|
+
|
|
852
|
+
// reset autosize flag
|
|
853
|
+
view._autosize = 0;
|
|
854
|
+
|
|
855
|
+
// width value changed: update signal, skip resize op
|
|
856
|
+
if (view.width() !== width) {
|
|
857
|
+
rerun = 1;
|
|
858
|
+
view.signal(Width, width, Skip); // set width, skip update calc
|
|
859
|
+
view._resizeWidth.skip(true); // skip width resize handler
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
// height value changed: update signal, skip resize op
|
|
863
|
+
if (view.height() !== height) {
|
|
864
|
+
rerun = 1;
|
|
865
|
+
view.signal(Height, height, Skip); // set height, skip update calc
|
|
866
|
+
view._resizeHeight.skip(true); // skip height resize handler
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
// view width changed: update view property, set resize flag
|
|
870
|
+
if (view._viewWidth !== viewWidth) {
|
|
871
|
+
view._resize = 1;
|
|
872
|
+
view._viewWidth = viewWidth;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
// view height changed: update view property, set resize flag
|
|
876
|
+
if (view._viewHeight !== viewHeight) {
|
|
877
|
+
view._resize = 1;
|
|
878
|
+
view._viewHeight = viewHeight;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
// origin changed: update view property, set resize flag
|
|
882
|
+
if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {
|
|
883
|
+
view._resize = 1;
|
|
884
|
+
view._origin = origin;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
// run dataflow on width/height signal change
|
|
888
|
+
if (rerun) view.run('enter');
|
|
889
|
+
if (auto) view.runAfter(v => v.resize());
|
|
890
|
+
}, false, 1);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* Get the current view state, consisting of signal values and/or data sets.
|
|
895
|
+
* @param {object} [options] - Options flags indicating which state to export.
|
|
896
|
+
* If unspecified, all signals and data sets will be exported.
|
|
897
|
+
* @param {function(string, Operator):boolean} [options.signals] - Optional
|
|
898
|
+
* predicate function for testing if a signal should be included in the
|
|
899
|
+
* exported state. If unspecified, all signals will be included, except for
|
|
900
|
+
* those named 'parent' or those which refer to a Transform value.
|
|
901
|
+
* @param {function(string, object):boolean} [options.data] - Optional
|
|
902
|
+
* predicate function for testing if a data set's input should be included
|
|
903
|
+
* in the exported state. If unspecified, all data sets that have been
|
|
904
|
+
* explicitly modified will be included.
|
|
905
|
+
* @param {boolean} [options.recurse=true] - Flag indicating if the exported
|
|
906
|
+
* state should recursively include state from group mark sub-contexts.
|
|
907
|
+
* @return {object} - An object containing the exported state values.
|
|
908
|
+
*/
|
|
909
|
+
function getState(options) {
|
|
910
|
+
return this._runtime.getState(options || {
|
|
911
|
+
data: dataTest,
|
|
912
|
+
signals: signalTest,
|
|
913
|
+
recurse: true
|
|
914
|
+
});
|
|
915
|
+
}
|
|
916
|
+
function dataTest(name, data) {
|
|
917
|
+
return data.modified && isArray(data.input.value) && !name.startsWith('_:vega:_');
|
|
918
|
+
}
|
|
919
|
+
function signalTest(name, op) {
|
|
920
|
+
return !(name === 'parent' || op instanceof transforms.proxy);
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
/**
|
|
924
|
+
* Sets the current view state and updates the view by invoking run.
|
|
925
|
+
* @param {object} state - A state object containing signal and/or
|
|
926
|
+
* data set values, following the format used by the getState method.
|
|
927
|
+
* @return {View} - This view instance.
|
|
928
|
+
*/
|
|
929
|
+
function setState(state) {
|
|
930
|
+
this.runAsync(null, v => {
|
|
931
|
+
v._trigger = false;
|
|
932
|
+
v._runtime.setState(state);
|
|
933
|
+
}, v => {
|
|
934
|
+
v._trigger = true;
|
|
935
|
+
});
|
|
936
|
+
return this;
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
function timer (callback, delay) {
|
|
940
|
+
function tick(elapsed) {
|
|
941
|
+
callback({
|
|
942
|
+
timestamp: Date.now(),
|
|
943
|
+
elapsed: elapsed
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
this._timers.push(interval(tick, delay));
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
function defaultTooltip (handler, event, item, value) {
|
|
950
|
+
const el = handler.element();
|
|
951
|
+
if (el) el.setAttribute('title', formatTooltip(value));
|
|
952
|
+
}
|
|
953
|
+
function formatTooltip(value) {
|
|
954
|
+
return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate(value) ? formatObject(value) : value + '';
|
|
955
|
+
}
|
|
956
|
+
function formatObject(obj) {
|
|
957
|
+
return Object.keys(obj).map(key => {
|
|
958
|
+
const v = obj[key];
|
|
959
|
+
return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));
|
|
960
|
+
}).join('\n');
|
|
961
|
+
}
|
|
962
|
+
function formatArray(value) {
|
|
963
|
+
return '[' + value.map(formatValue).join(', ') + ']';
|
|
964
|
+
}
|
|
965
|
+
function formatValue(value) {
|
|
966
|
+
return isArray(value) ? '[\u2026]' : isObject(value) && !isDate(value) ? '{\u2026}' : value;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
function watchPixelRatio () {
|
|
970
|
+
// based on https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#monitoring_screen_resolution_or_zoom_level_changes
|
|
971
|
+
if (this.renderer() === 'canvas' && this._renderer._canvas) {
|
|
972
|
+
let remove = null;
|
|
973
|
+
const updatePixelRatio = () => {
|
|
974
|
+
if (remove != null) {
|
|
975
|
+
remove();
|
|
976
|
+
}
|
|
977
|
+
const media = matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);
|
|
978
|
+
media.addEventListener('change', updatePixelRatio);
|
|
979
|
+
remove = () => {
|
|
980
|
+
media.removeEventListener('change', updatePixelRatio);
|
|
981
|
+
};
|
|
982
|
+
this._renderer._canvas.getContext('2d').pixelRatio = window.devicePixelRatio || 1;
|
|
983
|
+
this._redraw = true;
|
|
984
|
+
this._resize = 1;
|
|
985
|
+
this.resize().runAsync();
|
|
986
|
+
};
|
|
987
|
+
updatePixelRatio();
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
/**
|
|
992
|
+
* Create a new View instance from a Vega dataflow runtime specification.
|
|
993
|
+
* The generated View will not immediately be ready for display. Callers
|
|
994
|
+
* should also invoke the initialize method (e.g., to set the parent
|
|
995
|
+
* DOM element in browser-based deployment) and then invoke the run
|
|
996
|
+
* method to evaluate the dataflow graph. Rendering will automatically
|
|
997
|
+
* be performed upon dataflow runs.
|
|
998
|
+
* @constructor
|
|
999
|
+
* @param {object} spec - The Vega dataflow runtime specification.
|
|
1000
|
+
*/
|
|
1001
|
+
function View(spec, options) {
|
|
1002
|
+
const view = this;
|
|
1003
|
+
options = options || {};
|
|
1004
|
+
Dataflow.call(view);
|
|
1005
|
+
if (options.loader) view.loader(options.loader);
|
|
1006
|
+
if (options.logger) view.logger(options.logger);
|
|
1007
|
+
if (options.logLevel != null) view.logLevel(options.logLevel);
|
|
1008
|
+
if (options.locale || spec.locale) {
|
|
1009
|
+
const loc = extend({}, spec.locale, options.locale);
|
|
1010
|
+
view.locale(locale(loc.number, loc.time));
|
|
1011
|
+
}
|
|
1012
|
+
view._el = null;
|
|
1013
|
+
view._elBind = null;
|
|
1014
|
+
view._renderType = options.renderer || RenderType.Canvas;
|
|
1015
|
+
view._scenegraph = new Scenegraph();
|
|
1016
|
+
const root = view._scenegraph.root;
|
|
1017
|
+
|
|
1018
|
+
// initialize renderer, handler and event management
|
|
1019
|
+
view._renderer = null;
|
|
1020
|
+
view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;
|
|
1021
|
+
view._handler = new CanvasHandler().scene(root);
|
|
1022
|
+
view._globalCursor = false;
|
|
1023
|
+
view._preventDefault = false;
|
|
1024
|
+
view._timers = [];
|
|
1025
|
+
view._eventListeners = [];
|
|
1026
|
+
view._resizeListeners = [];
|
|
1027
|
+
|
|
1028
|
+
// initialize event configuration
|
|
1029
|
+
view._eventConfig = initializeEventConfig(spec.eventConfig);
|
|
1030
|
+
view.globalCursor(view._eventConfig.globalCursor);
|
|
1031
|
+
|
|
1032
|
+
// initialize dataflow graph
|
|
1033
|
+
const ctx = runtime(view, spec, options.expr);
|
|
1034
|
+
view._runtime = ctx;
|
|
1035
|
+
view._signals = ctx.signals;
|
|
1036
|
+
view._bind = (spec.bindings || []).map(_ => ({
|
|
1037
|
+
state: null,
|
|
1038
|
+
param: extend({}, _)
|
|
1039
|
+
}));
|
|
1040
|
+
|
|
1041
|
+
// initialize scenegraph
|
|
1042
|
+
if (ctx.root) ctx.root.set(root);
|
|
1043
|
+
root.source = ctx.data.root.input;
|
|
1044
|
+
view.pulse(ctx.data.root.input, view.changeset().insert(root.items));
|
|
1045
|
+
|
|
1046
|
+
// initialize view size
|
|
1047
|
+
view._width = view.width();
|
|
1048
|
+
view._height = view.height();
|
|
1049
|
+
view._viewWidth = viewWidth(view, view._width);
|
|
1050
|
+
view._viewHeight = viewHeight(view, view._height);
|
|
1051
|
+
view._origin = [0, 0];
|
|
1052
|
+
view._resize = 0;
|
|
1053
|
+
view._autosize = 1;
|
|
1054
|
+
initializeResize(view);
|
|
1055
|
+
|
|
1056
|
+
// initialize background color
|
|
1057
|
+
background(view);
|
|
1058
|
+
|
|
1059
|
+
// initialize cursor
|
|
1060
|
+
cursor(view);
|
|
1061
|
+
|
|
1062
|
+
// initialize view description
|
|
1063
|
+
view.description(spec.description);
|
|
1064
|
+
|
|
1065
|
+
// initialize hover proessing, if requested
|
|
1066
|
+
if (options.hover) view.hover();
|
|
1067
|
+
|
|
1068
|
+
// initialize DOM container(s) and renderer
|
|
1069
|
+
if (options.container) view.initialize(options.container, options.bind);
|
|
1070
|
+
if (options.watchPixelRatio) view._watchPixelRatio();
|
|
1071
|
+
}
|
|
1072
|
+
function lookupSignal(view, name) {
|
|
1073
|
+
return has(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + $(name));
|
|
1074
|
+
}
|
|
1075
|
+
function findOperatorHandler(op, handler) {
|
|
1076
|
+
const h = (op._targets || []).filter(op => op._update && op._update.handler === handler);
|
|
1077
|
+
return h.length ? h[0] : null;
|
|
1078
|
+
}
|
|
1079
|
+
function addOperatorListener(view, name, op, handler) {
|
|
1080
|
+
let h = findOperatorHandler(op, handler);
|
|
1081
|
+
if (!h) {
|
|
1082
|
+
h = trap(view, () => handler(name, op.value));
|
|
1083
|
+
h.handler = handler;
|
|
1084
|
+
view.on(op, null, h);
|
|
1085
|
+
}
|
|
1086
|
+
return view;
|
|
1087
|
+
}
|
|
1088
|
+
function removeOperatorListener(view, op, handler) {
|
|
1089
|
+
const h = findOperatorHandler(op, handler);
|
|
1090
|
+
if (h) op._targets.remove(h);
|
|
1091
|
+
return view;
|
|
1092
|
+
}
|
|
1093
|
+
inherits(View, Dataflow, {
|
|
1094
|
+
// -- DATAFLOW / RENDERING ----
|
|
1095
|
+
|
|
1096
|
+
async evaluate(encode, prerun, postrun) {
|
|
1097
|
+
// evaluate dataflow and prerun
|
|
1098
|
+
await Dataflow.prototype.evaluate.call(this, encode, prerun);
|
|
1099
|
+
|
|
1100
|
+
// render as needed
|
|
1101
|
+
if (this._redraw || this._resize) {
|
|
1102
|
+
try {
|
|
1103
|
+
if (this._renderer) {
|
|
1104
|
+
if (this._resize) {
|
|
1105
|
+
this._resize = 0;
|
|
1106
|
+
resizeRenderer(this);
|
|
1107
|
+
}
|
|
1108
|
+
await this._renderer.renderAsync(this._scenegraph.root);
|
|
1109
|
+
}
|
|
1110
|
+
this._redraw = false;
|
|
1111
|
+
} catch (e) {
|
|
1112
|
+
this.error(e);
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
// evaluate postrun
|
|
1117
|
+
if (postrun) asyncCallback(this, postrun);
|
|
1118
|
+
return this;
|
|
1119
|
+
},
|
|
1120
|
+
dirty(item) {
|
|
1121
|
+
this._redraw = true;
|
|
1122
|
+
this._renderer && this._renderer.dirty(item);
|
|
1123
|
+
},
|
|
1124
|
+
// -- GET / SET ----
|
|
1125
|
+
|
|
1126
|
+
description(text) {
|
|
1127
|
+
if (arguments.length) {
|
|
1128
|
+
const desc = text != null ? text + '' : null;
|
|
1129
|
+
if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);
|
|
1130
|
+
return this;
|
|
1131
|
+
}
|
|
1132
|
+
return this._desc;
|
|
1133
|
+
},
|
|
1134
|
+
container() {
|
|
1135
|
+
return this._el;
|
|
1136
|
+
},
|
|
1137
|
+
scenegraph() {
|
|
1138
|
+
return this._scenegraph;
|
|
1139
|
+
},
|
|
1140
|
+
origin() {
|
|
1141
|
+
return this._origin.slice();
|
|
1142
|
+
},
|
|
1143
|
+
signal(name, value, options) {
|
|
1144
|
+
const op = lookupSignal(this, name);
|
|
1145
|
+
return arguments.length === 1 ? op.value : this.update(op, value, options);
|
|
1146
|
+
},
|
|
1147
|
+
width(_) {
|
|
1148
|
+
return arguments.length ? this.signal('width', _) : this.signal('width');
|
|
1149
|
+
},
|
|
1150
|
+
height(_) {
|
|
1151
|
+
return arguments.length ? this.signal('height', _) : this.signal('height');
|
|
1152
|
+
},
|
|
1153
|
+
padding(_) {
|
|
1154
|
+
return arguments.length ? this.signal('padding', padding(_)) : padding(this.signal('padding'));
|
|
1155
|
+
},
|
|
1156
|
+
autosize(_) {
|
|
1157
|
+
return arguments.length ? this.signal('autosize', _) : this.signal('autosize');
|
|
1158
|
+
},
|
|
1159
|
+
background(_) {
|
|
1160
|
+
return arguments.length ? this.signal('background', _) : this.signal('background');
|
|
1161
|
+
},
|
|
1162
|
+
renderer(type) {
|
|
1163
|
+
if (!arguments.length) return this._renderType;
|
|
1164
|
+
if (!renderModule(type)) error('Unrecognized renderer type: ' + type);
|
|
1165
|
+
if (type !== this._renderType) {
|
|
1166
|
+
this._renderType = type;
|
|
1167
|
+
this._resetRenderer();
|
|
1168
|
+
}
|
|
1169
|
+
return this;
|
|
1170
|
+
},
|
|
1171
|
+
tooltip(handler) {
|
|
1172
|
+
if (!arguments.length) return this._tooltip;
|
|
1173
|
+
if (handler !== this._tooltip) {
|
|
1174
|
+
this._tooltip = handler;
|
|
1175
|
+
this._resetRenderer();
|
|
1176
|
+
}
|
|
1177
|
+
return this;
|
|
1178
|
+
},
|
|
1179
|
+
loader(loader) {
|
|
1180
|
+
if (!arguments.length) return this._loader;
|
|
1181
|
+
if (loader !== this._loader) {
|
|
1182
|
+
Dataflow.prototype.loader.call(this, loader);
|
|
1183
|
+
this._resetRenderer();
|
|
1184
|
+
}
|
|
1185
|
+
return this;
|
|
1186
|
+
},
|
|
1187
|
+
resize() {
|
|
1188
|
+
// set flag to perform autosize
|
|
1189
|
+
this._autosize = 1;
|
|
1190
|
+
// touch autosize signal to ensure top-level ViewLayout runs
|
|
1191
|
+
return this.touch(lookupSignal(this, 'autosize'));
|
|
1192
|
+
},
|
|
1193
|
+
_resetRenderer() {
|
|
1194
|
+
if (this._renderer) {
|
|
1195
|
+
this._renderer = null;
|
|
1196
|
+
this.initialize(this._el, this._elBind);
|
|
1197
|
+
}
|
|
1198
|
+
},
|
|
1199
|
+
// -- SIZING ----
|
|
1200
|
+
_resizeView: resizeView,
|
|
1201
|
+
// -- EVENT HANDLING ----
|
|
1202
|
+
|
|
1203
|
+
addEventListener(type, handler, options) {
|
|
1204
|
+
let callback = handler;
|
|
1205
|
+
if (!(options && options.trap === false)) {
|
|
1206
|
+
// wrap callback in error handler
|
|
1207
|
+
callback = trap(this, handler);
|
|
1208
|
+
callback.raw = handler;
|
|
1209
|
+
}
|
|
1210
|
+
this._handler.on(type, callback);
|
|
1211
|
+
return this;
|
|
1212
|
+
},
|
|
1213
|
+
removeEventListener(type, handler) {
|
|
1214
|
+
var handlers = this._handler.handlers(type),
|
|
1215
|
+
i = handlers.length,
|
|
1216
|
+
h,
|
|
1217
|
+
t;
|
|
1218
|
+
|
|
1219
|
+
// search registered handlers, remove if match found
|
|
1220
|
+
while (--i >= 0) {
|
|
1221
|
+
t = handlers[i].type;
|
|
1222
|
+
h = handlers[i].handler;
|
|
1223
|
+
if (type === t && (handler === h || handler === h.raw)) {
|
|
1224
|
+
this._handler.off(t, h);
|
|
1225
|
+
break;
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
return this;
|
|
1229
|
+
},
|
|
1230
|
+
addResizeListener(handler) {
|
|
1231
|
+
const l = this._resizeListeners;
|
|
1232
|
+
if (!l.includes(handler)) {
|
|
1233
|
+
// add handler if it isn't already registered
|
|
1234
|
+
// note: error trapping handled elsewhere, so
|
|
1235
|
+
// no need to wrap handlers here
|
|
1236
|
+
l.push(handler);
|
|
1237
|
+
}
|
|
1238
|
+
return this;
|
|
1239
|
+
},
|
|
1240
|
+
removeResizeListener(handler) {
|
|
1241
|
+
var l = this._resizeListeners,
|
|
1242
|
+
i = l.indexOf(handler);
|
|
1243
|
+
if (i >= 0) {
|
|
1244
|
+
l.splice(i, 1);
|
|
1245
|
+
}
|
|
1246
|
+
return this;
|
|
1247
|
+
},
|
|
1248
|
+
addSignalListener(name, handler) {
|
|
1249
|
+
return addOperatorListener(this, name, lookupSignal(this, name), handler);
|
|
1250
|
+
},
|
|
1251
|
+
removeSignalListener(name, handler) {
|
|
1252
|
+
return removeOperatorListener(this, lookupSignal(this, name), handler);
|
|
1253
|
+
},
|
|
1254
|
+
addDataListener(name, handler) {
|
|
1255
|
+
return addOperatorListener(this, name, dataref(this, name).values, handler);
|
|
1256
|
+
},
|
|
1257
|
+
removeDataListener(name, handler) {
|
|
1258
|
+
return removeOperatorListener(this, dataref(this, name).values, handler);
|
|
1259
|
+
},
|
|
1260
|
+
globalCursor(_) {
|
|
1261
|
+
if (arguments.length) {
|
|
1262
|
+
if (this._globalCursor !== !!_) {
|
|
1263
|
+
const prev = setCursor(this, null); // clear previous cursor
|
|
1264
|
+
this._globalCursor = !!_;
|
|
1265
|
+
if (prev) setCursor(this, prev); // swap cursor
|
|
1266
|
+
}
|
|
1267
|
+
return this;
|
|
1268
|
+
} else {
|
|
1269
|
+
return this._globalCursor;
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
preventDefault(_) {
|
|
1273
|
+
if (arguments.length) {
|
|
1274
|
+
this._preventDefault = _;
|
|
1275
|
+
return this;
|
|
1276
|
+
} else {
|
|
1277
|
+
return this._preventDefault;
|
|
1278
|
+
}
|
|
1279
|
+
},
|
|
1280
|
+
timer,
|
|
1281
|
+
events,
|
|
1282
|
+
finalize,
|
|
1283
|
+
hover,
|
|
1284
|
+
// -- DATA ----
|
|
1285
|
+
data,
|
|
1286
|
+
change,
|
|
1287
|
+
insert,
|
|
1288
|
+
remove,
|
|
1289
|
+
// -- SCALES --
|
|
1290
|
+
scale,
|
|
1291
|
+
// -- INITIALIZATION ----
|
|
1292
|
+
initialize,
|
|
1293
|
+
// -- HEADLESS RENDERING ----
|
|
1294
|
+
toImageURL: renderToImageURL,
|
|
1295
|
+
toCanvas: renderToCanvas,
|
|
1296
|
+
toSVG: renderToSVG,
|
|
1297
|
+
// -- SAVE / RESTORE STATE ----
|
|
1298
|
+
getState,
|
|
1299
|
+
setState,
|
|
1300
|
+
// RE-RENDER ON ZOOM
|
|
1301
|
+
_watchPixelRatio: watchPixelRatio
|
|
1302
|
+
});
|
|
1303
|
+
|
|
1304
|
+
export { View };
|